{"abi":[],"bytecode":{"object":"0x","linkReferences":{}},"deployedBytecode":{"object":"0x","linkReferences":{}},"ast":{"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/erc20-puppet/registerERC20.sol","id":27718,"exportedSymbols":{"ERC20MetadataData":[28682],"ERC20Module":[26698],"ERC20Registry":[31328],"ERC20_REGISTRY_TABLE_ID":[27630],"IBaseWorld":[48983],"IERC20Mintable":[27571],"MODULE_NAMESPACE_ID":[27597],"NamespaceOwner":[53877],"WorldResourceIdLib":[48731],"registerERC20":[27717]},"nodeType":"SourceUnit","src":"32:1402:58","nodes":[{"id":27632,"nodeType":"PragmaDirective","src":"32:25:58","nodes":[],"literals":["solidity",">=","0.8",".24"]},{"id":27634,"nodeType":"ImportDirective","src":"59:85:58","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":27718,"sourceUnit":48984,"symbolAliases":[{"foreign":{"id":27633,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48983,"src":"68:10:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":27636,"nodeType":"ImportDirective","src":"145:89:58","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol","file":"@latticexyz/world/src/codegen/tables/NamespaceOwner.sol","nameLocation":"-1:-1:-1","scope":27718,"sourceUnit":53878,"symbolAliases":[{"foreign":{"id":27635,"name":"NamespaceOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53877,"src":"154:14:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":27638,"nodeType":"ImportDirective","src":"235:79:58","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":27718,"sourceUnit":48859,"symbolAliases":[{"foreign":{"id":27637,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48731,"src":"244:18:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":27640,"nodeType":"ImportDirective","src":"316:48:58","nodes":[],"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/erc20-puppet/ERC20Module.sol","file":"./ERC20Module.sol","nameLocation":"-1:-1:-1","scope":27718,"sourceUnit":26761,"symbolAliases":[{"foreign":{"id":27639,"name":"ERC20Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26698,"src":"325:11:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":27643,"nodeType":"ImportDirective","src":"365:79:58","nodes":[],"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/erc20-puppet/constants.sol","file":"./constants.sol","nameLocation":"-1:-1:-1","scope":27718,"sourceUnit":27631,"symbolAliases":[{"foreign":{"id":27641,"name":"MODULE_NAMESPACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27597,"src":"374:19:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":27642,"name":"ERC20_REGISTRY_TABLE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27630,"src":"395:23:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":27645,"nodeType":"ImportDirective","src":"445:54:58","nodes":[],"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/erc20-puppet/IERC20Mintable.sol","file":"./IERC20Mintable.sol","nameLocation":"-1:-1:-1","scope":27718,"sourceUnit":27572,"symbolAliases":[{"foreign":{"id":27644,"name":"IERC20Mintable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27571,"src":"454:14:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":27647,"nodeType":"ImportDirective","src":"501:63:58","nodes":[],"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/erc20-puppet/tables/ERC20Metadata.sol","file":"./tables/ERC20Metadata.sol","nameLocation":"-1:-1:-1","scope":27718,"sourceUnit":30642,"symbolAliases":[{"foreign":{"id":27646,"name":"ERC20MetadataData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28682,"src":"510:17:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":27649,"nodeType":"ImportDirective","src":"565:59:58","nodes":[],"absolutePath":"node_modules/@latticexyz/world-modules/src/modules/erc20-puppet/tables/ERC20Registry.sol","file":"./tables/ERC20Registry.sol","nameLocation":"-1:-1:-1","scope":27718,"sourceUnit":31329,"symbolAliases":[{"foreign":{"id":27648,"name":"ERC20Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31328,"src":"574:13:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":27717,"nodeType":"FunctionDefinition","src":"820:613:58","nodes":[],"body":{"id":27716,"nodeType":"Block","src":"954:479:58","nodes":[],"statements":[{"assignments":[27666],"declarations":[{"constant":false,"id":27666,"mutability":"mutable","name":"erc20Module","nameLocation":"996:11:58","nodeType":"VariableDeclaration","scope":27716,"src":"984:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"},"typeName":{"id":27665,"nodeType":"UserDefinedTypeName","pathNode":{"id":27664,"name":"ERC20Module","nameLocations":["984:11:58"],"nodeType":"IdentifierPath","referencedDeclaration":26698,"src":"984:11:58"},"referencedDeclaration":26698,"src":"984:11:58","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"}},"visibility":"internal"}],"id":27673,"initialValue":{"arguments":[{"arguments":[{"id":27670,"name":"MODULE_NAMESPACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27597,"src":"1041:19:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}],"expression":{"id":27668,"name":"NamespaceOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53877,"src":"1022:14:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_NamespaceOwner_$53877_$","typeString":"type(library NamespaceOwner)"}},"id":27669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1037:3:58","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":53501,"src":"1022:18:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$9486_$returns$_t_address_$","typeString":"function (ResourceId) view returns (address)"}},"id":27671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1022:39:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":27667,"name":"ERC20Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26698,"src":"1010:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Module_$26698_$","typeString":"type(contract ERC20Module)"}},"id":27672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1010:52:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"}},"nodeType":"VariableDeclarationStatement","src":"984:78:58"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":27682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":27676,"name":"erc20Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27666,"src":"1078:11:58","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"}],"id":27675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1070:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27674,"name":"address","nodeType":"ElementaryTypeName","src":"1070:7:58","typeDescriptions":{}}},"id":27677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1070:20:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":27680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1102:1:58","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":27679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1094:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27678,"name":"address","nodeType":"ElementaryTypeName","src":"1094:7:58","typeDescriptions":{}}},"id":27681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1094:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1070:34:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27691,"nodeType":"IfStatement","src":"1066:82:58","trueBody":{"id":27690,"nodeType":"Block","src":"1106:42:58","statements":[{"expression":{"id":27688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27683,"name":"erc20Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27666,"src":"1112:11:58","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":27686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1126:15:58","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_ERC20Module_$26698_$","typeString":"function () returns (contract ERC20Module)"},"typeName":{"id":27685,"nodeType":"UserDefinedTypeName","pathNode":{"id":27684,"name":"ERC20Module","nameLocations":["1130:11:58"],"nodeType":"IdentifierPath","referencedDeclaration":26698,"src":"1130:11:58"},"referencedDeclaration":26698,"src":"1130:11:58","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"}}},"id":27687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1126:17:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"}},"src":"1112:31:58","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"}},"id":27689,"nodeType":"ExpressionStatement","src":"1112:31:58"}]}},{"expression":{"arguments":[{"id":27695,"name":"erc20Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27666,"src":"1225:11:58","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"}},{"arguments":[{"id":27698,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27655,"src":"1249:9:58","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},{"id":27699,"name":"metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27658,"src":"1260:8:58","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20MetadataData_$28682_memory_ptr","typeString":"struct ERC20MetadataData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes14","typeString":"bytes14"},{"typeIdentifier":"t_struct$_ERC20MetadataData_$28682_memory_ptr","typeString":"struct ERC20MetadataData memory"}],"expression":{"id":27696,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1238:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":27697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1242:6:58","memberName":"encode","nodeType":"MemberAccess","src":"1238:10:58","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":27700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1238:31:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20Module_$26698","typeString":"contract ERC20Module"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":27692,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27653,"src":"1205:5:58","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$48983","typeString":"contract IBaseWorld"}},"id":27694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1211:13:58","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":49023,"src":"1205:19:58","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$47608_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":27701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1205:65:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27702,"nodeType":"ExpressionStatement","src":"1205:65:58"},{"expression":{"id":27714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27703,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27662,"src":"1317:5:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Mintable_$27571","typeString":"contract IERC20Mintable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":27707,"name":"ERC20_REGISTRY_TABLE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27630,"src":"1358:23:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}},{"arguments":[{"id":27710,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27655,"src":"1418:9:58","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes14","typeString":"bytes14"}],"expression":{"id":27708,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48731,"src":"1383:18:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$48731_$","typeString":"type(library WorldResourceIdLib)"}},"id":27709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1402:15:58","memberName":"encodeNamespace","nodeType":"MemberAccess","referencedDeclaration":48686,"src":"1383:34:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes14_$returns$_t_userDefinedValueType$_ResourceId_$9486_$","typeString":"function (bytes14) pure returns (ResourceId)"}},"id":27711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1383:45:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$9486","typeString":"ResourceId"}],"expression":{"id":27705,"name":"ERC20Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31328,"src":"1340:13:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Registry_$31328_$","typeString":"type(library ERC20Registry)"}},"id":27706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1354:3:58","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":30931,"src":"1340:17:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$9486_$_t_userDefinedValueType$_ResourceId_$9486_$returns$_t_address_$","typeString":"function (ResourceId,ResourceId) view returns (address)"}},"id":27712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1340:89:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":27704,"name":"IERC20Mintable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27571,"src":"1325:14:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Mintable_$27571_$","typeString":"type(contract IERC20Mintable)"}},"id":27713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1325:105:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Mintable_$27571","typeString":"contract IERC20Mintable"}},"src":"1317:113:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Mintable_$27571","typeString":"contract IERC20Mintable"}},"id":27715,"nodeType":"ExpressionStatement","src":"1317:113:58"}]},"documentation":{"id":27650,"nodeType":"StructuredDocumentation","src":"626:193:58","text":" @notice Register a new ERC20 token with the given metadata in a given namespace\n @dev This function must be called within a Store context (i.e. using StoreSwitch.setStoreAddress())"},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"registerERC20","nameLocation":"829:13:58","parameters":{"id":27659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27653,"mutability":"mutable","name":"world","nameLocation":"857:5:58","nodeType":"VariableDeclaration","scope":27717,"src":"846:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$48983","typeString":"contract IBaseWorld"},"typeName":{"id":27652,"nodeType":"UserDefinedTypeName","pathNode":{"id":27651,"name":"IBaseWorld","nameLocations":["846:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":48983,"src":"846:10:58"},"referencedDeclaration":48983,"src":"846:10:58","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$48983","typeString":"contract IBaseWorld"}},"visibility":"internal"},{"constant":false,"id":27655,"mutability":"mutable","name":"namespace","nameLocation":"874:9:58","nodeType":"VariableDeclaration","scope":27717,"src":"866:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"},"typeName":{"id":27654,"name":"bytes14","nodeType":"ElementaryTypeName","src":"866:7:58","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},"visibility":"internal"},{"constant":false,"id":27658,"mutability":"mutable","name":"metadata","nameLocation":"912:8:58","nodeType":"VariableDeclaration","scope":27717,"src":"887:33:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20MetadataData_$28682_memory_ptr","typeString":"struct ERC20MetadataData"},"typeName":{"id":27657,"nodeType":"UserDefinedTypeName","pathNode":{"id":27656,"name":"ERC20MetadataData","nameLocations":["887:17:58"],"nodeType":"IdentifierPath","referencedDeclaration":28682,"src":"887:17:58"},"referencedDeclaration":28682,"src":"887:17:58","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20MetadataData_$28682_storage_ptr","typeString":"struct ERC20MetadataData"}},"visibility":"internal"}],"src":"842:80:58"},"returnParameters":{"id":27663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27662,"mutability":"mutable","name":"token","nameLocation":"947:5:58","nodeType":"VariableDeclaration","scope":27717,"src":"932:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Mintable_$27571","typeString":"contract IERC20Mintable"},"typeName":{"id":27661,"nodeType":"UserDefinedTypeName","pathNode":{"id":27660,"name":"IERC20Mintable","nameLocations":["932:14:58"],"nodeType":"IdentifierPath","referencedDeclaration":27571,"src":"932:14:58"},"referencedDeclaration":27571,"src":"932:14:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Mintable_$27571","typeString":"contract IERC20Mintable"}},"visibility":"internal"}],"src":"931:22:58"},"scope":27718,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"license":"MIT"},"id":58}