{"abi":[{"type":"function","name":"install","inputs":[{"name":"encodedArgs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"installRoot","inputs":[{"name":"encodedArgs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"error","name":"Module_AlreadyInstalled","inputs":[]},{"type":"error","name":"Module_MissingDependency","inputs":[{"name":"dependency","type":"address","internalType":"address"}]},{"type":"error","name":"Module_NonRootInstallNotSupported","inputs":[]},{"type":"error","name":"Module_RootInstallNotSupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"install(bytes)":"13861fb5","installRoot(bytes)":"7c5b0335","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Module_AlreadyInstalled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"Module_MissingDependency\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Module_NonRootInstallNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Module_RootInstallNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedArgs\",\"type\":\"bytes\"}],\"name\":\"install\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedArgs\",\"type\":\"bytes\"}],\"name\":\"installRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"MUD (https://mud.dev) by Lattice (https://lattice.xyz)\",\"details\":\"Interface for the Module system. A module can be installed within the context of a world, either as a root or non-root module. This interface adheres to the ERC-165 standard for determining interface support.\",\"errors\":{\"Module_MissingDependency(address)\":[{\"params\":{\"dependency\":\"The address of the dependency.\"}}]},\"kind\":\"dev\",\"methods\":{\"install(bytes)\":{\"details\":\"This function is invoked by the World contract during `installModule` process. The module expects to be called via the World contract and thus installs itself on the `msg.sender`. Logic might differ from `installRoot`, for example, this might accept namespace parameters.\",\"params\":{\"encodedArgs\":\"The ABI encoded arguments that may be needed during the installation process.\"}},\"installRoot(bytes)\":{\"details\":\"This function is invoked by the World contract during `installRootModule` process. The module expects to be called via the World contract and thus installs itself on the `msg.sender`.\",\"params\":{\"encodedArgs\":\"The ABI encoded arguments that may be needed during the installation process.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165.\"},\"returns\":{\"_0\":\"True if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, false otherwise.\"}}},\"title\":\"IModule\",\"version\":1},\"userdoc\":{\"errors\":{\"Module_AlreadyInstalled()\":[{\"notice\":\"Error raised if the provided module is already installed.\"}],\"Module_MissingDependency(address)\":[{\"notice\":\"Error raised if the provided module is missing a dependency.\"}],\"Module_NonRootInstallNotSupported()\":[{\"notice\":\"Error raised if installing in non-root is not supported.\"}],\"Module_RootInstallNotSupported()\":[{\"notice\":\"Error raised if installing in root is not supported.\"}]},\"kind\":\"user\",\"methods\":{\"install(bytes)\":{\"notice\":\"Installs the module.\"},\"installRoot(bytes)\":{\"notice\":\"Installs the module as a root module.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@latticexyz/world/src/IModule.sol\":\"IModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@dk1a/solidity-stringutils/=node_modules/@dk1a/solidity-stringutils/\",\":@latticexyz/=node_modules/@latticexyz/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":base/=src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":solmate/=node_modules/solmate/src/\"]},\"sources\":{\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0xe3d9074a1be3247be67ff4dd2c9e41481650ddaa799285a249736bb85673e33d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b6743ee1e6d0c74927bf17fc1da0cad7575aa7634871b94190ffbdb4c28c2a7\",\"dweb:/ipfs/Qma5bNsPJSBTesWxg3eAAMUBTDE7UjqWaHF7eMiGwP87jr\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0xbb926cf64e685bbf2770d60124664cc84ab70bd3038e17a074f2d472c3fc2c57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://143c3dcbdf1702dd4f9c869629609386c12f7c0247e88a6d062dc4d519ebe0d2\",\"dweb:/ipfs/QmQJSDd8uFL4sssw9fb9NHo4s6zjuDUgmrLHj3zsJuhMo1\"]},\"node_modules/@latticexyz/world/src/IModuleErrors.sol\":{\"keccak256\":\"0x60917e029779c81cfea1f5140c389269e51d7adb78987f39101b9e0d7bdad12d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://513f41920d67ca28c3e0fe247403c28a4d342785192df449c99d5f92db04fcea\",\"dweb:/ipfs/QmeAG2TtxAgcJQR4QxftuSvQrxisYQ1i1GZoyd7oeFQBDJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Module_AlreadyInstalled"},{"inputs":[{"internalType":"address","name":"dependency","type":"address"}],"type":"error","name":"Module_MissingDependency"},{"inputs":[],"type":"error","name":"Module_NonRootInstallNotSupported"},{"inputs":[],"type":"error","name":"Module_RootInstallNotSupported"},{"inputs":[{"internalType":"bytes","name":"encodedArgs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"install"},{"inputs":[{"internalType":"bytes","name":"encodedArgs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"installRoot"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"install(bytes)":{"details":"This function is invoked by the World contract during `installModule` process. The module expects to be called via the World contract and thus installs itself on the `msg.sender`. Logic might differ from `installRoot`, for example, this might accept namespace parameters.","params":{"encodedArgs":"The ABI encoded arguments that may be needed during the installation process."}},"installRoot(bytes)":{"details":"This function is invoked by the World contract during `installRootModule` process. The module expects to be called via the World contract and thus installs itself on the `msg.sender`.","params":{"encodedArgs":"The ABI encoded arguments that may be needed during the installation process."}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165."},"returns":{"_0":"True if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, false otherwise."}}},"version":1},"userdoc":{"kind":"user","methods":{"install(bytes)":{"notice":"Installs the module."},"installRoot(bytes)":{"notice":"Installs the module as a root module."},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface."}},"version":1}},"settings":{"remappings":["@dk1a/solidity-stringutils/=node_modules/@dk1a/solidity-stringutils/","@latticexyz/=node_modules/@latticexyz/","@openzeppelin/=node_modules/@openzeppelin/","base/=src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@latticexyz/world/src/IModule.sol":"IModule"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0xe3d9074a1be3247be67ff4dd2c9e41481650ddaa799285a249736bb85673e33d","urls":["bzz-raw://0b6743ee1e6d0c74927bf17fc1da0cad7575aa7634871b94190ffbdb4c28c2a7","dweb:/ipfs/Qma5bNsPJSBTesWxg3eAAMUBTDE7UjqWaHF7eMiGwP87jr"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0xbb926cf64e685bbf2770d60124664cc84ab70bd3038e17a074f2d472c3fc2c57","urls":["bzz-raw://143c3dcbdf1702dd4f9c869629609386c12f7c0247e88a6d062dc4d519ebe0d2","dweb:/ipfs/QmQJSDd8uFL4sssw9fb9NHo4s6zjuDUgmrLHj3zsJuhMo1"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModuleErrors.sol":{"keccak256":"0x60917e029779c81cfea1f5140c389269e51d7adb78987f39101b9e0d7bdad12d","urls":["bzz-raw://513f41920d67ca28c3e0fe247403c28a4d342785192df449c99d5f92db04fcea","dweb:/ipfs/QmeAG2TtxAgcJQR4QxftuSvQrxisYQ1i1GZoyd7oeFQBDJ"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"node_modules/@latticexyz/world/src/IModule.sol","id":47609,"exportedSymbols":{"IERC165":[47584],"IModule":[47608],"IModuleErrors":[47626]},"nodeType":"SourceUnit","src":"32:1404:106","nodes":[{"id":47586,"nodeType":"PragmaDirective","src":"32:25:106","nodes":[],"literals":["solidity",">=","0.8",".24"]},{"id":47588,"nodeType":"ImportDirective","src":"59:40:106","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IERC165.sol","file":"./IERC165.sol","nameLocation":"-1:-1:-1","scope":47609,"sourceUnit":47585,"symbolAliases":[{"foreign":{"id":47587,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47584,"src":"68:7:106","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":47590,"nodeType":"ImportDirective","src":"100:52:106","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IModuleErrors.sol","file":"./IModuleErrors.sol","nameLocation":"-1:-1:-1","scope":47609,"sourceUnit":47627,"symbolAliases":[{"foreign":{"id":47589,"name":"IModuleErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47626,"src":"109:13:106","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":47608,"nodeType":"ContractDefinition","src":"469:966:106","nodes":[{"id":47601,"nodeType":"FunctionDefinition","src":"881:56:106","nodes":[],"documentation":{"id":47596,"nodeType":"StructuredDocumentation","src":"517:361:106","text":" @notice Installs the module as a root module.\n @dev This function is invoked by the World contract during `installRootModule` process.\n The module expects to be called via the World contract and thus installs itself on the `msg.sender`.\n @param encodedArgs The ABI encoded arguments that may be needed during the installation process."},"functionSelector":"7c5b0335","implemented":false,"kind":"function","modifiers":[],"name":"installRoot","nameLocation":"890:11:106","parameters":{"id":47599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47598,"mutability":"mutable","name":"encodedArgs","nameLocation":"915:11:106","nodeType":"VariableDeclaration","scope":47601,"src":"902:24:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":47597,"name":"bytes","nodeType":"ElementaryTypeName","src":"902:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"901:26:106"},"returnParameters":{"id":47600,"nodeType":"ParameterList","parameters":[],"src":"936:0:106"},"scope":47608,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":47607,"nodeType":"FunctionDefinition","src":"1381:52:106","nodes":[],"documentation":{"id":47602,"nodeType":"StructuredDocumentation","src":"941:437:106","text":" @notice Installs the module.\n @dev This function is invoked by the World contract during `installModule` process.\n The module expects to be called via the World contract and thus installs itself on the `msg.sender`.\n Logic might differ from `installRoot`, for example, this might accept namespace parameters.\n @param encodedArgs The ABI encoded arguments that may be needed during the installation process."},"functionSelector":"13861fb5","implemented":false,"kind":"function","modifiers":[],"name":"install","nameLocation":"1390:7:106","parameters":{"id":47605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47604,"mutability":"mutable","name":"encodedArgs","nameLocation":"1411:11:106","nodeType":"VariableDeclaration","scope":47607,"src":"1398:24:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":47603,"name":"bytes","nodeType":"ElementaryTypeName","src":"1398:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1397:26:106"},"returnParameters":{"id":47606,"nodeType":"ParameterList","parameters":[],"src":"1432:0:106"},"scope":47608,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":47592,"name":"IERC165","nameLocations":["490:7:106"],"nodeType":"IdentifierPath","referencedDeclaration":47584,"src":"490:7:106"},"id":47593,"nodeType":"InheritanceSpecifier","src":"490:7:106"},{"baseName":{"id":47594,"name":"IModuleErrors","nameLocations":["499:13:106"],"nodeType":"IdentifierPath","referencedDeclaration":47626,"src":"499:13:106"},"id":47595,"nodeType":"InheritanceSpecifier","src":"499:13:106"}],"canonicalName":"IModule","contractDependencies":[],"contractKind":"interface","documentation":{"id":47591,"nodeType":"StructuredDocumentation","src":"154:314:106","text":" @title IModule\n @author MUD (https://mud.dev) by Lattice (https://lattice.xyz)\n @dev Interface for the Module system.\n A module can be installed within the context of a world, either as a root or non-root module.\n This interface adheres to the ERC-165 standard for determining interface support."},"fullyImplemented":false,"linearizedBaseContracts":[47608,47626,47584],"name":"IModule","nameLocation":"479:7:106","scope":47609,"usedErrors":[47614,47617,47620,47625],"usedEvents":[]}],"license":"MIT"},"id":106}