{
  "abi": [
    {
      "inputs": [],
      "name": "CallbackModule_TargetHasNoCode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Module_OnlyOracle",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "Callback",
      "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"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "decodeRequestData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct ICallbackModule.RequestParameters",
          "name": "_params",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "finalizeRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "moduleName",
      "outputs": [
        {
          "internalType": "string",
          "name": "_moduleName",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "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",
    "finalizeRequest(bytes32,address)": "309de607",
    "moduleName()": "93f0899a",
    "oracle()": "7dc0d1d0",
    "requestData(bytes32)": "3661346b",
    "setupRequest(bytes32,bytes)": "2e76be2a"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CallbackModule_TargetHasNoCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Module_OnlyOracle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"Callback\",\"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\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"decodeRequestData\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ICallbackModule.RequestParameters\",\"name\":\"_params\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"finalizeRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moduleName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_moduleName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"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\":{\"Callback(bytes32,address,bytes)\":{\"params\":{\"_data\":\"The calldata forwarded to the _target\",\"_requestId\":\"The id of the request being finalized\",\"_target\":\"The target address for the callback\"}},\"RequestFinalized(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request that was finalized\"}}},\"kind\":\"dev\",\"methods\":{\"decodeRequestData(bytes32)\":{\"params\":{\"_requestId\":\"The ID of the request\"},\"returns\":{\"_params\":\"The struct containing the parameters for the request\"}},\"finalizeRequest(bytes32,address)\":{\"details\":\"The success of the callback call is purposely not checked\",\"params\":{\"_requestId\":\"The id of the request\"}},\"moduleName()\":{\"returns\":{\"_moduleName\":\"The name of the module.\"}},\"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\"}}},\"title\":\"CallbackModule\",\"version\":1},\"userdoc\":{\"errors\":{\"CallbackModule_TargetHasNoCode()\":[{\"notice\":\"Thrown when the target address has no code (i.e. is not a contract)\"}],\"Module_OnlyOracle()\":[{\"notice\":\"Thrown when the caller is not the oracle\"}]},\"events\":{\"Callback(bytes32,address,bytes)\":{\"notice\":\"A callback has been executed\"},\"RequestFinalized(bytes32,address)\":{\"notice\":\"Emitted when a request is finalized\"}},\"kind\":\"user\",\"methods\":{\"decodeRequestData(bytes32)\":{\"notice\":\"Returns the decoded data for a request\"},\"finalizeRequest(bytes32,address)\":{\"notice\":\"Finalizes the request by executing the callback call on the target\"},\"moduleName()\":{\"notice\":\"Returns the name of the module.\"},\"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\"}},\"notice\":\"Module allowing users to call a function on a contract as a result of a request being finalized.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/interfaces/modules/finality/ICallbackModule.sol\":\"ICallbackModule\"},\"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/modules/finality/IFinalityModule.sol\":{\"keccak256\":\"0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e\",\"dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8\"]},\"solidity/interfaces/modules/finality/ICallbackModule.sol\":{\"keccak256\":\"0xdcfd2e50347b7ca70e60fdd62dc596f1e87f0d75cf013a30380dc8f53380f1af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41faca3bb330c6d820b75ff1115d6b15a1b7354ddaa75cc1cc497bb944c14a0e\",\"dweb:/ipfs/QmUCYesYdxgvVotiq8nfe5c8uTTN7b9yvDAHDCSg9PZ1g6\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.19+commit.7dd6d404"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [],
          "type": "error",
          "name": "CallbackModule_TargetHasNoCode"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Module_OnlyOracle"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "_target",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Callback",
          "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"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "decodeRequestData",
          "outputs": [
            {
              "internalType": "struct ICallbackModule.RequestParameters",
              "name": "_params",
              "type": "tuple",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "finalizeRequest"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "moduleName",
          "outputs": [
            {
              "internalType": "string",
              "name": "_moduleName",
              "type": "string"
            }
          ]
        },
        {
          "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"
            }
          },
          "finalizeRequest(bytes32,address)": {
            "details": "The success of the callback call is purposely not checked",
            "params": {
              "_requestId": "The id of the request"
            }
          },
          "moduleName()": {
            "returns": {
              "_moduleName": "The name of the module."
            }
          },
          "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"
          },
          "finalizeRequest(bytes32,address)": {
            "notice": "Finalizes the request by executing the callback call on the target"
          },
          "moduleName()": {
            "notice": "Returns the name of the module."
          },
          "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/finality/ICallbackModule.sol": "ICallbackModule"
      },
      "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/modules/finality/IFinalityModule.sol": {
        "keccak256": "0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e",
        "urls": [
          "bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e",
          "dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/modules/finality/ICallbackModule.sol": {
        "keccak256": "0xdcfd2e50347b7ca70e60fdd62dc596f1e87f0d75cf013a30380dc8f53380f1af",
        "urls": [
          "bzz-raw://41faca3bb330c6d820b75ff1115d6b15a1b7354ddaa75cc1cc497bb944c14a0e",
          "dweb:/ipfs/QmUCYesYdxgvVotiq8nfe5c8uTTN7b9yvDAHDCSg9PZ1g6"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/interfaces/modules/finality/ICallbackModule.sol",
    "id": 43245,
    "exportedSymbols": {
      "ICallbackModule": [
        43244
      ],
      "IFinalityModule": [
        2353
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:2309:66",
    "nodes": [
      {
        "id": 43204,
        "nodeType": "PragmaDirective",
        "src": "32:24:66",
        "nodes": [],
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 43206,
        "nodeType": "ImportDirective",
        "src": "58:131:66",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 43245,
        "sourceUnit": 2354,
        "symbolAliases": [
          {
            "foreign": {
              "id": 43205,
              "name": "IFinalityModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2353,
              "src": "66:15:66",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 43244,
        "nodeType": "ContractDefinition",
        "src": "335:2005:66",
        "nodes": [
          {
            "id": 43218,
            "nodeType": "EventDefinition",
            "src": "784:81:66",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 43210,
              "nodeType": "StructuredDocumentation",
              "src": "557:224:66",
              "text": " @notice A callback has been executed\n @param _requestId The id of the request being finalized\n @param _target The target address for the callback\n @param _data The calldata forwarded to the _target"
            },
            "eventSelector": "d131974f482f422f20ac02414f7a54690924a59b94bf4d3e90ff57a042c708ed",
            "name": "Callback",
            "nameLocation": "790:8:66",
            "parameters": {
              "id": 43217,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43212,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "815:10:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 43218,
                  "src": "799:26:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 43211,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "799:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 43214,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_target",
                  "nameLocation": "843:7:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 43218,
                  "src": "827:23:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 43213,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "827:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 43216,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "858:5:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 43218,
                  "src": "852:11:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 43215,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "852:5:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "798:66:66"
            }
          },
          {
            "id": 43221,
            "nodeType": "ErrorDefinition",
            "src": "1135:39:66",
            "nodes": [],
            "documentation": {
              "id": 43219,
              "nodeType": "StructuredDocumentation",
              "src": "1042:90:66",
              "text": " @notice Thrown when the target address has no code (i.e. is not a contract)"
            },
            "errorSelector": "efe8ac23",
            "name": "CallbackModule_TargetHasNoCode",
            "nameLocation": "1141:30:66",
            "parameters": {
              "id": 43220,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1171:2:66"
            }
          },
          {
            "id": 43226,
            "nodeType": "StructDefinition",
            "src": "1537:66:66",
            "nodes": [],
            "canonicalName": "ICallbackModule.RequestParameters",
            "members": [
              {
                "constant": false,
                "id": 43223,
                "mutability": "mutable",
                "name": "target",
                "nameLocation": "1576:6:66",
                "nodeType": "VariableDeclaration",
                "scope": 43226,
                "src": "1568:14:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 43222,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1568:7:66",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 43225,
                "mutability": "mutable",
                "name": "data",
                "nameLocation": "1594:4:66",
                "nodeType": "VariableDeclaration",
                "scope": 43226,
                "src": "1588:10:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 43224,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1588:5:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "RequestParameters",
            "nameLocation": "1544:17:66",
            "scope": 43244,
            "visibility": "public"
          },
          {
            "id": 43235,
            "nodeType": "FunctionDefinition",
            "src": "1962:104:66",
            "nodes": [],
            "documentation": {
              "id": 43227,
              "nodeType": "StructuredDocumentation",
              "src": "1779:180:66",
              "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": "1971:17:66",
            "parameters": {
              "id": 43230,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43229,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "1997:10:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 43235,
                  "src": "1989:18:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 43228,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1989:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1988:20:66"
            },
            "returnParameters": {
              "id": 43234,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43233,
                  "mutability": "mutable",
                  "name": "_params",
                  "nameLocation": "2057:7:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 43235,
                  "src": "2032:32:66",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestParameters_$43226_memory_ptr",
                    "typeString": "struct ICallbackModule.RequestParameters"
                  },
                  "typeName": {
                    "id": 43232,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 43231,
                      "name": "RequestParameters",
                      "nameLocations": [
                        "2032:17:66"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 43226,
                      "src": "2032:17:66"
                    },
                    "referencedDeclaration": 43226,
                    "src": "2032:17:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43226_storage_ptr",
                      "typeString": "struct ICallbackModule.RequestParameters"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2031:34:66"
            },
            "scope": 43244,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 43243,
            "nodeType": "FunctionDefinition",
            "src": "2275:63:66",
            "nodes": [],
            "baseFunctions": [
              1775
            ],
            "documentation": {
              "id": 43236,
              "nodeType": "StructuredDocumentation",
              "src": "2070:202:66",
              "text": " @notice Finalizes the request by executing the callback call on the target\n @dev The success of the callback call is purposely not checked\n @param _requestId The id of the request"
            },
            "functionSelector": "309de607",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "finalizeRequest",
            "nameLocation": "2284:15:66",
            "parameters": {
              "id": 43241,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43238,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "2308:10:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 43243,
                  "src": "2300:18:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 43237,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2300:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 43240,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 43243,
                  "src": "2320:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 43239,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2320:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2299:29:66"
            },
            "returnParameters": {
              "id": 43242,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2337:0:66"
            },
            "scope": 43244,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 43208,
              "name": "IFinalityModule",
              "nameLocations": [
                "364:15:66"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2353,
              "src": "364:15:66"
            },
            "id": 43209,
            "nodeType": "InheritanceSpecifier",
            "src": "364:15:66"
          }
        ],
        "canonicalName": "ICallbackModule",
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": {
          "id": 43207,
          "nodeType": "StructuredDocumentation",
          "src": "191:143:66",
          "text": " @title CallbackModule\n @notice Module allowing users to call a function on a contract\n as a result of a request being finalized."
        },
        "fullyImplemented": false,
        "linearizedBaseContracts": [
          43244,
          2353,
          1782
        ],
        "name": "ICallbackModule",
        "nameLocation": "345:15:66",
        "scope": 43245,
        "usedErrors": [
          1745,
          43221
        ]
      }
    ],
    "license": "MIT"
  },
  "id": 66
}