{
  "abi": [
    {
      "inputs": [],
      "name": "Module_OnlyOracle",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_responseId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "enum IOracle.DisputeStatus",
          "name": "_status",
          "type": "uint8"
        }
      ],
      "name": "DisputeStatusChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "RequestFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_responseId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        }
      ],
      "name": "ResponseDisputed",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "decodeRequestData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "treeData",
              "type": "bytes"
            },
            {
              "internalType": "bytes32[]",
              "name": "leavesToInsert",
              "type": "bytes32[]"
            },
            {
              "internalType": "contract ITreeVerifier",
              "name": "treeVerifier",
              "type": "address"
            },
            {
              "internalType": "contract IAccountingExtension",
              "name": "accountingExtension",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "bondToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "bondSize",
              "type": "uint256"
            }
          ],
          "internalType": "struct IRootVerificationModule.RequestParameters",
          "name": "_params",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "disputeEscalated",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_responseId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        }
      ],
      "name": "disputeResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "createdAt",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "disputer",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "responseId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "requestId",
              "type": "bytes32"
            },
            {
              "internalType": "enum IOracle.DisputeStatus",
              "name": "status",
              "type": "uint8"
            }
          ],
          "internalType": "struct IOracle.Dispute",
          "name": "_dispute",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "finalizeRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "moduleName",
      "outputs": [
        {
          "internalType": "string",
          "name": "_moduleName",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "createdAt",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "disputer",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "responseId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "requestId",
              "type": "bytes32"
            },
            {
              "internalType": "enum IOracle.DisputeStatus",
              "name": "status",
              "type": "uint8"
            }
          ],
          "internalType": "struct IOracle.Dispute",
          "name": "_dispute",
          "type": "tuple"
        }
      ],
      "name": "onDisputeStatusChange",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "requestData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "_requestData",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "setupRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "decodeRequestData(bytes32)": "4d610a46",
    "disputeEscalated(bytes32)": "7fadb88d",
    "disputeResponse(bytes32,bytes32,address,address)": "98660c18",
    "finalizeRequest(bytes32,address)": "309de607",
    "moduleName()": "93f0899a",
    "onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))": "34837c29",
    "oracle()": "7dc0d1d0",
    "requestData(bytes32)": "3661346b",
    "setupRequest(bytes32,bytes)": "2e76be2a"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Module_OnlyOracle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_responseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOracle.DisputeStatus\",\"name\":\"_status\",\"type\":\"uint8\"}],\"name\":\"DisputeStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"RequestFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_responseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"}],\"name\":\"ResponseDisputed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"decodeRequestData\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"treeData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"leavesToInsert\",\"type\":\"bytes32[]\"},{\"internalType\":\"contract ITreeVerifier\",\"name\":\"treeVerifier\",\"type\":\"address\"},{\"internalType\":\"contract IAccountingExtension\",\"name\":\"accountingExtension\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"bondToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bondSize\",\"type\":\"uint256\"}],\"internalType\":\"struct IRootVerificationModule.RequestParameters\",\"name\":\"_params\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"disputeEscalated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_responseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"}],\"name\":\"disputeResponse\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"responseId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IOracle.DisputeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IOracle.Dispute\",\"name\":\"_dispute\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"finalizeRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moduleName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_moduleName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"responseId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IOracle.DisputeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IOracle.Dispute\",\"name\":\"_dispute\",\"type\":\"tuple\"}],\"name\":\"onDisputeStatusChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"requestData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"_requestData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"setupRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DisputeStatusChanged(bytes32,bytes32,address,address,uint8)\":{\"params\":{\"_disputer\":\"The address of the disputed\",\"_proposer\":\"The address of the proposer\",\"_requestId\":\"The id of the request\",\"_responseId\":\"The id of the response\",\"_status\":\"The new status of the dispute\"}},\"RequestFinalized(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request that was finalized\"}},\"ResponseDisputed(bytes32,bytes32,address,address)\":{\"params\":{\"_disputer\":\"The address of the disputed\",\"_proposer\":\"The address of the proposer\",\"_requestId\":\"The id of the request created\",\"_responseId\":\"The id of the response disputed\"}}},\"kind\":\"dev\",\"methods\":{\"decodeRequestData(bytes32)\":{\"params\":{\"_requestId\":\"The ID of the request\"},\"returns\":{\"_params\":\"The struct containing the parameters for the request\"}},\"disputeEscalated(bytes32)\":{\"details\":\"This function is present to comply with the module interface but it is not implemented since this is a pre-dispute module.\"},\"disputeResponse(bytes32,bytes32,address,address)\":{\"details\":\"Since this is a pre-dispute module, the dispute status is updated after checking if the disputed response is indeed wrong, since it is calculated on dispute.\",\"params\":{\"_disputer\":\"The user who is disputing the response\",\"_proposer\":\"The proposer of the response being disputed\",\"_requestId\":\"The id of the request from which the response is being disputed\",\"_responseId\":\"The id of the response being disputed\"},\"returns\":{\"_dispute\":\"The dispute of the current response with the updated status\"}},\"finalizeRequest(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request being finalized\"}},\"moduleName()\":{\"returns\":{\"_moduleName\":\"The name of the module.\"}},\"onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))\":{\"details\":\"The correct root is retrieved from storage and compared to the proposed root. If the dispute is won, the disputer is paid. In both cases, the request is finalized.\",\"params\":{\"_dispute\":\"The dispute of the current response\"}},\"oracle()\":{\"returns\":{\"_oracle\":\"The address of the oracle\"}},\"requestData(bytes32)\":{\"params\":{\"_requestId\":\"The id of the request\"},\"returns\":{\"_requestData\":\"The data of the request\"}},\"setupRequest(bytes32,bytes)\":{\"params\":{\"_data\":\"The data of the request\",\"_requestId\":\"The ID of the request\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Module_OnlyOracle()\":[{\"notice\":\"Thrown when the caller is not the oracle\"}]},\"events\":{\"DisputeStatusChanged(bytes32,bytes32,address,address,uint8)\":{\"notice\":\"Emitted when a dispute status is updated\"},\"RequestFinalized(bytes32,address)\":{\"notice\":\"Emitted when a request is finalized\"},\"ResponseDisputed(bytes32,bytes32,address,address)\":{\"notice\":\"Emitted when a response is disputed\"}},\"kind\":\"user\",\"methods\":{\"decodeRequestData(bytes32)\":{\"notice\":\"Returns the decoded data for a request\"},\"disputeResponse(bytes32,bytes32,address,address)\":{\"notice\":\"Calculates the correct root and compares it to the proposed one.\"},\"finalizeRequest(bytes32,address)\":{\"notice\":\"Finalizes a given request and executes any additional logic set by the chosen modules\"},\"moduleName()\":{\"notice\":\"Returns the name of the module.\"},\"onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))\":{\"notice\":\"Updates the status of the dispute and resolves it by proposing the correct root as a response and finalizing the request.\"},\"oracle()\":{\"notice\":\"Returns the address of the oracle\"},\"requestData(bytes32)\":{\"notice\":\"Returns the data of the request associated with the provided id\"},\"setupRequest(bytes32,bytes)\":{\"notice\":\"Stores the request data and runs module-specific hooks\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/interfaces/modules/dispute/IRootVerificationModule.sol\":\"IRootVerificationModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@defi-wonderland/=node_modules/@defi-wonderland/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":solmate/=node_modules/solmate/src/\"]},\"sources\":{\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol\":{\"keccak256\":\"0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f\",\"dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol\":{\"keccak256\":\"0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823\",\"dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol\":{\"keccak256\":\"0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d\",\"dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol\":{\"keccak256\":\"0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e\",\"dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol\":{\"keccak256\":\"0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d\",\"dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol\":{\"keccak256\":\"0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67\",\"dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol\":{\"keccak256\":\"0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf\",\"dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"solidity/interfaces/ITreeVerifier.sol\":{\"keccak256\":\"0xa972e97e192769f790d29df93d4c20c85a4e2a71a4944b876af8f878e776dae3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dd99fd1f44780363b631b139038b6e4bed18384078588dec0dc367f4efac0e\",\"dweb:/ipfs/QmSATnXhsANXpLPpbr6XNuoqx2yURHccco4z4iGHiq92je\"]},\"solidity/interfaces/extensions/IAccountingExtension.sol\":{\"keccak256\":\"0x31b990f92e67ce2b480ca97fcc54d44dddaa82fa60259439d8556bfbb7963d0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23e6ef2026bf40ef58f625b7377c70e4988902ae14df333e9be35129a57a87f0\",\"dweb:/ipfs/QmW1RfXvujkVHqXazdeTKshba9rX6kzSCRfZKBwLi38Ue5\"]},\"solidity/interfaces/modules/dispute/IRootVerificationModule.sol\":{\"keccak256\":\"0x5c8d3c5dc59e3a11edcc6d0dea21343f8af58b8578b10eb4ba6435a0f098528d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6d1305ec2a0e4b7bc6d2dee4a411a5a6436b5fd182aefcdcf36be898ba35c92\",\"dweb:/ipfs/QmdfRFXDpE8GxpJVVc5oHynyaYbvw3aTLyeBkYPtDaZsBa\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.19+commit.7dd6d404"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [],
          "type": "error",
          "name": "Module_OnlyOracle"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "_responseId",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "_disputer",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "_proposer",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "enum IOracle.DisputeStatus",
              "name": "_status",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "DisputeStatusChanged",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "RequestFinalized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "_responseId",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "_disputer",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "_proposer",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "ResponseDisputed",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "decodeRequestData",
          "outputs": [
            {
              "internalType": "struct IRootVerificationModule.RequestParameters",
              "name": "_params",
              "type": "tuple",
              "components": [
                {
                  "internalType": "bytes",
                  "name": "treeData",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes32[]",
                  "name": "leavesToInsert",
                  "type": "bytes32[]"
                },
                {
                  "internalType": "contract ITreeVerifier",
                  "name": "treeVerifier",
                  "type": "address"
                },
                {
                  "internalType": "contract IAccountingExtension",
                  "name": "accountingExtension",
                  "type": "address"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "bondToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "bondSize",
                  "type": "uint256"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "disputeEscalated"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "_responseId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "_disputer",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_proposer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "disputeResponse",
          "outputs": [
            {
              "internalType": "struct IOracle.Dispute",
              "name": "_dispute",
              "type": "tuple",
              "components": [
                {
                  "internalType": "uint256",
                  "name": "createdAt",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "disputer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "responseId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "requestId",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum IOracle.DisputeStatus",
                  "name": "status",
                  "type": "uint8"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "finalizeRequest"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "moduleName",
          "outputs": [
            {
              "internalType": "string",
              "name": "_moduleName",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            },
            {
              "internalType": "struct IOracle.Dispute",
              "name": "_dispute",
              "type": "tuple",
              "components": [
                {
                  "internalType": "uint256",
                  "name": "createdAt",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "disputer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "responseId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "requestId",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum IOracle.DisputeStatus",
                  "name": "status",
                  "type": "uint8"
                }
              ]
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "onDisputeStatusChange"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "oracle",
          "outputs": [
            {
              "internalType": "address",
              "name": "_oracle",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "requestData",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "_requestData",
              "type": "bytes"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setupRequest"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "decodeRequestData(bytes32)": {
            "params": {
              "_requestId": "The ID of the request"
            },
            "returns": {
              "_params": "The struct containing the parameters for the request"
            }
          },
          "disputeEscalated(bytes32)": {
            "details": "This function is present to comply with the module interface but it is not implemented since this is a pre-dispute module."
          },
          "disputeResponse(bytes32,bytes32,address,address)": {
            "details": "Since this is a pre-dispute module, the dispute status is updated after checking if the disputed response is indeed wrong, since it is calculated on dispute.",
            "params": {
              "_disputer": "The user who is disputing the response",
              "_proposer": "The proposer of the response being disputed",
              "_requestId": "The id of the request from which the response is being disputed",
              "_responseId": "The id of the response being disputed"
            },
            "returns": {
              "_dispute": "The dispute of the current response with the updated status"
            }
          },
          "finalizeRequest(bytes32,address)": {
            "params": {
              "_finalizer": "The address that initiated the finalization",
              "_requestId": "The ID of the request being finalized"
            }
          },
          "moduleName()": {
            "returns": {
              "_moduleName": "The name of the module."
            }
          },
          "onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))": {
            "details": "The correct root is retrieved from storage and compared to the proposed root. If the dispute is won, the disputer is paid. In both cases, the request is finalized.",
            "params": {
              "_dispute": "The dispute of the current response"
            }
          },
          "oracle()": {
            "returns": {
              "_oracle": "The address of the oracle"
            }
          },
          "requestData(bytes32)": {
            "params": {
              "_requestId": "The id of the request"
            },
            "returns": {
              "_requestData": "The data of the request"
            }
          },
          "setupRequest(bytes32,bytes)": {
            "params": {
              "_data": "The data of the request",
              "_requestId": "The ID of the request"
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "decodeRequestData(bytes32)": {
            "notice": "Returns the decoded data for a request"
          },
          "disputeResponse(bytes32,bytes32,address,address)": {
            "notice": "Calculates the correct root and compares it to the proposed one."
          },
          "finalizeRequest(bytes32,address)": {
            "notice": "Finalizes a given request and executes any additional logic set by the chosen modules"
          },
          "moduleName()": {
            "notice": "Returns the name of the module."
          },
          "onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))": {
            "notice": "Updates the status of the dispute and resolves it by proposing the correct root as a response and finalizing the request."
          },
          "oracle()": {
            "notice": "Returns the address of the oracle"
          },
          "requestData(bytes32)": {
            "notice": "Returns the data of the request associated with the provided id"
          },
          "setupRequest(bytes32,bytes)": {
            "notice": "Stores the request data and runs module-specific hooks"
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@defi-wonderland/=node_modules/@defi-wonderland/",
        "@openzeppelin/=node_modules/@openzeppelin/",
        "ds-test/=node_modules/ds-test/src/",
        "forge-std/=node_modules/forge-std/src/",
        "solmate/=node_modules/solmate/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "solidity/interfaces/modules/dispute/IRootVerificationModule.sol": "IRootVerificationModule"
      },
      "libraries": {}
    },
    "sources": {
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol": {
        "keccak256": "0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05",
        "urls": [
          "bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f",
          "dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol": {
        "keccak256": "0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf",
        "urls": [
          "bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823",
          "dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol": {
        "keccak256": "0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4",
        "urls": [
          "bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d",
          "dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol": {
        "keccak256": "0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e",
        "urls": [
          "bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e",
          "dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol": {
        "keccak256": "0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032",
        "urls": [
          "bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d",
          "dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol": {
        "keccak256": "0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6",
        "urls": [
          "bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67",
          "dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol": {
        "keccak256": "0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b",
        "urls": [
          "bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf",
          "dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305",
        "urls": [
          "bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5",
          "dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/ITreeVerifier.sol": {
        "keccak256": "0xa972e97e192769f790d29df93d4c20c85a4e2a71a4944b876af8f878e776dae3",
        "urls": [
          "bzz-raw://42dd99fd1f44780363b631b139038b6e4bed18384078588dec0dc367f4efac0e",
          "dweb:/ipfs/QmSATnXhsANXpLPpbr6XNuoqx2yURHccco4z4iGHiq92je"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/extensions/IAccountingExtension.sol": {
        "keccak256": "0x31b990f92e67ce2b480ca97fcc54d44dddaa82fa60259439d8556bfbb7963d0e",
        "urls": [
          "bzz-raw://23e6ef2026bf40ef58f625b7377c70e4988902ae14df333e9be35129a57a87f0",
          "dweb:/ipfs/QmW1RfXvujkVHqXazdeTKshba9rX6kzSCRfZKBwLi38Ue5"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/modules/dispute/IRootVerificationModule.sol": {
        "keccak256": "0x5c8d3c5dc59e3a11edcc6d0dea21343f8af58b8578b10eb4ba6435a0f098528d",
        "urls": [
          "bzz-raw://d6d1305ec2a0e4b7bc6d2dee4a411a5a6436b5fd182aefcdcf36be898ba35c92",
          "dweb:/ipfs/QmdfRFXDpE8GxpJVVc5oHynyaYbvw3aTLyeBkYPtDaZsBa"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/interfaces/modules/dispute/IRootVerificationModule.sol",
    "id": 43203,
    "exportedSymbols": {
      "IAccountingExtension": [
        42580
      ],
      "IDisputeModule": [
        2346
      ],
      "IERC20": [
        2822
      ],
      "IOracle": [
        2282
      ],
      "IRootVerificationModule": [
        43202
      ],
      "ITreeVerifier": [
        42377
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:3687:65",
    "nodes": [
      {
        "id": 43133,
        "nodeType": "PragmaDirective",
        "src": "32:24:65",
        "nodes": [],
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 43135,
        "nodeType": "ImportDirective",
        "src": "58:70:65",
        "nodes": [],
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 43203,
        "sourceUnit": 2823,
        "symbolAliases": [
          {
            "foreign": {
              "id": 43134,
              "name": "IERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2822,
              "src": "66:6:65",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 43137,
        "nodeType": "ImportDirective",
        "src": "129:96:65",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 43203,
        "sourceUnit": 2283,
        "symbolAliases": [
          {
            "foreign": {
              "id": 43136,
              "name": "IOracle",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2282,
              "src": "137:7:65",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 43139,
        "nodeType": "ImportDirective",
        "src": "226:128:65",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 43203,
        "sourceUnit": 2347,
        "symbolAliases": [
          {
            "foreign": {
              "id": 43138,
              "name": "IDisputeModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2346,
              "src": "234:14:65",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 43141,
        "nodeType": "ImportDirective",
        "src": "356:54:65",
        "nodes": [],
        "absolutePath": "solidity/interfaces/ITreeVerifier.sol",
        "file": "../../ITreeVerifier.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 43203,
        "sourceUnit": 42378,
        "symbolAliases": [
          {
            "foreign": {
              "id": 43140,
              "name": "ITreeVerifier",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 42377,
              "src": "364:13:65",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 43143,
        "nodeType": "ImportDirective",
        "src": "411:79:65",
        "nodes": [],
        "absolutePath": "solidity/interfaces/extensions/IAccountingExtension.sol",
        "file": "../../extensions/IAccountingExtension.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 43203,
        "sourceUnit": 42581,
        "symbolAliases": [
          {
            "foreign": {
              "id": 43142,
              "name": "IAccountingExtension",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 42580,
              "src": "419:20:65",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 43202,
        "nodeType": "ContractDefinition",
        "src": "861:2857:65",
        "nodes": [
          {
            "id": 43162,
            "nodeType": "StructDefinition",
            "src": "1569:202:65",
            "nodes": [],
            "canonicalName": "IRootVerificationModule.RequestParameters",
            "members": [
              {
                "constant": false,
                "id": 43147,
                "mutability": "mutable",
                "name": "treeData",
                "nameLocation": "1606:8:65",
                "nodeType": "VariableDeclaration",
                "scope": 43162,
                "src": "1600:14:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 43146,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1600:5:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 43150,
                "mutability": "mutable",
                "name": "leavesToInsert",
                "nameLocation": "1630:14:65",
                "nodeType": "VariableDeclaration",
                "scope": 43162,
                "src": "1620:24:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 43148,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 43149,
                  "nodeType": "ArrayTypeName",
                  "src": "1620:9:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 43153,
                "mutability": "mutable",
                "name": "treeVerifier",
                "nameLocation": "1664:12:65",
                "nodeType": "VariableDeclaration",
                "scope": 43162,
                "src": "1650:26:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_ITreeVerifier_$42377",
                  "typeString": "contract ITreeVerifier"
                },
                "typeName": {
                  "id": 43152,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 43151,
                    "name": "ITreeVerifier",
                    "nameLocations": [
                      "1650:13:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 42377,
                    "src": "1650:13:65"
                  },
                  "referencedDeclaration": 42377,
                  "src": "1650:13:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITreeVerifier_$42377",
                    "typeString": "contract ITreeVerifier"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 43156,
                "mutability": "mutable",
                "name": "accountingExtension",
                "nameLocation": "1703:19:65",
                "nodeType": "VariableDeclaration",
                "scope": 43162,
                "src": "1682:40:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IAccountingExtension_$42580",
                  "typeString": "contract IAccountingExtension"
                },
                "typeName": {
                  "id": 43155,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 43154,
                    "name": "IAccountingExtension",
                    "nameLocations": [
                      "1682:20:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 42580,
                    "src": "1682:20:65"
                  },
                  "referencedDeclaration": 42580,
                  "src": "1682:20:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAccountingExtension_$42580",
                    "typeString": "contract IAccountingExtension"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 43159,
                "mutability": "mutable",
                "name": "bondToken",
                "nameLocation": "1735:9:65",
                "nodeType": "VariableDeclaration",
                "scope": 43162,
                "src": "1728:16:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IERC20_$2822",
                  "typeString": "contract IERC20"
                },
                "typeName": {
                  "id": 43158,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 43157,
                    "name": "IERC20",
                    "nameLocations": [
                      "1728:6:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2822,
                    "src": "1728:6:65"
                  },
                  "referencedDeclaration": 2822,
                  "src": "1728:6:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2822",
                    "typeString": "contract IERC20"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 43161,
                "mutability": "mutable",
                "name": "bondSize",
                "nameLocation": "1758:8:65",
                "nodeType": "VariableDeclaration",
                "scope": 43162,
                "src": "1750:16:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 43160,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1750:7:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "RequestParameters",
            "nameLocation": "1576:17:65",
            "scope": 43202,
            "visibility": "public"
          },
          {
            "id": 43171,
            "nodeType": "FunctionDefinition",
            "src": "2129:104:65",
            "nodes": [],
            "documentation": {
              "id": 43163,
              "nodeType": "StructuredDocumentation",
              "src": "1946:180:65",
              "text": " @notice Returns the decoded data for a request\n @param _requestId The ID of the request\n @return _params The struct containing the parameters for the request"
            },
            "functionSelector": "4d610a46",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "decodeRequestData",
            "nameLocation": "2138:17:65",
            "parameters": {
              "id": 43166,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43165,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "2164:10:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 43171,
                  "src": "2156:18:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 43164,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2156:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2155:20:65"
            },
            "returnParameters": {
              "id": 43170,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43169,
                  "mutability": "mutable",
                  "name": "_params",
                  "nameLocation": "2224:7:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 43171,
                  "src": "2199:32:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                    "typeString": "struct IRootVerificationModule.RequestParameters"
                  },
                  "typeName": {
                    "id": 43168,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 43167,
                      "name": "RequestParameters",
                      "nameLocations": [
                        "2199:17:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 43162,
                      "src": "2199:17:65"
                    },
                    "referencedDeclaration": 43162,
                    "src": "2199:17:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43162_storage_ptr",
                      "typeString": "struct IRootVerificationModule.RequestParameters"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2198:34:65"
            },
            "scope": 43202,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 43186,
            "nodeType": "FunctionDefinition",
            "src": "2858:175:65",
            "nodes": [],
            "baseFunctions": [
              2330
            ],
            "documentation": {
              "id": 43172,
              "nodeType": "StructuredDocumentation",
              "src": "2237:618:65",
              "text": " @notice Calculates the correct root and compares it to the proposed one.\n @dev Since this is a pre-dispute module, the dispute status is updated after checking\n if the disputed response is indeed wrong, since it is calculated on dispute.\n @param _requestId The id of the request from which the response is being disputed\n @param _responseId The id of the response being disputed\n @param _disputer The user who is disputing the response\n @param _proposer The proposer of the response being disputed\n @return _dispute The dispute of the current response with the updated status"
            },
            "functionSelector": "98660c18",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "disputeResponse",
            "nameLocation": "2867:15:65",
            "parameters": {
              "id": 43181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43174,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "2896:10:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 43186,
                  "src": "2888:18:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 43173,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2888:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 43176,
                  "mutability": "mutable",
                  "name": "_responseId",
                  "nameLocation": "2920:11:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 43186,
                  "src": "2912:19:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 43175,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2912:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 43178,
                  "mutability": "mutable",
                  "name": "_disputer",
                  "nameLocation": "2945:9:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 43186,
                  "src": "2937:17:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 43177,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2937:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 43180,
                  "mutability": "mutable",
                  "name": "_proposer",
                  "nameLocation": "2968:9:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 43186,
                  "src": "2960:17:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 43179,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2960:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2882:99:65"
            },
            "returnParameters": {
              "id": 43185,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43184,
                  "mutability": "mutable",
                  "name": "_dispute",
                  "nameLocation": "3023:8:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 43186,
                  "src": "3000:31:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                    "typeString": "struct IOracle.Dispute"
                  },
                  "typeName": {
                    "id": 43183,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 43182,
                      "name": "IOracle.Dispute",
                      "nameLocations": [
                        "3000:7:65",
                        "3008:7:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2045,
                      "src": "3000:15:65"
                    },
                    "referencedDeclaration": 2045,
                    "src": "3000:15:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$2045_storage_ptr",
                      "typeString": "struct IOracle.Dispute"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2999:33:65"
            },
            "scope": 43202,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 43195,
            "nodeType": "FunctionDefinition",
            "src": "3425:82:65",
            "nodes": [],
            "baseFunctions": [
              2339
            ],
            "documentation": {
              "id": 43187,
              "nodeType": "StructuredDocumentation",
              "src": "3037:385:65",
              "text": " @notice Updates the status of the dispute and resolves it by proposing the correct root\n as a response and finalizing the request.\n @dev The correct root is retrieved from storage and compared to the proposed root.\n If the dispute is won, the disputer is paid. In both cases, the request is finalized.\n @param _dispute The dispute of the current response"
            },
            "functionSelector": "34837c29",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "onDisputeStatusChange",
            "nameLocation": "3434:21:65",
            "parameters": {
              "id": 43193,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43189,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 43195,
                  "src": "3456:7:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 43188,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3456:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 43192,
                  "mutability": "mutable",
                  "name": "_dispute",
                  "nameLocation": "3488:8:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 43195,
                  "src": "3465:31:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                    "typeString": "struct IOracle.Dispute"
                  },
                  "typeName": {
                    "id": 43191,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 43190,
                      "name": "IOracle.Dispute",
                      "nameLocations": [
                        "3465:7:65",
                        "3473:7:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2045,
                      "src": "3465:15:65"
                    },
                    "referencedDeclaration": 2045,
                    "src": "3465:15:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$2045_storage_ptr",
                      "typeString": "struct IOracle.Dispute"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3455:42:65"
            },
            "returnParameters": {
              "id": 43194,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3506:0:65"
            },
            "scope": 43202,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 43201,
            "nodeType": "FunctionDefinition",
            "src": "3661:55:65",
            "nodes": [],
            "baseFunctions": [
              2345
            ],
            "documentation": {
              "id": 43196,
              "nodeType": "StructuredDocumentation",
              "src": "3511:147:65",
              "text": " @dev This function is present to comply with the module interface but it\n is not implemented since this is a pre-dispute module."
            },
            "functionSelector": "7fadb88d",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "disputeEscalated",
            "nameLocation": "3670:16:65",
            "parameters": {
              "id": 43199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43198,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "3695:10:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 43201,
                  "src": "3687:18:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 43197,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3687:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3686:20:65"
            },
            "returnParameters": {
              "id": 43200,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3715:0:65"
            },
            "scope": 43202,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 43144,
              "name": "IDisputeModule",
              "nameLocations": [
                "898:14:65"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2346,
              "src": "898:14:65"
            },
            "id": 43145,
            "nodeType": "InheritanceSpecifier",
            "src": "898:14:65"
          }
        ],
        "canonicalName": "IRootVerificationModule",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "linearizedBaseContracts": [
          43202,
          2346,
          1782
        ],
        "name": "IRootVerificationModule",
        "nameLocation": "871:23:65",
        "scope": 43203,
        "usedErrors": [
          1745
        ]
      }
    ],
    "license": "MIT"
  },
  "id": 65
}