{"abi":[],"bytecode":{"object":"0x","linkReferences":{}},"deployedBytecode":{"object":"0x","linkReferences":{}},"ast":{"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/puppet/createPuppet.sol","id":41905,"exportedSymbols":{"IBaseWorld":[48983],"PUPPET_DELEGATION":[41801],"PUPPET_FACTORY":[41819],"Puppet":[41402],"PuppetDelegationControl":[41442],"PuppetFactorySystem":[41501],"ResourceId":[9486],"WorldResourceIdInstance":[48858],"createPuppet":[41904]},"nodeType":"SourceUnit","src":"32:1090:87","nodes":[{"id":41839,"nodeType":"PragmaDirective","src":"32:25:87","nodes":[],"literals":["solidity",">=","0.8",".24"]},{"id":41841,"nodeType":"ImportDirective","src":"59:66:87","nodes":[],"absolutePath":"node_modules/@latticexyz/store/src/ResourceId.sol","file":"@latticexyz/store/src/ResourceId.sol","nameLocation":"-1:-1:-1","scope":41905,"sourceUnit":9568,"symbolAliases":[{"foreign":{"id":41840,"name":"ResourceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9486,"src":"68:10:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41843,"nodeType":"ImportDirective","src":"126:85:87","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":41905,"sourceUnit":48984,"symbolAliases":[{"foreign":{"id":41842,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48983,"src":"135:10:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41845,"nodeType":"ImportDirective","src":"212:84:87","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":41905,"sourceUnit":48859,"symbolAliases":[{"foreign":{"id":41844,"name":"WorldResourceIdInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48858,"src":"221:23:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41848,"nodeType":"ImportDirective","src":"297:68:87","nodes":[],"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/puppet/constants.sol","file":"./constants.sol","nameLocation":"-1:-1:-1","scope":41905,"sourceUnit":41838,"symbolAliases":[{"foreign":{"id":41846,"name":"PUPPET_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41801,"src":"306:17:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":41847,"name":"PUPPET_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41819,"src":"325:14:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41850,"nodeType":"ImportDirective","src":"366:72:87","nodes":[],"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/puppet/PuppetDelegationControl.sol","file":"./PuppetDelegationControl.sol","nameLocation":"-1:-1:-1","scope":41905,"sourceUnit":41443,"symbolAliases":[{"foreign":{"id":41849,"name":"PuppetDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41442,"src":"375:23:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41852,"nodeType":"ImportDirective","src":"439:38:87","nodes":[],"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/puppet/Puppet.sol","file":"./Puppet.sol","nameLocation":"-1:-1:-1","scope":41905,"sourceUnit":41403,"symbolAliases":[{"foreign":{"id":41851,"name":"Puppet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41402,"src":"448:6:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41854,"nodeType":"ImportDirective","src":"478:64:87","nodes":[],"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/puppet/PuppetFactorySystem.sol","file":"./PuppetFactorySystem.sol","nameLocation":"-1:-1:-1","scope":41905,"sourceUnit":41502,"symbolAliases":[{"foreign":{"id":41853,"name":"PuppetFactorySystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41501,"src":"487:19:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41858,"nodeType":"UsingForDirective","src":"544:45:87","nodes":[],"global":false,"libraryName":{"id":41855,"name":"WorldResourceIdInstance","nameLocations":["550:23:87"],"nodeType":"IdentifierPath","referencedDeclaration":48858,"src":"550:23:87"},"typeName":{"id":41857,"nodeType":"UserDefinedTypeName","pathNode":{"id":41856,"name":"ResourceId","nameLocations":["578:10:87"],"nodeType":"IdentifierPath","referencedDeclaration":9486,"src":"578:10:87"},"referencedDeclaration":9486,"src":"578:10:87","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}}},{"id":41904,"nodeType":"FunctionDefinition","src":"799:322:87","nodes":[],"body":{"id":41903,"nodeType":"Block","src":"885:236:87","nodes":[],"statements":[{"expression":{"id":41888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41870,"name":"puppet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41868,"src":"889:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":41875,"name":"PUPPET_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41819,"src":"925:14:87","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":41878,"name":"PuppetFactorySystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41501,"src":"956:19:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PuppetFactorySystem_$41501_$","typeString":"type(contract PuppetFactorySystem)"}},"id":41879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"976:12:87","memberName":"createPuppet","nodeType":"MemberAccess","referencedDeclaration":41500,"src":"956:32:87","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$9486_$returns$_t_address_$","typeString":"function PuppetFactorySystem.createPuppet(ResourceId) returns (address)"}},{"components":[{"id":41880,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41865,"src":"991:8:87","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}}],"id":41881,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"990:10:87","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$9486_$returns$_t_address_$","typeString":"function PuppetFactorySystem.createPuppet(ResourceId) returns (address)"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}],"expression":{"id":41876,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"941:3:87","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":41877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"945:10:87","memberName":"encodeCall","nodeType":"MemberAccess","src":"941:14:87","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":41882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"941:60:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":41873,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41862,"src":"914:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$48983","typeString":"contract IBaseWorld"}},"id":41874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"920:4:87","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":47833,"src":"914:10:87","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$9486_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":41883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"914:88:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":41885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1009:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":41884,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:87","typeDescriptions":{}}}],"id":41886,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1008:9:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":41871,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"898:3:87","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":41872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"902:6:87","memberName":"decode","nodeType":"MemberAccess","src":"898:10:87","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":41887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"898:123:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"889:132:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":41889,"nodeType":"ExpressionStatement","src":"889:132:87"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":41893,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41865,"src":"1059:8:87","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}},"id":41894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1068:14:87","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":48777,"src":"1059:23:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$9486_$returns$_t_userDefinedValueType$_ResourceId_$9486_$attached_to$_t_userDefinedValueType$_ResourceId_$9486_$","typeString":"function (ResourceId) pure returns (ResourceId)"}},"id":41895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1059:25:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}},{"id":41896,"name":"PUPPET_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41801,"src":"1086:17:87","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}},{"arguments":[{"hexValue":"30","id":41899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1115:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":41898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1105:9:87","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":41897,"name":"bytes","nodeType":"ElementaryTypeName","src":"1109:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":41900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1105:12:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":41890,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41862,"src":"1025:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$48983","typeString":"contract IBaseWorld"}},"id":41892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1031:27:87","memberName":"registerNamespaceDelegation","nodeType":"MemberAccess","referencedDeclaration":49122,"src":"1025:33:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$9486_$_t_userDefinedValueType$_ResourceId_$9486_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (ResourceId,ResourceId,bytes memory) external"}},"id":41901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1025:93:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41902,"nodeType":"ExpressionStatement","src":"1025:93:87"}]},"documentation":{"id":41859,"nodeType":"StructuredDocumentation","src":"591:207:87","text":" This free function can be used to create a puppet and register it with the puppet delegation control.\n Since it is inlined in the caller's context, the calls originate from the caller's address."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"createPuppet","nameLocation":"808:12:87","parameters":{"id":41866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41862,"mutability":"mutable","name":"world","nameLocation":"832:5:87","nodeType":"VariableDeclaration","scope":41904,"src":"821:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$48983","typeString":"contract IBaseWorld"},"typeName":{"id":41861,"nodeType":"UserDefinedTypeName","pathNode":{"id":41860,"name":"IBaseWorld","nameLocations":["821:10:87"],"nodeType":"IdentifierPath","referencedDeclaration":48983,"src":"821:10:87"},"referencedDeclaration":48983,"src":"821:10:87","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$48983","typeString":"contract IBaseWorld"}},"visibility":"internal"},{"constant":false,"id":41865,"mutability":"mutable","name":"systemId","nameLocation":"850:8:87","nodeType":"VariableDeclaration","scope":41904,"src":"839:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"},"typeName":{"id":41864,"nodeType":"UserDefinedTypeName","pathNode":{"id":41863,"name":"ResourceId","nameLocations":["839:10:87"],"nodeType":"IdentifierPath","referencedDeclaration":9486,"src":"839:10:87"},"referencedDeclaration":9486,"src":"839:10:87","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}},"visibility":"internal"}],"src":"820:39:87"},"returnParameters":{"id":41869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41868,"mutability":"mutable","name":"puppet","nameLocation":"877:6:87","nodeType":"VariableDeclaration","scope":41904,"src":"869:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41867,"name":"address","nodeType":"ElementaryTypeName","src":"869:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"868:16:87"},"scope":41905,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"license":"MIT"},"id":87}