{
    "contractName": "FundingQueue",
    "abi": [
        {
            "anonymous": false,
            "inputs": [],
            "name": "ExtensionInitialised",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "authority",
                    "type": "address"
                }
            ],
            "name": "LogSetAuthority",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "LogSetOwner",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address payable",
                    "name": "relayerAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "functionSignature",
                    "type": "bytes"
                }
            ],
            "name": "MetaTransactionExecuted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "newPrevId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "backing",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "prevBacking",
                    "type": "uint256"
                }
            ],
            "name": "ProposalBacked",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                }
            ],
            "name": "ProposalCancelled",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                }
            ],
            "name": "ProposalCompleted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "fromPot",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "toPot",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "ProposalCreated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "ProposalPinged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                }
            ],
            "name": "ProposalStakeReclaimed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "domainTotalRep",
                    "type": "uint256"
                }
            ],
            "name": "ProposalStaked",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "authority",
            "outputs": [
                {
                    "internalType": "contract DSAuthority",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "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": [
                {
                    "internalType": "bytes4",
                    "name": "_sig",
                    "type": "bytes4"
                }
            ],
            "name": "getCapabilityRoles",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getChainId",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getColony",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getDeprecated",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes[]",
                    "name": "data",
                    "type": "bytes[]"
                }
            ],
            "name": "multicall",
            "outputs": [
                {
                    "internalType": "bytes[]",
                    "name": "results",
                    "type": "bytes[]"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract DSAuthority",
                    "name": "authority_",
                    "type": "address"
                }
            ],
            "name": "setAuthority",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner_",
                    "type": "address"
                }
            ],
            "name": "setOwner",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_owner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_nonce",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_chainId",
                    "type": "uint256"
                },
                {
                    "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": "verify",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "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": [],
            "name": "identifier",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "_identifier",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "version",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "_version",
                    "type": "uint256"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_colony",
                    "type": "address"
                }
            ],
            "name": "install",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "finishUpgrade",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bool",
                    "name": "_deprecated",
                    "type": "bool"
                }
            ],
            "name": "deprecate",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "uninstall",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "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": "_totalRequested",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "createProposal",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_prevId",
                    "type": "uint256"
                }
            ],
            "name": "cancelProposal",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "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": "stakeProposal",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_backing",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_currPrevId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_newPrevId",
                    "type": "uint256"
                },
                {
                    "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": "backProposal",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "pingProposal",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "reclaimStake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getProposalCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getProposal",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "enum FundingQueue.ProposalState",
                            "name": "state",
                            "type": "uint8"
                        },
                        {
                            "internalType": "address",
                            "name": "creator",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "token",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "domainId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "domainTotalRep",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "fromPot",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "toPot",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "fromChildSkillIndex",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "toChildSkillIndex",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "totalRequested",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "totalPaid",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastUpdated",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "totalSupport",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct FundingQueue.Proposal",
                    "name": "proposal",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "_supporter",
                    "type": "address"
                }
            ],
            "name": "getSupport",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "support",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_id",
                    "type": "uint256"
                }
            ],
            "name": "getNextProposalId",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nextId",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "devdoc": {
        "kind": "dev",
        "methods": {
            "backProposal(uint256,uint256,uint256,uint256,bytes,bytes,uint256,bytes32[])": {
                "params": {
                    "_backing": "The amount of backing to give the proposal (up to user's reputation)",
                    "_branchMask": "The branchmask of the proof",
                    "_currPrevId": "The current previous proposal in the list",
                    "_id": "The proposal Id",
                    "_key": "A reputation hash tree key, of the caller's reputation in _domainId",
                    "_newPrevId": "The new previous proposal after we re-arrange",
                    "_siblings": "The siblings of the proof",
                    "_value": "Reputation value indicating the caller's reputation in _domainId"
                }
            },
            "cancelProposal(uint256,uint256)": {
                "params": {
                    "_id": "The proposal Id",
                    "_prevId": "The id of the preceding proposal in the linked list"
                }
            },
            "createProposal(uint256,uint256,uint256,uint256,uint256,uint256,address)": {
                "params": {
                    "_domainId": "The domain the extension has the funding permission",
                    "_fromChildSkillIndex": "The index of the fromPot's domain in _domainId.children[]",
                    "_fromPot": "Funding pot id providing the funds",
                    "_toChildSkillIndex": "The index of the toPot's domain in _domainId.children[]",
                    "_toPot": "Funding pot id receiving the funds",
                    "_token": "The token being transferred",
                    "_totalRequested": "The total amount being requested"
                }
            },
            "deprecate(bool)": {
                "params": {
                    "_deprecated": "Indicates whether the extension should be deprecated or undeprecated"
                }
            },
            "executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)": {
                "params": {
                    "_payload": "Function call to make via meta transaction",
                    "_sigR": "R part of the signature",
                    "_sigS": "S part of the signature",
                    "_sigV": "V part of the signature",
                    "_user": "Address of user trying to do meta transaction"
                }
            },
            "getMetatransactionNonce(address)": {
                "params": {
                    "userAddress": "The user's address"
                },
                "returns": {
                    "nonce": "The nonce"
                }
            },
            "getNextProposalId(uint256)": {
                "params": {
                    "_id": "The proposal Id"
                },
                "returns": {
                    "nextId": "The next proposal Id in the list"
                }
            },
            "getProposal(uint256)": {
                "params": {
                    "_id": "The proposal Id"
                },
                "returns": {
                    "proposal": "The proposal struct"
                }
            },
            "getProposalCount()": {
                "returns": {
                    "count": "The count"
                }
            },
            "getSupport(uint256,address)": {
                "params": {
                    "_id": "The proposal Id",
                    "_supporter": "The supporter"
                },
                "returns": {
                    "support": "The support amount"
                }
            },
            "identifier()": {
                "returns": {
                    "_identifier": "The extension's identifier"
                }
            },
            "install(address)": {
                "params": {
                    "_colony": "The colony in which the extension holds permissions"
                }
            },
            "pingProposal(uint256)": {
                "params": {
                    "_id": "The proposal Id"
                }
            },
            "reclaimStake(uint256)": {
                "params": {
                    "_id": "The proposal Id"
                }
            },
            "stakeProposal(uint256,bytes,bytes,uint256,bytes32[])": {
                "params": {
                    "_branchMask": "The branchmask of the proof",
                    "_id": "The proposal Id",
                    "_key": "A reputation hash tree key, of the total reputation in _domainId",
                    "_siblings": "The siblings of the proof",
                    "_value": "Reputation value indicating the total reputation in _domainId"
                }
            },
            "version()": {
                "returns": {
                    "_version": "The extension's version number"
                }
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {
            "backProposal(uint256,uint256,uint256,uint256,bytes,bytes,uint256,bytes32[])": {
                "notice": "Back a funding proposal and advance it along the list"
            },
            "cancelProposal(uint256,uint256)": {
                "notice": "Cancel a funding proposal and remove from linked list"
            },
            "createProposal(uint256,uint256,uint256,uint256,uint256,uint256,address)": {
                "notice": "Create a new funding proposal"
            },
            "deprecate(bool)": {
                "notice": "Called when deprecating (or undeprecating) the extension"
            },
            "executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)": {
                "notice": "Main function to be called when user wants to execute meta transaction. The actual function to be called should be passed as param with name functionSignature Here the basic signature recovery is being used. Signature is expected to be generated using personal_sign method."
            },
            "finishUpgrade()": {
                "notice": "Called when upgrading the extension"
            },
            "getMetatransactionNonce(address)": {
                "notice": "Gets the next nonce for a meta-transaction"
            },
            "getNextProposalId(uint256)": {
                "notice": "Gets the id of the next proposal in the list"
            },
            "getProposal(uint256)": {
                "notice": "Get the proposal struct for a given proposal"
            },
            "getProposalCount()": {
                "notice": "Get the total number of proposals"
            },
            "getSupport(uint256,address)": {
                "notice": "Gets the reputation support from a user to a proposal"
            },
            "identifier()": {
                "notice": "Returns the identifier of the extension"
            },
            "install(address)": {
                "notice": "Configures the extension"
            },
            "pingProposal(uint256)": {
                "notice": "Transfer the marginal funds"
            },
            "reclaimStake(uint256)": {
                "notice": "Reclaim the stake after the proposal is funded"
            },
            "stakeProposal(uint256,bytes,bytes,uint256,bytes32[])": {
                "notice": "Stake a funding proposal"
            },
            "uninstall()": {
                "notice": "Called when uninstalling the extension"
            },
            "version()": {
                "notice": "Returns the version of the extension"
            }
        },
        "version": 1
    }
}