{
    "contractName": "IMetaColony",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "txHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "metadata",
                    "type": "string"
                }
            ],
            "name": "Annotation",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "skillId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "amount",
                    "type": "int256"
                }
            ],
            "name": "ArbitraryReputationUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "success",
                    "type": "bool"
                }
            ],
            "name": "ArbitraryTransaction",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address[]",
                    "name": "users",
                    "type": "address[]"
                },
                {
                    "indexed": false,
                    "internalType": "int256[]",
                    "name": "amounts",
                    "type": "int256[]"
                }
            ],
            "name": "ColonyBootstrapped",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "fee",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "payoutRemainder",
                    "type": "uint256"
                }
            ],
            "name": "ColonyFundsClaimed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "fromPot",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "toPot",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "ColonyFundsMovedBetweenFundingPots",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "colonyNetwork",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "ColonyInitialised",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "metadata",
                    "type": "string"
                }
            ],
            "name": "ColonyMetadata",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "metadata",
                    "type": "string"
                }
            ],
            "name": "ColonyMetadataDelta",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "rewardInverse",
                    "type": "uint256"
                }
            ],
            "name": "ColonyRewardInverseSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "domainId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint8",
                    "name": "role",
                    "type": "uint8"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "setTo",
                    "type": "bool"
                }
            ],
            "name": "ColonyRoleSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "oldVersion",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "newVersion",
                    "type": "uint256"
                }
            ],
            "name": "ColonyUpgraded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "domainId",
                    "type": "uint256"
                }
            ],
            "name": "DomainAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "domainId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "deprecated",
                    "type": "bool"
                }
            ],
            "name": "DomainDeprecated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "domainId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "metadata",
                    "type": "string"
                }
            ],
            "name": "DomainMetadata",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                }
            ],
            "name": "ExpenditureAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                }
            ],
            "name": "ExpenditureCancelled",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "slot",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "claimDelay",
                    "type": "uint256"
                }
            ],
            "name": "ExpenditureClaimDelaySet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                }
            ],
            "name": "ExpenditureFinalized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "globalClaimDelay",
                    "type": "uint256"
                }
            ],
            "name": "ExpenditureGlobalClaimDelaySet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                }
            ],
            "name": "ExpenditureLocked",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "metadata",
                    "type": "string"
                }
            ],
            "name": "ExpenditureMetadataSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "slot",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "payoutModifier",
                    "type": "int256"
                }
            ],
            "name": "ExpenditurePayoutModifierSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "slot",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "ExpenditurePayoutSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "slot",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                }
            ],
            "name": "ExpenditureRecipientSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "slot",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "skillId",
                    "type": "uint256"
                }
            ],
            "name": "ExpenditureSkillSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "storageSlot",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bool[]",
                    "name": "mask",
                    "type": "bool[]"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32[]",
                    "name": "keys",
                    "type": "bytes32[]"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "value",
                    "type": "bytes32"
                }
            ],
            "name": "ExpenditureStateChanged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "ExpenditureTransferred",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "fundingPotId",
                    "type": "uint256"
                }
            ],
            "name": "FundingPotAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "localSkillId",
                    "type": "uint256"
                }
            ],
            "name": "LocalSkillAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "localSkillId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "deprecated",
                    "type": "bool"
                }
            ],
            "name": "LocalSkillDeprecated",
            "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": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "paymentId",
                    "type": "uint256"
                }
            ],
            "name": "PaymentAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "paymentId",
                    "type": "uint256"
                }
            ],
            "name": "PaymentFinalized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "paymentId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "PaymentPayoutSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "paymentId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                }
            ],
            "name": "PaymentRecipientSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "paymentId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "skillId",
                    "type": "uint256"
                }
            ],
            "name": "PaymentSkillSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "fundingPotId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "PayoutClaimed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "slot",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "tokenPayout",
                    "type": "uint256"
                }
            ],
            "name": "PayoutClaimed",
            "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": "uint256",
                    "name": "rewardPayoutId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "fee",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "rewardRemainder",
                    "type": "uint256"
                }
            ],
            "name": "RewardPayoutClaimed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "rewardPayoutId",
                    "type": "uint256"
                }
            ],
            "name": "RewardPayoutCycleEnded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "rewardPayoutId",
                    "type": "uint256"
                }
            ],
            "name": "RewardPayoutCycleStarted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                }
            ],
            "name": "TaskAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "specificationHash",
                    "type": "bytes32"
                }
            ],
            "name": "TaskBriefSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                }
            ],
            "name": "TaskCanceled",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address[]",
                    "name": "reviewerAddresses",
                    "type": "address[]"
                }
            ],
            "name": "TaskChangedViaSignatures",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                }
            ],
            "name": "TaskCompleted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "deliverableHash",
                    "type": "bytes32"
                }
            ],
            "name": "TaskDeliverableSubmitted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "dueDate",
                    "type": "uint256"
                }
            ],
            "name": "TaskDueDateSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                }
            ],
            "name": "TaskFinalized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "enum ColonyDataTypes.TaskRole",
                    "name": "role",
                    "type": "uint8"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "TaskPayoutSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "enum ColonyDataTypes.TaskRole",
                    "name": "role",
                    "type": "uint8"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                }
            ],
            "name": "TaskRoleUserSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "skillId",
                    "type": "uint256"
                }
            ],
            "name": "TaskSkillSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "taskId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "enum ColonyDataTypes.TaskRole",
                    "name": "role",
                    "type": "uint8"
                },
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "rating",
                    "type": "uint8"
                }
            ],
            "name": "TaskWorkRatingRevealed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                }
            ],
            "name": "TokenUnlocked",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "TokensBurned",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "agent",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "who",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "TokensMinted",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_parentDomainId",
                    "type": "uint256"
                }
            ],
            "name": "addDomain",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_parentDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "_metadata",
                    "type": "string"
                }
            ],
            "name": "addDomain",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "addLocalSkill",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_txHash",
                    "type": "bytes32"
                },
                {
                    "internalType": "string",
                    "name": "_metadata",
                    "type": "string"
                }
            ],
            "name": "annotateTransaction",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "approveExitRecovery",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_approvee",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "approveStake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "authority",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "colonyAuthority",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "_users",
                    "type": "address[]"
                },
                {
                    "internalType": "int256[]",
                    "name": "_amount",
                    "type": "int256[]"
                }
            ],
            "name": "bootstrapColony",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "burnTokens",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "cancelExpenditure",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                }
            ],
            "name": "checkNotAdditionalProtectedVariable",
            "outputs": [],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "claimColonyFunds",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "claimExpenditurePayout",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_payoutId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[7]",
                    "name": "_squareRoots",
                    "type": "uint256[7]"
                },
                {
                    "internalType": "bytes",
                    "name": "key",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "value",
                    "type": "bytes"
                },
                {
                    "internalType": "uint256",
                    "name": "branchMask",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "siblings",
                    "type": "bytes32[]"
                }
            ],
            "name": "claimRewardPayout",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "deobligateStake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "_deprecated",
                    "type": "bool"
                }
            ],
            "name": "deprecateDomain",
            "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": "uint256",
                    "name": "localSkillId",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "deprecated",
                    "type": "bool"
                }
            ],
            "name": "deprecateLocalSkill",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_metadata",
                    "type": "string"
                }
            ],
            "name": "editColony",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_metadataDelta",
                    "type": "string"
                }
            ],
            "name": "editColonyByDelta",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "_metadata",
                    "type": "string"
                }
            ],
            "name": "editDomain",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "int256",
                    "name": "_amount",
                    "type": "int256"
                }
            ],
            "name": "emitDomainReputationPenalty",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "int256",
                    "name": "_amount",
                    "type": "int256"
                }
            ],
            "name": "emitDomainReputationReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "int256",
                    "name": "_amount",
                    "type": "int256"
                }
            ],
            "name": "emitSkillReputationPenalty",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "int256",
                    "name": "_amount",
                    "type": "int256"
                }
            ],
            "name": "emitSkillReputationReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "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": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "finalizeExpenditure",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_payoutId",
                    "type": "uint256"
                }
            ],
            "name": "finalizeRewardPayout",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "finishUpgrade",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_obligator",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                }
            ],
            "name": "getApproval",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "approval",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "_sig",
                    "type": "bytes4"
                }
            ],
            "name": "getCapabilityRoles",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "roles",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getColonyNetwork",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "colonyNetwork",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getDomain",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "skillId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "fundingPotId",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct ColonyDataTypes.Domain",
                    "name": "domain",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getDomainCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_fundingPotId",
                    "type": "uint256"
                }
            ],
            "name": "getDomainFromFundingPot",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "domainId",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getExpenditure",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "enum ColonyDataTypes.ExpenditureStatus",
                            "name": "status",
                            "type": "uint8"
                        },
                        {
                            "internalType": "address",
                            "name": "owner",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "fundingPotId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "domainId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "finalizedTimestamp",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "globalClaimDelay",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct ColonyDataTypes.Expenditure",
                    "name": "expenditure",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getExpenditureCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                }
            ],
            "name": "getExpenditureSlot",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address payable",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "claimDelay",
                            "type": "uint256"
                        },
                        {
                            "internalType": "int256",
                            "name": "payoutModifier",
                            "type": "int256"
                        },
                        {
                            "internalType": "uint256[]",
                            "name": "skills",
                            "type": "uint256[]"
                        }
                    ],
                    "internalType": "struct ColonyDataTypes.ExpenditureSlot",
                    "name": "expenditureSlot",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "getExpenditureSlotPayout",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getFundingPot",
            "outputs": [
                {
                    "internalType": "enum ColonyDataTypes.FundingPotAssociatedType",
                    "name": "associatedType",
                    "type": "uint8"
                },
                {
                    "internalType": "uint256",
                    "name": "associatedTypeId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "payoutsWeCannotMake",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_potId",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "getFundingPotBalance",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "balance",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getFundingPotCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_potId",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "getFundingPotPayout",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payout",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "userAddress",
                    "type": "address"
                }
            ],
            "name": "getMetatransactionNonce",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nonce",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "getNonRewardPotsTotal",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_obligator",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                }
            ],
            "name": "getObligation",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "obligation",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getPayment",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address payable",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "bool",
                            "name": "finalized",
                            "type": "bool"
                        },
                        {
                            "internalType": "uint256",
                            "name": "fundingPotId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "domainId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256[]",
                            "name": "skills",
                            "type": "uint256[]"
                        }
                    ],
                    "internalType": "struct ColonyDataTypes.Payment",
                    "name": "payment",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getPaymentCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getRewardInverse",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "rewardInverse",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_payoutId",
                    "type": "uint256"
                }
            ],
            "name": "getRewardPayoutInfo",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "bytes32",
                            "name": "reputationState",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint256",
                            "name": "colonyWideReputation",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "totalTokens",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "tokenAddress",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "blockTimestamp",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amountRemaining",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bool",
                            "name": "finalized",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct ColonyDataTypes.RewardPayoutCycle",
                    "name": "rewardPayoutCycle",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getRootLocalSkill",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "rootLocalSkill",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getTask",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "specificationHash",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "deliverableHash",
                    "type": "bytes32"
                },
                {
                    "internalType": "enum ColonyDataTypes.TaskStatus",
                    "name": "status",
                    "type": "uint8"
                },
                {
                    "internalType": "uint256",
                    "name": "dueDate",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "fundingPotId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "completionTimestamp",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "skillIds",
                    "type": "uint256[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getTaskChangeNonce",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nonce",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getTaskCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint8",
                    "name": "_role",
                    "type": "uint8"
                }
            ],
            "name": "getTaskRole",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address payable",
                            "name": "user",
                            "type": "address"
                        },
                        {
                            "internalType": "bool",
                            "name": "rateFail",
                            "type": "bool"
                        },
                        {
                            "internalType": "enum ColonyDataTypes.TaskRatings",
                            "name": "rating",
                            "type": "uint8"
                        }
                    ],
                    "internalType": "struct ColonyDataTypes.Role",
                    "name": "role",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint8",
                    "name": "_role",
                    "type": "uint8"
                }
            ],
            "name": "getTaskWorkRatingSecret",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "secret",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getTaskWorkRatingSecretsInfo",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nSecrets",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "lastSubmittedAt",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getToken",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "getTokenApproval",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "getTotalTokenApproval",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domain",
                    "type": "uint256"
                }
            ],
            "name": "getUserRoles",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "roles",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "enum ColonyDataTypes.ColonyRole",
                    "name": "_role",
                    "type": "uint8"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childDomainId",
                    "type": "uint256"
                }
            ],
            "name": "hasInheritedUserRole",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "hasRole",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "enum ColonyDataTypes.ColonyRole",
                    "name": "_role",
                    "type": "uint8"
                }
            ],
            "name": "hasUserRole",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "hasRole",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_colonyNetworkAddress",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "initialiseColony",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "initialiseRootLocalSkill",
            "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": [],
            "name": "isInRecoveryMode",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "inRecoveryMode",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "lockExpenditure",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "lockToken",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "timesLocked",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_to",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "_action",
                    "type": "bytes"
                }
            ],
            "name": "makeArbitraryTransaction",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "success",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "_targets",
                    "type": "address[]"
                },
                {
                    "internalType": "bytes[]",
                    "name": "_actions",
                    "type": "bytes[]"
                },
                {
                    "internalType": "bool",
                    "name": "_strict",
                    "type": "bool"
                }
            ],
            "name": "makeArbitraryTransactions",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "success",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                }
            ],
            "name": "makeExpenditure",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "expenditureId",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_target",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "_action",
                    "type": "bytes"
                }
            ],
            "name": "makeSingleArbitraryTransaction",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "success",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_wad",
                    "type": "uint256"
                }
            ],
            "name": "mintTokens",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_guy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_wad",
                    "type": "uint256"
                }
            ],
            "name": "mintTokensFor",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_fromChildSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_toChildSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_fromPot",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_toPot",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "moveFundsBetweenPots",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_fromChildSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_toChildSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_fromPot",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_toPot",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "moveFundsBetweenPots",
            "outputs": [],
            "stateMutability": "nonpayable",
            "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"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "obligateStake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "colonyOwner",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "colonyName",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "orbitdb",
                    "type": "string"
                }
            ],
            "name": "registerColonyLabel",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                }
            ],
            "name": "removeRecoveryRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "_setTo",
                    "type": "bool"
                }
            ],
            "name": "setAdministrationRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "_setTo",
                    "type": "bool"
                }
            ],
            "name": "setArbitrationRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "_setTo",
                    "type": "bool"
                }
            ],
            "name": "setArchitectureRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_globalClaimDelay",
                    "type": "uint256"
                }
            ],
            "name": "setDefaultGlobalClaimDelay",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_claimDelay",
                    "type": "uint256"
                }
            ],
            "name": "setExpenditureClaimDelay",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_slots",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_claimDelays",
                    "type": "uint256[]"
                }
            ],
            "name": "setExpenditureClaimDelays",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "_metadata",
                    "type": "string"
                }
            ],
            "name": "setExpenditureMetadata",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "_metadata",
                    "type": "string"
                }
            ],
            "name": "setExpenditureMetadata",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "setExpenditurePayout",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "setExpenditurePayout",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_slots",
                    "type": "uint256[]"
                },
                {
                    "internalType": "int256[]",
                    "name": "_payoutModifiers",
                    "type": "int256[]"
                }
            ],
            "name": "setExpenditurePayoutModifiers",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_slots",
                    "type": "uint256[]"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_amounts",
                    "type": "uint256[]"
                }
            ],
            "name": "setExpenditurePayouts",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                },
                {
                    "internalType": "address payable",
                    "name": "_recipient",
                    "type": "address"
                }
            ],
            "name": "setExpenditureRecipient",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_slots",
                    "type": "uint256[]"
                },
                {
                    "internalType": "address payable[]",
                    "name": "_recipients",
                    "type": "address[]"
                }
            ],
            "name": "setExpenditureRecipients",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_slot",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_skillId",
                    "type": "uint256"
                }
            ],
            "name": "setExpenditureSkill",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_slots",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_skillIds",
                    "type": "uint256[]"
                }
            ],
            "name": "setExpenditureSkills",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_storageSlot",
                    "type": "uint256"
                },
                {
                    "internalType": "bool[]",
                    "name": "_mask",
                    "type": "bool[]"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "_keys",
                    "type": "bytes32[]"
                },
                {
                    "internalType": "bytes32",
                    "name": "_value",
                    "type": "bytes32"
                }
            ],
            "name": "setExpenditureState",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_recipientSlots",
                    "type": "uint256[]"
                },
                {
                    "internalType": "address payable[]",
                    "name": "_recipients",
                    "type": "address[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_skillIdSlots",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_skillIds",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_claimDelaySlots",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_claimDelays",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_payoutModifierSlots",
                    "type": "uint256[]"
                },
                {
                    "internalType": "int256[]",
                    "name": "_payoutModifiers",
                    "type": "int256[]"
                },
                {
                    "internalType": "address[]",
                    "name": "_payoutTokens",
                    "type": "address[]"
                },
                {
                    "internalType": "uint256[][]",
                    "name": "_payoutSlots",
                    "type": "uint256[][]"
                },
                {
                    "internalType": "uint256[][]",
                    "name": "_payoutValues",
                    "type": "uint256[][]"
                }
            ],
            "name": "setExpenditureValues",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "_setTo",
                    "type": "bool"
                }
            ],
            "name": "setFundingRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                }
            ],
            "name": "setRecoveryRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_rewardInverse",
                    "type": "uint256"
                }
            ],
            "name": "setRewardInverse",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "bool",
                    "name": "_setTo",
                    "type": "bool"
                }
            ],
            "name": "setRootRole",
            "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": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32",
                    "name": "_roles",
                    "type": "bytes32"
                }
            ],
            "name": "setUserRoles",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "key",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "value",
                    "type": "bytes"
                },
                {
                    "internalType": "uint256",
                    "name": "branchMask",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "siblings",
                    "type": "bytes32[]"
                }
            ],
            "name": "startNextRewardPayout",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_newOwner",
                    "type": "address"
                }
            ],
            "name": "transferExpenditure",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_newOwner",
                    "type": "address"
                }
            ],
            "name": "transferExpenditureViaArbitration",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_permissionDomainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_obligator",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_recipient",
                    "type": "address"
                }
            ],
            "name": "transferStake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "extensionId",
                    "type": "bytes32"
                }
            ],
            "name": "uninstallExtension",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "unlockToken",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "lockId",
                    "type": "uint256"
                }
            ],
            "name": "unlockTokenForUser",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "updateApprovalAmount",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "orbitdb",
                    "type": "string"
                }
            ],
            "name": "updateColonyOrbitDB",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_newVersion",
                    "type": "uint256"
                }
            ],
            "name": "upgrade",
            "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": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_domainId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childSkillIndex",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_childDomainId",
                    "type": "uint256"
                }
            ],
            "name": "userCanSetRoles",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "canSet",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "key",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "value",
                    "type": "bytes"
                },
                {
                    "internalType": "uint256",
                    "name": "branchMask",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32[]",
                    "name": "siblings",
                    "type": "bytes32[]"
                }
            ],
            "name": "verifyReputationProof",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "isValid",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "version",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "colonyVersion",
                    "type": "uint256"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_wad",
                    "type": "uint256"
                }
            ],
            "name": "mintTokensForColonyNetwork",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_feeInverse",
                    "type": "uint256"
                }
            ],
            "name": "setNetworkFeeInverse",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                },
                {
                    "internalType": "bool",
                    "name": "_status",
                    "type": "bool"
                }
            ],
            "name": "setPayoutWhitelist",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_resolver",
                    "type": "address"
                }
            ],
            "name": "addNetworkColonyVersion",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "setReputationMiningCycleReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_extensionId",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "_resolver",
                    "type": "address"
                }
            ],
            "name": "addExtensionToNetwork",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "devdoc": {
        "events": {
            "Annotation(address,bytes32,string)": {
                "params": {
                    "agent": "Agent emitting the annotation",
                    "metadata": "IPFS hash of the metadata",
                    "txHash": "Hash of transaction being annotated (0x0 for current tx)"
                }
            },
            "ArbitraryReputationUpdate(address,address,uint256,int256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "amount": "The (maximum) amount the address is having its reputation changed by",
                    "skillId": "The id of the skill the user is having their reputation changed in",
                    "user": "The address that is having its reputation changed"
                }
            },
            "ColonyBootstrapped(address,address[],int256[])": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "amounts": "Amounts of reputation/tokens for every address",
                    "users": "Array of address bootstraped with reputation"
                }
            },
            "ColonyFundsClaimed(address,address,uint256,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "fee": "The fee deducted for rewards",
                    "payoutRemainder": "The remaining funds moved to the top-level domain pot",
                    "token": "The token address"
                }
            },
            "ColonyFundsMovedBetweenFundingPots(address,uint256,uint256,uint256,address)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "amount": "The amount that was transferred",
                    "fromPot": "The source funding pot",
                    "toPot": "The targer funding pot",
                    "token": "The token address being transferred"
                }
            },
            "ColonyInitialised(address,address,address)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "colonyNetwork": "The Colony Network address",
                    "token": "The Colony Token address"
                }
            },
            "ColonyMetadata(address,string)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "metadata": "IPFS hash of the metadata"
                }
            },
            "ColonyMetadataDelta(address,string)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "metadata": "IPFS hash of the delta"
                }
            },
            "ColonyRewardInverseSet(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "rewardInverse": "The reward inverse value"
                }
            },
            "ColonyRoleSet(address,address,uint256,uint8,bool)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "domainId": "The domainId of the role",
                    "role": "The role being granted/revoked",
                    "setTo": "A boolean representing the action -- granted (`true`) or revoked (`false`)",
                    "user": "The address of the user being affected"
                }
            },
            "ColonyUpgraded(address,uint256,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "newVersion": "The new colony version upgraded to",
                    "oldVersion": "The previous colony version"
                }
            },
            "DomainAdded(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "domainId": "Id of the newly-created Domain"
                }
            },
            "DomainDeprecated(address,uint256,bool)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "deprecated": "Whether or not the domain is deprecated",
                    "domainId": "Id of the domain"
                }
            },
            "DomainMetadata(address,uint256,string)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "domainId": "Id of the newly-created Domain",
                    "metadata": "IPFS hash of the metadata"
                }
            },
            "ExpenditureAdded(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "The newly added expenditure id"
                }
            },
            "ExpenditureCancelled(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "Id of the cancelled expenditure"
                }
            },
            "ExpenditureClaimDelaySet(address,uint256,uint256,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "claimDelay": "Additional amount of time to hold the funds",
                    "expenditureId": "Id of the expenditure",
                    "slot": "Expenditure slot being changed"
                }
            },
            "ExpenditureFinalized(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "Id of the finalized expenditure"
                }
            },
            "ExpenditureGlobalClaimDelaySet(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "globalClaimDelay": "The new default global claim delay"
                }
            },
            "ExpenditureLocked(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "Id of the locked expenditure"
                }
            },
            "ExpenditureMetadataSet(address,uint256,string)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "Id of the expenditure",
                    "metadata": "IPFS hash of the metadata"
                }
            },
            "ExpenditurePayoutModifierSet(address,uint256,uint256,int256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "Id of the expenditure",
                    "payoutModifier": "The payout modifier for the slot",
                    "slot": "Expenditure slot being changed"
                }
            },
            "ExpenditurePayoutSet(address,uint256,uint256,address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "amount": "Amount of the payout funding",
                    "expenditureId": "Id of the expenditure",
                    "slot": "Expenditure slot of the payout being changed",
                    "token": "Token of the payout funding"
                }
            },
            "ExpenditureRecipientSet(address,uint256,uint256,address)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "Id of the expenditure",
                    "recipient": "Address of the recipient",
                    "slot": "Expenditure slot of the recipient"
                }
            },
            "ExpenditureSkillSet(address,uint256,uint256,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "Id of the expenditure",
                    "skillId": "Id of the set skill",
                    "slot": "Slot receiving the skill"
                }
            },
            "ExpenditureStateChanged(address,uint256,uint256,bool[],bytes32[],bytes32)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "Id of the expenditure",
                    "keys": "Values used to construct final slot via mapping or array operations",
                    "mask": "Mask indicating whether we are making mapping or array operations",
                    "storageSlot": "Initial storage slot being set (expenditures or expenditureSlots)",
                    "value": "Value being set in the slot"
                }
            },
            "ExpenditureTransferred(address,uint256,address)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "expenditureId": "The expenditure id",
                    "owner": "The new owner of the expenditure"
                }
            },
            "FundingPotAdded(uint256)": {
                "params": {
                    "fundingPotId": "Id of the newly-created FundingPot"
                }
            },
            "LocalSkillAdded(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "localSkillId": "Id of the newly-created local skill"
                }
            },
            "LocalSkillDeprecated(address,uint256,bool)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "deprecated": "Deprecation status of the local skill",
                    "localSkillId": "Id of the newly-created local skill"
                }
            },
            "PaymentAdded(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "paymentId": "The newly added payment id"
                }
            },
            "PaymentFinalized(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "paymentId": "Id of the payment"
                }
            },
            "PaymentPayoutSet(address,uint256,address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "amount": "Amount of token to be paid out",
                    "paymentId": "Id of the payment",
                    "token": "Token of the payout"
                }
            },
            "PaymentRecipientSet(address,uint256,address)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "paymentId": "Id of the payment",
                    "recipient": "Address to receive the payout"
                }
            },
            "PaymentSkillSet(address,uint256,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "paymentId": "Id of the payment",
                    "skillId": "Token of the payout"
                }
            },
            "PayoutClaimed(address,uint256,address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "amount": "Amount of the payout claimed, after network fee was deducted",
                    "fundingPotId": "Id of the funding pot where payout comes from",
                    "token": "Token of the payout claim"
                }
            },
            "PayoutClaimed(address,uint256,uint256,address,uint256)": {
                "details": "This is emitted in addition to the other PayoutClaimed event. The other will be removed soon.",
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "id": "Id of the expenditure",
                    "slot": "Expenditure slot of the payout claimed",
                    "token": "Token of the payout claim",
                    "tokenPayout": "Amount of the payout claimed, after network fee was deducted"
                }
            },
            "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"
                }
            },
            "RewardPayoutClaimed(uint256,address,uint256,uint256)": {
                "params": {
                    "fee": "The fee deducted from payout",
                    "rewardPayoutId": "The reward payout cycle id",
                    "rewardRemainder": "The remaining reward amount paid out to user",
                    "user": "The user address who received the reward payout"
                }
            },
            "RewardPayoutCycleEnded(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "rewardPayoutId": "The reward payout cycle id"
                }
            },
            "RewardPayoutCycleStarted(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "rewardPayoutId": "The reward payout cycle id"
                }
            },
            "TaskAdded(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "taskId": "The newly added task id"
                }
            },
            "TaskBriefSet(uint256,bytes32)": {
                "params": {
                    "specificationHash": "New specification hash of the task",
                    "taskId": "Id of the task"
                }
            },
            "TaskCanceled(uint256)": {
                "params": {
                    "taskId": "Id of the canceled task"
                }
            },
            "TaskChangedViaSignatures(address[])": {
                "params": {
                    "reviewerAddresses": "Array of addresses that signed off this change."
                }
            },
            "TaskCompleted(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "taskId": "The id of the task being completed"
                }
            },
            "TaskDeliverableSubmitted(address,uint256,bytes32)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "deliverableHash": "Hash of the work performed",
                    "taskId": "Id of the task"
                }
            },
            "TaskDueDateSet(uint256,uint256)": {
                "params": {
                    "dueDate": "New due date of the task",
                    "taskId": "Id of the task"
                }
            },
            "TaskFinalized(address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "taskId": "Id of the finalized task"
                }
            },
            "TaskPayoutSet(uint256,uint8,address,uint256)": {
                "params": {
                    "amount": "Amount of the payout funding",
                    "role": "Task role whose payout is being changed",
                    "taskId": "Id of the task",
                    "token": "Token of the payout funding"
                }
            },
            "TaskRoleUserSet(uint256,uint8,address)": {
                "params": {
                    "role": "Role of the user",
                    "taskId": "Id of the task",
                    "user": "User that fulfills the designated role"
                }
            },
            "TaskSkillSet(uint256,uint256)": {
                "params": {
                    "skillId": "New skill id of the task",
                    "taskId": "Id of the task"
                }
            },
            "TaskWorkRatingRevealed(address,uint256,uint8,uint8)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "rating": "Rating the role received",
                    "role": "Role that got rated",
                    "taskId": "Id of the task"
                }
            },
            "TokenUnlocked(address)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event"
                }
            },
            "TokensBurned(address,address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "token": "the amount of the token being burned"
                }
            },
            "TokensMinted(address,address,uint256)": {
                "params": {
                    "agent": "The address that is responsible for triggering this event",
                    "amount": "The amount of tokens being awarded",
                    "who": "The address being awarded the tokens"
                }
            }
        },
        "kind": "dev",
        "methods": {
            "addDomain(uint256,uint256,uint256)": {
                "details": "Adding new domains is currently retricted to one level only, i.e. `_parentDomainId` has to be the root domain id: `1`.",
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_parentDomainId": "Id of the domain under which the new one will be added",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action"
                }
            },
            "addDomain(uint256,uint256,uint256,string)": {
                "details": "Adding new domains is currently retricted to one level only, i.e. `_parentDomainId` has to be the root domain id: `1`.We expect this function to only be used by the dapp",
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_metadata": "Metadata relating to the domain. Expected to be the IPFS hash of a JSON blob, but not enforced by the contracts.",
                    "_parentDomainId": "Id of the domain under which the new one will be added",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action"
                }
            },
            "addExtensionToNetwork(bytes32,address)": {
                "details": "Calls `IColonyNetwork.addExtensionToNetwork`.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"
                }
            },
            "addNetworkColonyVersion(uint256,address)": {
                "details": "Calls `IColonyNetwork.addColonyVersion`.",
                "params": {
                    "_resolver": "Address of the `Resolver` contract which will be used with the underlying `EtherRouter` contract",
                    "_version": "The new Colony contract version"
                }
            },
            "annotateTransaction(bytes32,string)": {
                "params": {
                    "_metadata": "String of metadata for tx",
                    "_txHash": "Hash of transaction being annotated (0x0 for current tx)"
                }
            },
            "approveStake(address,uint256,uint256)": {
                "params": {
                    "_amount": "Amount of internal token up to which we are willing to be obligated.",
                    "_approvee": "Address of the account we are willing to let obligate us.",
                    "_domainId": "Domain in which we are willing to be obligated."
                }
            },
            "authority()": {
                "returns": {
                    "colonyAuthority": "The `ColonyAuthority` contract address"
                }
            },
            "bootstrapColony(address[],int256[])": {
                "details": "Only allowed to be called when `taskCount` is `0` by authorized addresses.",
                "params": {
                    "_amount": "Amount of reputation/tokens for every address",
                    "_users": "Array of address to bootstrap with reputation"
                }
            },
            "burnTokens(address,uint256)": {
                "params": {
                    "amount": "The amount of tokens to burn",
                    "token": "The address of the token to burn"
                }
            },
            "cancelExpenditure(uint256)": {
                "params": {
                    "_id": "Expenditure identifier"
                }
            },
            "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."
                }
            },
            "claimColonyFunds(address)": {
                "params": {
                    "_token": "Address of the token, `0x0` value indicates Ether"
                }
            },
            "claimExpenditurePayout(uint256,uint256,address)": {
                "params": {
                    "_id": "Expenditure identifier",
                    "_slot": "Number of the slot",
                    "_token": "Address of the token, `0x0` value indicates Ether"
                }
            },
            "claimRewardPayout(uint256,uint256[7],bytes,bytes,uint256,bytes32[])": {
                "params": {
                    "_payoutId": "Id of the reward payout",
                    "_squareRoots": "Square roots of values used in equation: `_squareRoots[0]` - square root of user reputation, `_squareRoots[1]` - square root of user tokens (deposited in TokenLocking), `_squareRoots[2]` - square root of total reputation, `_squareRoots[3]` - square root of total tokens, `_squareRoots[4]` - square root of numerator (user reputation * user tokens), `_squareRoots[5]` - square root of denominator (total reputation * total tokens), `_squareRoots[6]` - square root of payout amount.",
                    "branchMask": "The branchmask of the proof",
                    "key": "Some Reputation hash tree key",
                    "siblings": "The siblings of the proof",
                    "value": "Reputation value"
                }
            },
            "deobligateStake(address,uint256,uint256)": {
                "params": {
                    "_amount": "Amount of internal token we are deobligating.",
                    "_domainId": "Domain in which we are deobligating the user.",
                    "_user": "Address of the account we are deobligating."
                }
            },
            "deprecateDomain(uint256,uint256,uint256,bool)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_deprecated": "Whether or not the domain is deprecated",
                    "_domainId": "Id of the domain being deprecated",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action"
                }
            },
            "deprecateExtension(bytes32,bool)": {
                "params": {
                    "deprecated": "Whether to deprecate the extension or not",
                    "extensionId": "keccak256 hash of the extension name, used as an indentifier"
                }
            },
            "deprecateLocalSkill(uint256,bool)": {
                "params": {
                    "deprecated": "Deprecation status to set for the skill",
                    "localSkillId": "Id for the local skill"
                }
            },
            "editColony(string)": {
                "params": {
                    "_metadata": "IPFS hash of the metadata"
                }
            },
            "editColonyByDelta(string)": {
                "params": {
                    "_metadataDelta": "IPFS hash of the metadata delta"
                }
            },
            "editDomain(uint256,uint256,uint256,string)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_domainId": "Id of the domain being edited",
                    "_metadata": "Metadata relating to the domain. Expected to be the IPFS hash of a JSON blob, but not enforced by the contracts.",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action"
                }
            },
            "emitDomainReputationPenalty(uint256,uint256,uint256,address,int256)": {
                "params": {
                    "_amount": "The (negative) amount of reputation to lose",
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_domainId": "The domain where the user will lose reputation",
                    "_permissionDomainId": "The domainId in which I hold the Arbitration role",
                    "_user": "The user who will lose reputation"
                }
            },
            "emitDomainReputationReward(uint256,address,int256)": {
                "params": {
                    "_amount": "The (positive) amount of reputation to gain",
                    "_domainId": "The domain where the user will gain reputation",
                    "_user": "The user who will gain reputation"
                }
            },
            "emitSkillReputationPenalty(uint256,address,int256)": {
                "params": {
                    "_amount": "The (negative) amount of reputation to lose",
                    "_skillId": "The skill where the user will lose reputation",
                    "_user": "The user who will lose reputation"
                }
            },
            "emitSkillReputationReward(uint256,address,int256)": {
                "params": {
                    "_amount": "The (positive) amount of reputation to gain",
                    "_skillId": "The skill where the user will gain reputation",
                    "_user": "The user who will gain reputation"
                }
            },
            "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"
                }
            },
            "finalizeExpenditure(uint256)": {
                "params": {
                    "_id": "Expenditure identifier"
                }
            },
            "finalizeRewardPayout(uint256)": {
                "params": {
                    "_payoutId": "Id of the reward payout"
                }
            },
            "finishUpgrade()": {
                "details": "Can only be called by the colony itself, and only expected to be called as part of the `upgrade()` call. Required to be external so it can be an external call."
            },
            "getApproval(address,address,uint256)": {
                "params": {
                    "_domainId": "Domain in which we are willing to be obligated.",
                    "_obligator": "Address of the account we are willing to let obligate us.",
                    "_user": "User allowing their tokens to be obligated."
                },
                "returns": {
                    "approval": "The amount the user has approved"
                }
            },
            "getCapabilityRoles(bytes4)": {
                "params": {
                    "_sig": "The function signature"
                },
                "returns": {
                    "roles": "bytes32 representation of the authorized roles"
                }
            },
            "getColonyNetwork()": {
                "details": "The colonyNetworkAddress we read here is set once, during `initialiseColony`.",
                "returns": {
                    "colonyNetwork": "The address of Colony Network instance"
                }
            },
            "getDomain(uint256)": {
                "params": {
                    "_id": "Id of the domain which details to get"
                },
                "returns": {
                    "domain": "The domain"
                }
            },
            "getDomainCount()": {
                "returns": {
                    "count": "The domain count. Min 1 as the root domain is created at the same time as the colony"
                }
            },
            "getDomainFromFundingPot(uint256)": {
                "params": {
                    "_fundingPotId": "Id of the funding pot"
                },
                "returns": {
                    "domainId": "Id of the corresponding domain"
                }
            },
            "getExpenditure(uint256)": {
                "params": {
                    "_id": "Expenditure identifier"
                },
                "returns": {
                    "expenditure": "The expenditure"
                }
            },
            "getExpenditureCount()": {
                "returns": {
                    "count": "The expenditure count"
                }
            },
            "getExpenditureSlot(uint256,uint256)": {
                "params": {
                    "_id": "Expenditure identifier",
                    "_slot": "Expenditure slot"
                },
                "returns": {
                    "expenditureSlot": "The expenditure slot"
                }
            },
            "getExpenditureSlotPayout(uint256,uint256,address)": {
                "params": {
                    "_id": "Expenditure identifier",
                    "_slot": "Expenditure slot",
                    "_token": "Token address"
                },
                "returns": {
                    "amount": "Amount of the payout for that slot/token."
                }
            },
            "getFundingPot(uint256)": {
                "details": "For the reward funding pot (e.g. id: 0) this returns (0, 0, 0).",
                "params": {
                    "_id": "Id of the pot which details to get"
                },
                "returns": {
                    "associatedType": "The FundingPotAssociatedType value of the current funding pot, e.g. Domain, Expenditure",
                    "associatedTypeId": "Id of the associated type, e.g. if associatedType = FundingPotAssociatedType.Domain, this refers to the domainId",
                    "payoutsWeCannotMake": "Number of payouts that cannot be completed with the current funding"
                }
            },
            "getFundingPotBalance(uint256,address)": {
                "params": {
                    "_potId": "Id of the funding pot",
                    "_token": "Address of the token, `0x0` value indicates Ether"
                },
                "returns": {
                    "balance": "Funding pot supply balance"
                }
            },
            "getFundingPotCount()": {
                "returns": {
                    "count": "The funding pots count"
                }
            },
            "getFundingPotPayout(uint256,address)": {
                "params": {
                    "_potId": "Id of the funding pot",
                    "_token": "Address of the token, `0x0` value indicates Ether"
                },
                "returns": {
                    "payout": "Funding pot payout amount"
                }
            },
            "getMetatransactionNonce(address)": {
                "params": {
                    "userAddress": "The address of the user that will sign the metatransaction"
                }
            },
            "getNonRewardPotsTotal(address)": {
                "params": {
                    "_token": "Address of the token, `0x0` value indicates Ether"
                },
                "returns": {
                    "amount": "Total amount of tokens in funding pots other than the rewards pot (id 0)"
                }
            },
            "getObligation(address,address,uint256)": {
                "params": {
                    "_domainId": "Domain in which we are obligated.",
                    "_obligator": "Address of the account who obligated us.",
                    "_user": "User whose tokens are obligated."
                },
                "returns": {
                    "obligation": "The amount that is currently obligated"
                }
            },
            "getPayment(uint256)": {
                "params": {
                    "_id": "Payment identifier"
                },
                "returns": {
                    "payment": "The Payment data structure"
                }
            },
            "getPaymentCount()": {
                "returns": {
                    "count": "The payment count"
                }
            },
            "getRewardInverse()": {
                "returns": {
                    "rewardInverse": "The inverse of the reward"
                }
            },
            "getRewardPayoutInfo(uint256)": {
                "params": {
                    "_payoutId": "Id of the reward payout"
                },
                "returns": {
                    "rewardPayoutCycle": "RewardPayoutCycle, containing propertes:  `reputationState` Reputation root hash at the time of creation,  `colonyWideReputation` Colony wide reputation in `reputationState`,  `totalTokens` Total colony tokens at the time of creation,  `amount` Total amount of tokens taken aside for reward payout,  `tokenAddress` Token address,  `blockTimestamp` Block number at the time of creation."
                }
            },
            "getRootLocalSkill()": {
                "returns": {
                    "rootLocalSkill": "The root local skill id"
                }
            },
            "getTask(uint256)": {
                "params": {
                    "_id": "Id of the task"
                },
                "returns": {
                    "completionTimestamp": "Task completion timestamp",
                    "deliverableHash": "Task deliverable hash",
                    "domainId": "Task domain id, default is root colony domain with id 1",
                    "dueDate": "Due date",
                    "fundingPotId": "Id of funding pot for task",
                    "skillIds": "Array of global skill ids assigned to task",
                    "specificationHash": "Task brief hash",
                    "status": "TaskStatus property. 0 - Active. 1 - Cancelled. 2 - Finalized"
                }
            },
            "getTaskChangeNonce(uint256)": {
                "params": {
                    "_id": "Id of the task"
                },
                "returns": {
                    "nonce": "The current task change nonce value"
                }
            },
            "getTaskCount()": {
                "returns": {
                    "count": "The task count"
                }
            },
            "getTaskRole(uint256,uint8)": {
                "params": {
                    "_id": "Id of the task",
                    "_role": "Id of the role, as defined in TaskRole enum"
                },
                "returns": {
                    "role": "The Role"
                }
            },
            "getTaskWorkRatingSecret(uint256,uint8)": {
                "params": {
                    "_id": "Id of the task",
                    "_role": "Id of the role, as defined in TaskRole enum"
                },
                "returns": {
                    "secret": "Rating secret `bytes32` value"
                }
            },
            "getTaskWorkRatingSecretsInfo(uint256)": {
                "params": {
                    "_id": "Id of the task"
                },
                "returns": {
                    "lastSubmittedAt": "Timestamp of the last submitted rating secret",
                    "nSecrets": "Number of secrets"
                }
            },
            "getToken()": {
                "returns": {
                    "tokenAddress": "Address of the token contract"
                }
            },
            "getTokenApproval(address,address)": {
                "params": {
                    "spender": "The account we have approved",
                    "token": "The address of the token which was approved"
                },
                "returns": {
                    "amount": "The token approval amount"
                }
            },
            "getTotalTokenApproval(address)": {
                "params": {
                    "token": "The address of the token which was approved"
                },
                "returns": {
                    "amount": "The total token approval amount"
                }
            },
            "getUserRoles(address,uint256)": {
                "params": {
                    "_domain": "The domain we want to get roles in",
                    "_user": "The user whose roles we want to get"
                },
                "returns": {
                    "roles": "bytes32 representation of the held roles"
                }
            },
            "hasInheritedUserRole(address,uint256,uint8,uint256,uint256)": {
                "params": {
                    "_childDomainId": "The domain where we want to use the role",
                    "_childSkillIndex": "The index that the `_childDomainId` is relative to `_domainId`",
                    "_domainId": "Domain in which the caller has the role",
                    "_role": "The role we want to check for",
                    "_user": "The user whose role we want to check"
                },
                "returns": {
                    "hasRole": "Boolean indicating whether the given user has the given role in domain"
                }
            },
            "hasUserRole(address,uint256,uint8)": {
                "params": {
                    "_domainId": "The domain where we want to check for the role",
                    "_role": "The role we want to check for",
                    "_user": "The user whose role we want to check"
                },
                "returns": {
                    "hasRole": "Boolean indicating whether the given user has the given role in domain"
                }
            },
            "initialiseColony(address,address)": {
                "details": "Sets the reward inverse to the uint max 2**256 - 1.",
                "params": {
                    "_colonyNetworkAddress": "Address of the colony network",
                    "_token": "Address of the colony ERC20 Token"
                }
            },
            "installExtension(bytes32,uint256)": {
                "params": {
                    "extensionId": "keccak256 hash of the extension name, used as an indentifier",
                    "version": "The new extension version to install"
                }
            },
            "isInRecoveryMode()": {
                "returns": {
                    "inRecoveryMode": "Return true if recovery mode is active, false otherwise"
                }
            },
            "lockExpenditure(uint256)": {
                "params": {
                    "_id": "Expenditure identifier"
                }
            },
            "lockToken()": {
                "returns": {
                    "timesLocked": "The amount of times the token was locked"
                }
            },
            "makeArbitraryTransaction(address,bytes)": {
                "params": {
                    "_action": "Bytes array encoding the function call and arguments",
                    "_to": "Contract to receive the function call (cannot be this contract, network or token locking)"
                },
                "returns": {
                    "success": "Boolean indicating whether the transaction succeeded"
                }
            },
            "makeArbitraryTransactions(address[],bytes[],bool)": {
                "params": {
                    "_actions": "Array of Bytes arrays encoding the function calls and arguments",
                    "_strict": "Boolean indicating whether if one transaction fails, the whole call to this function should fail.",
                    "_targets": "Array of addressed to be targeted"
                },
                "returns": {
                    "success": "Boolean indicating whether the transactions succeeded"
                }
            },
            "makeExpenditure(uint256,uint256,uint256)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`, (only used if `_permissionDomainId` is different to `_domainId`)",
                    "_domainId": "The domain where the expenditure belongs",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action"
                },
                "returns": {
                    "expenditureId": "Identifier of the newly created expenditure"
                }
            },
            "makeSingleArbitraryTransaction(address,bytes)": {
                "details": "Only callable by the colony itself. If you wish to use this functionality, you should use the makeAbitraryTransactions function",
                "params": {
                    "_action": "Bytes array encoding the function call and arguments",
                    "_target": "Contract to receive the function call"
                },
                "returns": {
                    "success": "Boolean indicating whether the transactions succeeded"
                }
            },
            "mintTokens(uint256)": {
                "params": {
                    "_wad": "Amount to mint"
                }
            },
            "mintTokensFor(address,uint256)": {
                "params": {
                    "_guy": "Recipient of new tokens",
                    "_wad": "Amount to mint"
                }
            },
            "mintTokensForColonyNetwork(uint256)": {
                "params": {
                    "_wad": "Amount to mint and transfer to the colony network"
                }
            },
            "moveFundsBetweenPots(uint256,uint256,uint256,uint256,uint256,uint256,address)": {
                "params": {
                    "_amount": "Amount of funds",
                    "_fromChildSkillIndex": "The child index in `_permissionDomainId` where we can find the domain for `_fromPotId`",
                    "_fromPot": "Funding pot id providing the funds",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action",
                    "_toChildSkillIndex": "The child index in `_permissionDomainId` where we can find the domain for `_toPotId`",
                    "_toPot": "Funding pot id receiving the funds",
                    "_token": "Address of the token, `0x0` value indicates Ether"
                }
            },
            "moveFundsBetweenPots(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address)": {
                "params": {
                    "_amount": "Amount of funds",
                    "_childSkillIndex": "The child index in _permissionDomainId where I will be taking this action",
                    "_domainId": "The domain where I am taking this action, pointed to by _permissionDomainId and _childSkillIndex",
                    "_fromChildSkillIndex": "In the array of child skills for the skill associated with the domain pointed to by _permissionDomainId + _childSkillIndex,         the index of the skill associated with the domain that contains _fromPot",
                    "_fromPot": "Funding pot id providing the funds",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action",
                    "_toChildSkillIndex": "The same, but for the _toPot which the funds are being moved to",
                    "_toPot": "Funding pot id receiving the funds",
                    "_token": "Address of the token, `0x0` value indicates Ether"
                }
            },
            "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."
                }
            },
            "obligateStake(address,uint256,uint256)": {
                "params": {
                    "_amount": "Amount of internal token we are obligating.",
                    "_domainId": "Domain in which we are obligating the user.",
                    "_user": "Address of the account we are obligating."
                }
            },
            "owner()": {
                "details": "Used for testing.",
                "returns": {
                    "colonyOwner": "Address of the colony owner"
                }
            },
            "registerColonyLabel(string,string)": {
                "params": {
                    "colonyName": "The label to register.",
                    "orbitdb": "The path of the orbitDB database associated with the colony name"
                }
            },
            "removeRecoveryRole(address)": {
                "params": {
                    "_user": "User we want to remove recovery role from"
                }
            },
            "setAdministrationRole(uint256,uint256,address,uint256,bool)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_domainId": "Domain in which we are giving user the role",
                    "_permissionDomainId": "Domain in which the caller has root/architecture role",
                    "_setTo": "The state of the role permission (true assign the permission, false revokes it)",
                    "_user": "User we want to give an admin role to"
                }
            },
            "setArbitrationRole(uint256,uint256,address,uint256,bool)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_domainId": "Domain in which we are giving user the role",
                    "_permissionDomainId": "Domain in which the caller has root role",
                    "_setTo": "The state of the role permission (true assign the permission, false revokes it)",
                    "_user": "User we want to give an arbitration role to"
                }
            },
            "setArchitectureRole(uint256,uint256,address,uint256,bool)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_domainId": "Domain in which we are giving user the role",
                    "_permissionDomainId": "Domain in which the caller has root/architecture role",
                    "_setTo": "The state of the role permission (true assign the permission, false revokes it)",
                    "_user": "User we want to give an architecture role to"
                }
            },
            "setDefaultGlobalClaimDelay(uint256)": {
                "params": {
                    "_globalClaimDelay": "The new default global claim delay"
                }
            },
            "setExpenditureClaimDelay(uint256,uint256,uint256)": {
                "params": {
                    "_claimDelay": "Duration of time (in seconds) to delay",
                    "_id": "Expenditure identifier",
                    "_slot": "Number of the slot"
                }
            },
            "setExpenditureClaimDelays(uint256,uint256[],uint256[])": {
                "params": {
                    "_claimDelays": "Durations of time (in seconds) to delay",
                    "_id": "Expenditure identifier",
                    "_slots": "Array of slots to set claim delays"
                }
            },
            "setExpenditureMetadata(uint256,string)": {
                "details": "Can only be called while expenditure is in draft state.",
                "params": {
                    "_id": "Id of the expenditure",
                    "_metadata": "IPFS hash of the metadata"
                }
            },
            "setExpenditureMetadata(uint256,uint256,uint256,string)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`,",
                    "_id": "Id of the expenditure",
                    "_metadata": "IPFS hash of the metadata",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action"
                }
            },
            "setExpenditurePayout(uint256,uint256,address,uint256)": {
                "details": "Can only be called while expenditure is in draft state.",
                "params": {
                    "_amount": "Payout amount",
                    "_id": "Id of the expenditure",
                    "_slot": "Number of the slot",
                    "_token": "Address of the token, `0x0` value indicates Ether"
                }
            },
            "setExpenditurePayout(uint256,uint256,uint256,uint256,address,uint256)": {
                "params": {
                    "_amount": "Payout amount",
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_id": "Id of the expenditure",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action",
                    "_slot": "The slot to set the payout",
                    "_token": "Address of the token, `0x0` value indicates Ether"
                }
            },
            "setExpenditurePayoutModifiers(uint256,uint256[],int256[])": {
                "params": {
                    "_id": "Expenditure identifier",
                    "_payoutModifiers": "Values (between +/- WAD) to modify the payout & reputation bonus",
                    "_slots": "Array of slots to set payout modifiers"
                }
            },
            "setExpenditurePayouts(uint256,uint256[],address,uint256[])": {
                "details": "Can only be called while expenditure is in draft state.",
                "params": {
                    "_amounts": "Payout amounts",
                    "_id": "Id of the expenditure",
                    "_slots": "Array of slots to set payouts",
                    "_token": "Address of the token, `0x0` value indicates Ether"
                }
            },
            "setExpenditureRecipient(uint256,uint256,address)": {
                "details": "Can only be called while expenditure is in draft state.",
                "params": {
                    "_id": "Id of the expenditure",
                    "_recipient": "Address of the recipient",
                    "_slot": "Slot for the recipient address"
                }
            },
            "setExpenditureRecipients(uint256,uint256[],address[])": {
                "details": "Can only be called while expenditure is in draft state.",
                "params": {
                    "_id": "Id of the expenditure",
                    "_recipients": "Addresses of the recipients",
                    "_slots": "Array of slots to set recipients"
                }
            },
            "setExpenditureSkill(uint256,uint256,uint256)": {
                "params": {
                    "_id": "Expenditure identifier",
                    "_skillId": "Id of the new skill to set",
                    "_slot": "Number of the slot"
                }
            },
            "setExpenditureSkills(uint256,uint256[],uint256[])": {
                "params": {
                    "_id": "Expenditure identifier",
                    "_skillIds": "Ids of the new skills to set",
                    "_slots": "Array of slots to set skills"
                }
            },
            "setExpenditureState(uint256,uint256,uint256,uint256,bool[],bytes32[],bytes32)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`, (only used if `_permissionDomainId` is different to `_domainId`)",
                    "_id": "Expenditure identifier",
                    "_keys": "Array of additional keys (for mappings & arrays)",
                    "_mask": "Array of booleans indicated whether a key is a mapping (F) or an array index (T).",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action",
                    "_storageSlot": "Number of the top-level storage slot (25, 26, or 27)",
                    "_value": "Value to set at location"
                }
            },
            "setExpenditureValues(uint256,uint256[],address[],uint256[],uint256[],uint256[],uint256[],uint256[],int256[],address[],uint256[][],uint256[][])": {
                "params": {
                    "_claimDelaySlots": "Array of slots to set claim delays",
                    "_claimDelays": "Durations of time (in seconds) to delay",
                    "_id": "Expenditure identifier",
                    "_payoutModifierSlots": "Array of slots to set payout modifiers",
                    "_payoutModifiers": "Values (between +/- WAD) to modify the payout & reputation bonus",
                    "_payoutSlots": "2-dimensional array of slots to set payouts",
                    "_payoutTokens": "Addresses of the tokens, `0x0` value indicates Ether",
                    "_payoutValues": "2-dimensional array of the payout amounts",
                    "_recipientSlots": "Array of slots to set recipients",
                    "_recipients": "Addresses of the recipients",
                    "_skillIdSlots": "Array of slots to set skills",
                    "_skillIds": "Ids of the new skills to set"
                }
            },
            "setFundingRole(uint256,uint256,address,uint256,bool)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_domainId": "Domain in which we are giving user the role",
                    "_permissionDomainId": "Domain in which the caller has root/architecture role",
                    "_setTo": "The state of the role permission (true assign the permission, false revokes it)",
                    "_user": "User we want to give an funding role to"
                }
            },
            "setNetworkFeeInverse(uint256)": {
                "details": "Calls `IColonyNetwork.setFeeInverse`.",
                "params": {
                    "_feeInverse": "Nonzero amount for the fee inverse"
                }
            },
            "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"
                }
            },
            "setReputationMiningCycleReward(uint256)": {
                "details": "Calls the corresponding function on the ColonyNetwork.",
                "params": {
                    "_amount": "The CLNY awarded per mining cycle to the miners"
                }
            },
            "setRewardInverse(uint256)": {
                "params": {
                    "_rewardInverse": "The inverse of the reward"
                }
            },
            "setRootRole(address,bool)": {
                "params": {
                    "_setTo": "The state of the role permission (true assign the permission, false revokes it)",
                    "_user": "User we want to give an root role to"
                }
            },
            "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"
                }
            },
            "setUserRoles(uint256,uint256,address,uint256,bytes32)": {
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`",
                    "_domainId": "Domain in which we are giving user the role",
                    "_permissionDomainId": "Domain in which the caller has root/architecture role",
                    "_roles": "Byte array representing the desired role setting (1 for on, 0 for off)",
                    "_user": "User we want to give a role to"
                }
            },
            "startNextRewardPayout(address,bytes,bytes,uint256,bytes32[])": {
                "params": {
                    "_token": "Address of the token used for reward payout",
                    "branchMask": "The branchmask of the proof",
                    "key": "Some Reputation hash tree key",
                    "siblings": "The siblings of the proof",
                    "value": "Reputation value"
                }
            },
            "transferExpenditure(uint256,address)": {
                "params": {
                    "_id": "Expenditure identifier",
                    "_newOwner": "New owner of expenditure"
                }
            },
            "transferExpenditureViaArbitration(uint256,uint256,uint256,address)": {
                "details": "This is now deprecated and will be removed in a future version",
                "params": {
                    "_childSkillIndex": "The index that the `_domainId` is relative to `_permissionDomainId`, (only used if `_permissionDomainId` is different to `_domainId`)",
                    "_id": "Expenditure identifier",
                    "_newOwner": "New owner of expenditure",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action"
                }
            },
            "transferStake(uint256,uint256,address,address,uint256,uint256,address)": {
                "params": {
                    "_amount": "Amount of internal token we are transferring.",
                    "_childSkillIndex": "The child index in `_permissionDomainId` where we can find `_domainId`.",
                    "_domainId": "Domain in which we are transferring the tokens.",
                    "_obligator": "Address of the account who set the obligation.",
                    "_permissionDomainId": "The domainId in which I have the permission to take this action.",
                    "_recipient": "Recipient of the transferred tokens.",
                    "_user": "Address of the account we are transferring."
                }
            },
            "uninstallExtension(bytes32)": {
                "details": "This is a permanent action -- re-installing the extension will deploy a new contractIt is recommended to deprecate an extension before uninstalling to allow active objects to be resolved",
                "params": {
                    "extensionId": "keccak256 hash of the extension name, used as an indentifier"
                }
            },
            "unlockTokenForUser(address,uint256)": {
                "params": {
                    "lockId": "The specific lock to unlock",
                    "user": "The user to unlock"
                }
            },
            "updateApprovalAmount(address,address)": {
                "params": {
                    "spender": "The account we have approved",
                    "token": "The address of the token which was approved"
                }
            },
            "updateColonyOrbitDB(string)": {
                "params": {
                    "orbitdb": "The path of the orbitDB database to be associated with the colony"
                }
            },
            "upgrade(uint256)": {
                "details": "Downgrades are not allowed, i.e. `_newVersion` should be higher than the currect colony version.",
                "params": {
                    "_newVersion": "The target version for the upgrade"
                }
            },
            "upgradeExtension(bytes32,uint256)": {
                "params": {
                    "extensionId": "keccak256 hash of the extension name, used as an indentifier",
                    "newVersion": "The version to upgrade to (must be one larger than the current version)"
                }
            },
            "userCanSetRoles(address,uint256,uint256,uint256)": {
                "params": {
                    "_childDomainId": "The domain where we want to edit roles",
                    "_childSkillIndex": "The index that the `_childDomainId` is relative to `_domainId`",
                    "_domainId": "Domain in which the caller has the role (currently Root or Architecture)",
                    "_user": "The user whose permissions we want to check"
                },
                "returns": {
                    "canSet": "Boolean indicating whether the given user is allowed to edit roles in the target domain."
                }
            },
            "verifyReputationProof(bytes,bytes,uint256,bytes32[])": {
                "details": "For more detail about branchMask and siblings, examine the PatriciaTree implementation. While external, likely only to be used by the Colony contracts, as it checks that the user is proving their own reputation in the current colony. The `verifyProof` function can be used to verify any proof, though this function is not currently exposed on the Colony's EtherRouter.",
                "params": {
                    "branchMask": "The branchmask of the proof",
                    "key": "The key of the element the proof is for.",
                    "siblings": "The siblings of the proof",
                    "value": "The value of the element that the proof is for."
                },
                "returns": {
                    "isValid": "True if the proof is valid, false otherwise."
                }
            },
            "version()": {
                "returns": {
                    "colonyVersion": "Version number"
                }
            }
        },
        "version": 1
    },
    "userdoc": {
        "events": {
            "Annotation(address,bytes32,string)": {
                "notice": "Emit a metadata string for a transaction"
            },
            "ArbitraryReputationUpdate(address,address,uint256,int256)": {
                "notice": "Event logged when a manual reputation reward/penalty is made"
            },
            "ColonyBootstrapped(address,address[],int256[])": {
                "notice": "Event logged when Colony is initially bootstrapped"
            },
            "ColonyFundsClaimed(address,address,uint256,uint256)": {
                "notice": "Event logged when colony funds are moved to the top-level domain pot"
            },
            "ColonyFundsMovedBetweenFundingPots(address,uint256,uint256,uint256,address)": {
                "notice": "Event logged when colony funds, either tokens or ether, has been moved between funding pots"
            },
            "ColonyInitialised(address,address,address)": {
                "notice": "Event logged when Colony is initialised"
            },
            "ColonyMetadata(address,string)": {
                "notice": "Event logged when Colony metadata is updated"
            },
            "ColonyMetadataDelta(address,string)": {
                "notice": "Event logged when Colony metadata is updated via a delta"
            },
            "ColonyRewardInverseSet(address,uint256)": {
                "notice": "Event logged when the colony reward inverse is set"
            },
            "ColonyRoleSet(address,address,uint256,uint8,bool)": {
                "notice": "Event logged when a user/domain/role is granted or revoked"
            },
            "ColonyUpgraded(address,uint256,uint256)": {
                "notice": "Event logged when colony is upgraded"
            },
            "DomainAdded(address,uint256)": {
                "notice": "Event logged when a new Domain is added"
            },
            "DomainDeprecated(address,uint256,bool)": {
                "notice": "Event logged when domain metadata is updated"
            },
            "DomainMetadata(address,uint256,string)": {
                "notice": "Event logged when domain metadata is updated"
            },
            "ExpenditureAdded(address,uint256)": {
                "notice": "Event logged when a new expenditure is added"
            },
            "ExpenditureCancelled(address,uint256)": {
                "notice": "Event logged when an expenditure has been cancelled"
            },
            "ExpenditureClaimDelaySet(address,uint256,uint256,uint256)": {
                "notice": "Event logged when an expenditure slot claim delay changes"
            },
            "ExpenditureFinalized(address,uint256)": {
                "notice": "Event logged when an expenditure has been finalized"
            },
            "ExpenditureGlobalClaimDelaySet(address,uint256)": {
                "notice": "Event logged when the default global claim delay is updated"
            },
            "ExpenditureLocked(address,uint256)": {
                "notice": "Event logged when an expenditure has been locked"
            },
            "ExpenditureMetadataSet(address,uint256,string)": {
                "notice": "Event logged when expenditure metadata is set"
            },
            "ExpenditurePayoutModifierSet(address,uint256,uint256,int256)": {
                "notice": "Event logged when an expenditure slot payout modifier changes"
            },
            "ExpenditurePayoutSet(address,uint256,uint256,address,uint256)": {
                "notice": "Event logged when an expenditure payout changes"
            },
            "ExpenditureRecipientSet(address,uint256,uint256,address)": {
                "notice": "Event logged when an expenditure's recipient is set"
            },
            "ExpenditureSkillSet(address,uint256,uint256,uint256)": {
                "notice": "Event logged when an expenditure's skill changes"
            },
            "ExpenditureStateChanged(address,uint256,uint256,bool[],bytes32[],bytes32)": {
                "notice": "Event logged when an expenditure slot payout modifier changes"
            },
            "ExpenditureTransferred(address,uint256,address)": {
                "notice": "Event logged when a new expenditure is transferred"
            },
            "FundingPotAdded(uint256)": {
                "notice": "Event logged when a new FundingPot is added"
            },
            "LocalSkillAdded(address,uint256)": {
                "notice": "Event logged when a new local skill is added"
            },
            "LocalSkillDeprecated(address,uint256,bool)": {
                "notice": "Event logged when a new local skill is added"
            },
            "PaymentAdded(address,uint256)": {
                "notice": "Event logged when a new payment is added"
            },
            "PaymentFinalized(address,uint256)": {
                "notice": "Event logged when a payment is finalised"
            },
            "PaymentPayoutSet(address,uint256,address,uint256)": {
                "notice": "Event logged when a payment has its payout set"
            },
            "PaymentRecipientSet(address,uint256,address)": {
                "notice": "Event logged when a payment has its recipient set"
            },
            "PaymentSkillSet(address,uint256,uint256)": {
                "notice": "Event logged when a payment has its skill set"
            },
            "PayoutClaimed(address,uint256,address,uint256)": {
                "notice": "Event logged when a payout is claimed"
            },
            "PayoutClaimed(address,uint256,uint256,address,uint256)": {
                "notice": "Event logged when an expenditure payout is claimed."
            },
            "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"
            },
            "RewardPayoutClaimed(uint256,address,uint256,uint256)": {
                "notice": "Event logged when reward payout is claimed"
            },
            "RewardPayoutCycleEnded(address,uint256)": {
                "notice": "Event logged when the reward payout cycle has ended"
            },
            "RewardPayoutCycleStarted(address,uint256)": {
                "notice": "Event logged when a new reward payout cycle has started"
            },
            "TaskAdded(address,uint256)": {
                "notice": "Event logged when a new task is added"
            },
            "TaskBriefSet(uint256,bytes32)": {
                "notice": "Event logged when a task's specification hash changes"
            },
            "TaskCanceled(uint256)": {
                "notice": "Event logged when a task has been canceled"
            },
            "TaskChangedViaSignatures(address[])": {
                "notice": "Event logged when task data is changed via signed messages by those involved"
            },
            "TaskCompleted(address,uint256)": {
                "notice": "Event logged when a task has been completed. This is either because the dueDate has passed and the manager closed the task, or the worker has submitted the deliverable. In the latter case, TaskDeliverableSubmitted will also be emitted."
            },
            "TaskDeliverableSubmitted(address,uint256,bytes32)": {
                "notice": "Event logged when a deliverable has been submitted for a task"
            },
            "TaskDueDateSet(uint256,uint256)": {
                "notice": "Event logged when a task's due date changes"
            },
            "TaskFinalized(address,uint256)": {
                "notice": "Event logged when a task has been finalized"
            },
            "TaskPayoutSet(uint256,uint8,address,uint256)": {
                "notice": "Event logged when a task payout changes"
            },
            "TaskRoleUserSet(uint256,uint8,address)": {
                "notice": "Event logged when a task's role user changes"
            },
            "TaskSkillSet(uint256,uint256)": {
                "notice": "Event logged when a task's skill changes"
            },
            "TaskWorkRatingRevealed(address,uint256,uint8,uint8)": {
                "notice": "Event logged when the rating of a role was revealed"
            },
            "TokenUnlocked(address)": {
                "notice": "Event emitted when the colony unlocks its native token through the provided function"
            },
            "TokensBurned(address,address,uint256)": {
                "notice": "Event logged when the colony burns tokens"
            },
            "TokensMinted(address,address,uint256)": {
                "notice": "Event logged when tokens are minted"
            }
        },
        "kind": "user",
        "methods": {
            "addDomain(uint256,uint256,uint256)": {
                "notice": "Add a colony domain, and its respective local skill under skill with id `_parentSkillId`. New funding pot is created and associated with the domain here."
            },
            "addDomain(uint256,uint256,uint256,string)": {
                "notice": "Add a colony domain, and its respective local skill under skill with id `_parentSkillId`. New funding pot is created and associated with the domain here."
            },
            "addExtensionToNetwork(bytes32,address)": {
                "notice": "Add a new extension/version to the Extensions repository."
            },
            "addLocalSkill()": {
                "notice": "Add a new local skill for the colony. Secured function to authorised members."
            },
            "addNetworkColonyVersion(uint256,address)": {
                "notice": "Adds a new Colony contract version and the address of associated `_resolver` contract. Secured function to authorised members."
            },
            "annotateTransaction(bytes32,string)": {
                "notice": "Emit a metadata string for a transaction"
            },
            "approveExitRecovery()": {
                "notice": "Indicate approval to exit recovery mode. Can only be called by user with recovery role."
            },
            "approveStake(address,uint256,uint256)": {
                "notice": "Allow the _approvee to obligate some amount of tokens as a stake."
            },
            "authority()": {
                "notice": "Get the `ColonyAuthority` for the colony."
            },
            "bootstrapColony(address[],int256[])": {
                "notice": "Allows the colony to bootstrap itself by having initial reputation and token `_amount` assigned to `_users`. This reputation is assigned in the colony-wide domain. Secured function to authorised members."
            },
            "burnTokens(address,uint256)": {
                "notice": "Burn tokens held by the colony. Can only burn tokens held in the root funding pot."
            },
            "cancelExpenditure(uint256)": {
                "notice": "Cancels the expenditure and prevents further editing. Can only be called by expenditure owner."
            },
            "checkNotAdditionalProtectedVariable(uint256)": {
                "notice": "Check whether the supplied slot is a protected variable specific to this contract"
            },
            "claimColonyFunds(address)": {
                "notice": "Move any funds received by the colony in `_token` denomination to the top-level domain pot, siphoning off a small amount to the reward pot. If called against a colony's own token, no fee is taken."
            },
            "claimExpenditurePayout(uint256,uint256,address)": {
                "notice": "Claim the payout for an expenditure slot. Here the network receives a fee from each payout."
            },
            "claimRewardPayout(uint256,uint256[7],bytes,bytes,uint256,bytes32[])": {
                "notice": "Claim the reward payout at `_payoutId`. User needs to provide their reputation and colony-wide reputation which will be proven via Merkle proof inside this function. Can only be called if payout is active, i.e if 60 days have not passed from its creation. Can only be called if next in queue."
            },
            "deobligateStake(address,uint256,uint256)": {
                "notice": "Deobligate the user some amount of tokens, releasing the stake."
            },
            "deprecateDomain(uint256,uint256,uint256,bool)": {
                "notice": "Deprecate a domain, preventing certain actions from happening there"
            },
            "deprecateExtension(bytes32,bool)": {
                "notice": "Set the deprecation of an extension in a colony. Secured function to authorised members."
            },
            "deprecateLocalSkill(uint256,bool)": {
                "notice": "Deprecate a local skill for the colony. Secured function to authorised members."
            },
            "editColony(string)": {
                "notice": "Called to change the metadata associated with a colony. Expected to be a IPFS hash of a JSON blob, but not enforced to any degree by the contracts"
            },
            "editColonyByDelta(string)": {
                "notice": "Called to change the metadata associated with a colony. Expected to be a IPFS hash of a delta to a JSON blob, but not enforced to any degree by the contracts"
            },
            "editDomain(uint256,uint256,uint256,string)": {
                "notice": "Add a colony domain, and its respective local skill under skill with id `_parentSkillId`. New funding pot is created and associated with the domain here."
            },
            "emitDomainReputationPenalty(uint256,uint256,uint256,address,int256)": {
                "notice": "Emit a negative domain reputation update. Available only to Arbitration role holders"
            },
            "emitDomainReputationReward(uint256,address,int256)": {
                "notice": "Emit a positive domain reputation update. Available only to Root role holders"
            },
            "emitSkillReputationPenalty(uint256,address,int256)": {
                "notice": "Emit a negative skill reputation update. Available only to Arbitration role holders in the root domain"
            },
            "emitSkillReputationReward(uint256,address,int256)": {
                "notice": "Emit a positive skill reputation update. Available only to Root role holders"
            },
            "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."
            },
            "finalizeExpenditure(uint256)": {
                "notice": "Finalizes the expenditure and allows for funds to be claimed. Can only be called by expenditure owner."
            },
            "finalizeRewardPayout(uint256)": {
                "notice": "Finalises the reward payout. Allows creation of next reward payouts for token that has been used in `_payoutId`. Can only be called when reward payout cycle is finished i.e when 60 days have passed from its creation."
            },
            "finishUpgrade()": {
                "notice": "A function to be called after an upgrade has been done from v2 to v3."
            },
            "getApproval(address,address,uint256)": {
                "notice": "View an approval to obligate tokens."
            },
            "getCapabilityRoles(bytes4)": {
                "notice": "Gets the bytes32 representation of the roles authorized to call a function"
            },
            "getColonyNetwork()": {
                "notice": "Returns the colony network address set on the Colony."
            },
            "getDomain(uint256)": {
                "notice": "Get a domain by id."
            },
            "getDomainCount()": {
                "notice": "Get the number of domains in the colony."
            },
            "getDomainFromFundingPot(uint256)": {
                "notice": "Get the domain corresponding to a funding pot"
            },
            "getExpenditure(uint256)": {
                "notice": "Returns an existing expenditure."
            },
            "getExpenditureCount()": {
                "notice": "Get the number of expenditures in the colony."
            },
            "getExpenditureSlot(uint256,uint256)": {
                "notice": "Returns an existing expenditure slot."
            },
            "getExpenditureSlotPayout(uint256,uint256,address)": {
                "notice": "Returns an existing expenditure slot's payout for a token."
            },
            "getFundingPot(uint256)": {
                "notice": "Get the non-mapping properties of a pot by id."
            },
            "getFundingPotBalance(uint256,address)": {
                "notice": "Get the `_token` balance of pot with id `_potId`."
            },
            "getFundingPotCount()": {
                "notice": "Get the number of funding pots in the colony."
            },
            "getFundingPotPayout(uint256,address)": {
                "notice": "Get the assigned `_token` payouts of pot with id `_potId`."
            },
            "getMetatransactionNonce(address)": {
                "notice": "Gets the next metatransaction nonce for user that should be used targeting this contract"
            },
            "getNonRewardPotsTotal(address)": {
                "notice": "Get the total amount of tokens `_token` minus amount reserved to be paid to the reputation and token holders as rewards."
            },
            "getObligation(address,address,uint256)": {
                "notice": "View an obligation of tokens."
            },
            "getPayment(uint256)": {
                "notice": "Returns an exiting payment."
            },
            "getPaymentCount()": {
                "notice": "Get the number of payments in the colony."
            },
            "getRewardInverse()": {
                "notice": "Return 1 / the reward to pay out from revenue. e.g. if the fee is 1% (or 0.01), return 100."
            },
            "getRewardPayoutInfo(uint256)": {
                "notice": "Get useful information about specific reward payout."
            },
            "getRootLocalSkill()": {
                "notice": "Get the root local skill id"
            },
            "getTask(uint256)": {
                "notice": "Get a task with id `_id`"
            },
            "getTaskChangeNonce(uint256)": {
                "notice": "Starts from 0 and is incremented on every co-reviewed task change via `executeTaskChange` call."
            },
            "getTaskCount()": {
                "notice": "Get the number of tasks in the colony."
            },
            "getTaskRole(uint256,uint8)": {
                "notice": "Get the `Role` properties back for role `_role` in task `_id`."
            },
            "getTaskWorkRatingSecret(uint256,uint8)": {
                "notice": "Get the rating secret submitted for role `_role` in task `_id`"
            },
            "getTaskWorkRatingSecretsInfo(uint256)": {
                "notice": "Get the `ColonyStorage.RatingSecrets` information for task `_id`."
            },
            "getToken()": {
                "notice": "Get the colony token."
            },
            "getTokenApproval(address,address)": {
                "notice": "Get the current approval amount"
            },
            "getTotalTokenApproval(address)": {
                "notice": "Get the current total approval amount across all spenders"
            },
            "getUserRoles(address,uint256)": {
                "notice": "Gets the bytes32 representation of the roles for a user in a given domain"
            },
            "hasInheritedUserRole(address,uint256,uint8,uint256,uint256)": {
                "notice": "Check whether a given user has a given role for the colony, in a child domain. Calls the function of the same name on the colony's authority contract and an internal inheritance validator function"
            },
            "hasUserRole(address,uint256,uint8)": {
                "notice": "Check whether a given user has a given role for the colony. Calls the function of the same name on the colony's authority contract."
            },
            "initialiseColony(address,address)": {
                "notice": "Called once when the colony is created to initialise certain storage slot values."
            },
            "initialiseRootLocalSkill()": {
                "notice": "Initialise the local skill tree for the colony."
            },
            "installExtension(bytes32,uint256)": {
                "notice": "Install an extension to the colony. Secured function to authorised members."
            },
            "isInRecoveryMode()": {
                "notice": "Is colony network in recovery mode."
            },
            "lockExpenditure(uint256)": {
                "notice": "Locks the expenditure and prevents further editing. Can only be called by expenditure owner."
            },
            "lockToken()": {
                "notice": "Lock the colony's token. Can only be called by a network-managed extension."
            },
            "makeArbitraryTransaction(address,bytes)": {
                "notice": "@deprecatedExecute arbitrary transaction on behalf of the Colony"
            },
            "makeArbitraryTransactions(address[],bytes[],bool)": {
                "notice": "Execute arbitrary transactions on behalf of the Colony in series"
            },
            "makeExpenditure(uint256,uint256,uint256)": {
                "notice": "Add a new expenditure in the colony. Secured function to authorised members."
            },
            "makeSingleArbitraryTransaction(address,bytes)": {
                "notice": "Executes a single arbitrary transaction"
            },
            "mintTokens(uint256)": {
                "notice": "Mint `_wad` amount of colony tokens. Secured function to authorised members."
            },
            "mintTokensFor(address,uint256)": {
                "notice": "Mint `_wad` amount of colony tokens and send to `_guy`. Secured function to authorised members."
            },
            "mintTokensForColonyNetwork(uint256)": {
                "notice": "Mints CLNY in the Meta Colony and transfers them to the colony network. Only allowed to be called on the Meta Colony by the colony network."
            },
            "moveFundsBetweenPots(uint256,uint256,uint256,uint256,uint256,uint256,address)": {
                "notice": "@deprecatedMove a given amount: `_amount` of `_token` funds from funding pot with id `_fromPot` to one with id `_toPot`."
            },
            "moveFundsBetweenPots(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address)": {
                "notice": "Move a given amount: `_amount` of `_token` funds from funding pot with id `_fromPot` to one with id `_toPot`."
            },
            "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."
            },
            "obligateStake(address,uint256,uint256)": {
                "notice": "Obligate the user some amount of tokens as a stake."
            },
            "owner()": {
                "notice": "Get the colony `owner` address. This should be address(0x0) at all times."
            },
            "registerColonyLabel(string,string)": {
                "notice": "Register colony's ENS label."
            },
            "removeRecoveryRole(address)": {
                "notice": "Remove colony recovery role. Can only be called by root role."
            },
            "setAdministrationRole(uint256,uint256,address,uint256,bool)": {
                "notice": "Set new colony admin role. Can be called by root role or architecture role."
            },
            "setArbitrationRole(uint256,uint256,address,uint256,bool)": {
                "notice": "Set new colony arbitration role. Can be called by root role or architecture role."
            },
            "setArchitectureRole(uint256,uint256,address,uint256,bool)": {
                "notice": "Set new colony architecture role. Can be called by root role or architecture role."
            },
            "setDefaultGlobalClaimDelay(uint256)": {
                "notice": "Update the default global claim delay for expenditures"
            },
            "setExpenditureClaimDelay(uint256,uint256,uint256)": {
                "notice": "@deprecatedSets the claim delay on an expenditure slot. Can only be called by expenditure owner."
            },
            "setExpenditureClaimDelays(uint256,uint256[],uint256[])": {
                "notice": "Sets the claim delays in given expenditure slots. Can only be called by expenditure owner."
            },
            "setExpenditureMetadata(uint256,string)": {
                "notice": "Sets the metadata for an expenditure. Can only be called by expenditure owner."
            },
            "setExpenditureMetadata(uint256,uint256,uint256,string)": {
                "notice": "Sets the metadata for an expenditure. Can only be called by Arbitration role."
            },
            "setExpenditurePayout(uint256,uint256,address,uint256)": {
                "notice": "@deprecatedSet the token payout on an expenditure slot. Can only be called by expenditure owner."
            },
            "setExpenditurePayout(uint256,uint256,uint256,uint256,address,uint256)": {
                "notice": "Set the token payout in a given expenditure slot. Can only be called by an Arbitration user."
            },
            "setExpenditurePayoutModifiers(uint256,uint256[],int256[])": {
                "notice": "Sets the payout modifiers in given expenditure slots. Can only be called by expenditure owner."
            },
            "setExpenditurePayouts(uint256,uint256[],address,uint256[])": {
                "notice": "Set the token payouts in given expenditure slots. Can only be called by expenditure owner."
            },
            "setExpenditureRecipient(uint256,uint256,address)": {
                "notice": "@deprecatedSets the recipient on an expenditure slot. Can only be called by expenditure owner."
            },
            "setExpenditureRecipients(uint256,uint256[],address[])": {
                "notice": "Sets the recipients in given expenditure slots. Can only be called by expenditure owner."
            },
            "setExpenditureSkill(uint256,uint256,uint256)": {
                "notice": "@deprecatedSets the skill on an expenditure slot. Can only be called by expenditure owner."
            },
            "setExpenditureSkills(uint256,uint256[],uint256[])": {
                "notice": "Sets the skill on an expenditure slot. Can only be called by expenditure owner."
            },
            "setExpenditureState(uint256,uint256,uint256,uint256,bool[],bytes32[],bytes32)": {
                "notice": "Set arbitrary state on an expenditure slot. Can only be called by Arbitration role."
            },
            "setExpenditureValues(uint256,uint256[],address[],uint256[],uint256[],uint256[],uint256[],uint256[],int256[],address[],uint256[][],uint256[][])": {
                "notice": "Set many values of an expenditure simultaneously. Can only be called by expenditure owner."
            },
            "setFundingRole(uint256,uint256,address,uint256,bool)": {
                "notice": "Set new colony funding role. Can be called by root role or architecture role."
            },
            "setNetworkFeeInverse(uint256)": {
                "notice": "Set the Colony Network fee inverse amount."
            },
            "setPayoutWhitelist(address,bool)": {
                "notice": "Set a token's status in the payout whitelist on the Colony Network"
            },
            "setRecoveryRole(address)": {
                "notice": "Set new colony recovery role. Can be called by root."
            },
            "setReputationMiningCycleReward(uint256)": {
                "notice": "Called to set the total per-cycle reputation reward, which will be split between all miners."
            },
            "setRewardInverse(uint256)": {
                "notice": "Set the reward inverse to pay out from revenue. e.g. if the fee is 1% (or 0.01), set 100."
            },
            "setRootRole(address,bool)": {
                "notice": "Set new colony root role. Can be called by root role only."
            },
            "setStorageSlotRecovery(uint256,bytes32)": {
                "notice": "Update value of arbitrary storage variable. Can only be called by user with recovery role."
            },
            "setUserRoles(uint256,uint256,address,uint256,bytes32)": {
                "notice": "Set several roles in one transaction. Can be called by root role or architecture role."
            },
            "startNextRewardPayout(address,bytes,bytes,uint256,bytes32[])": {
                "notice": "Start next reward payout for `_token`. All funds in the reward pot for `_token` will become unavailable.Add a new payment in the colony. Can only be called by users with root permission. All tokens will be locked, and can be unlocked by calling `waiveRewardPayout` or `claimRewardPayout`."
            },
            "transferExpenditure(uint256,address)": {
                "notice": "Updates the expenditure owner. Can only be called by expenditure owner."
            },
            "transferExpenditureViaArbitration(uint256,uint256,uint256,address)": {
                "notice": "@deprecatedUpdates the expenditure owner. Can only be called by Arbitration role."
            },
            "transferStake(uint256,uint256,address,address,uint256,uint256,address)": {
                "notice": "Transfer some amount of obligated tokens. Can be called by the arbitration role."
            },
            "uninstallExtension(bytes32)": {
                "notice": "Uninstall an extension from a colony. Secured function to authorised members."
            },
            "unlockToken()": {
                "notice": "unlock the native colony token, if possible"
            },
            "unlockTokenForUser(address,uint256)": {
                "notice": "Unlock the colony's token for a user. Can only be called by a network-managed extension."
            },
            "updateApprovalAmount(address,address)": {
                "notice": "Update the internal bookkeeping around external ERC20 approvals"
            },
            "updateColonyOrbitDB(string)": {
                "notice": "Update a colony's orbitdb address. Can only be called by a colony with a registered subdomain"
            },
            "upgrade(uint256)": {
                "notice": "Upgrades a colony to a new Colony contract version `_newVersion`."
            },
            "upgradeExtension(bytes32,uint256)": {
                "notice": "Upgrade an extension in a colony. Secured function to authorised members."
            },
            "userCanSetRoles(address,uint256,uint256,uint256)": {
                "notice": "Check whether a given user can modify roles in the target domain `_childDomainId`. Mostly a convenience function to provide a uniform interface for extension contracts validating permissions"
            },
            "verifyReputationProof(bytes,bytes,uint256,bytes32[])": {
                "notice": "Helper function that can be used by a client to verify the correctness of a patricia proof they have been supplied with."
            },
            "version()": {
                "notice": "Get the Colony contract version. Starts from 1 and is incremented with every deployed contract change."
            }
        },
        "version": 1
    }
}