@latticexyz/world-modules 2.0.4 → 2.0.5-main-e2e8ec8b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/mud.config.d.ts +7 -7
  2. package/dist/mud.config.js +1 -1
  3. package/dist/mud.config.js.map +1 -1
  4. package/out/AccessControlLib.sol/AccessControlLib.json +1 -1
  5. package/out/AccessManagementSystem.sol/AccessManagementSystem.json +1 -1
  6. package/out/Allowances.sol/Allowances.json +1 -1
  7. package/out/ArrayLib.sol/ArrayLib.json +1 -1
  8. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.json +1 -1
  9. package/out/Balances.sol/Balances.json +1 -1
  10. package/out/BatchCallSystem.sol/BatchCallSystem.json +1 -1
  11. package/out/CallWithSignatureModule.t.sol/Unstable_CallWithSignatureModuleTest.json +1 -0
  12. package/out/CallWithSignatureNonces.sol/CallWithSignatureNonces.json +1 -0
  13. package/out/CallboundDelegationControl.sol/CallboundDelegationControl.json +1 -1
  14. package/out/CallboundDelegations.sol/CallboundDelegations.json +1 -1
  15. package/out/DelegationControlMock.sol/DelegationControlMock.json +1 -1
  16. package/out/ECDSA.sol/ECDSA.json +1 -1
  17. package/out/ERC20.t.sol/ERC20Test.json +1 -1
  18. package/out/ERC20Metadata.sol/ERC20Metadata.json +1 -1
  19. package/out/ERC20Module.sol/ERC20Module.json +1 -1
  20. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.json +1 -1
  21. package/out/ERC20Registry.sol/ERC20Registry.json +1 -1
  22. package/out/ERC20System.sol/ERC20System.json +1 -1
  23. package/out/ERC721.t.sol/ERC721Recipient.json +1 -1
  24. package/out/ERC721.t.sol/ERC721Test.json +1 -1
  25. package/out/ERC721.t.sol/ERC721TokenReceiver.json +1 -1
  26. package/out/ERC721.t.sol/NonERC721Recipient.json +1 -1
  27. package/out/ERC721.t.sol/RevertingERC721Recipient.json +1 -1
  28. package/out/ERC721.t.sol/WrongReturnDataERC721Recipient.json +1 -1
  29. package/out/ERC721Metadata.sol/ERC721Metadata.json +1 -1
  30. package/out/ERC721Module.sol/ERC721Module.json +1 -1
  31. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.json +1 -1
  32. package/out/ERC721Registry.sol/ERC721Registry.json +1 -1
  33. package/out/ERC721System.sol/ERC721System.json +1 -1
  34. package/out/EchoSubscriber.sol/EchoSubscriber.json +1 -1
  35. package/out/GasReporter.sol/GasReporter.json +1 -1
  36. package/out/IERC20.sol/IERC20.json +1 -1
  37. package/out/IERC20Errors.sol/IERC20Errors.json +1 -1
  38. package/out/IERC20Events.sol/IERC20Events.json +1 -1
  39. package/out/IERC20Mintable.sol/IERC20Mintable.json +1 -1
  40. package/out/IERC721.sol/IERC721.json +1 -1
  41. package/out/IERC721Errors.sol/IERC721Errors.json +1 -1
  42. package/out/IERC721Events.sol/IERC721Events.json +1 -1
  43. package/out/IERC721Metadata.sol/IERC721Metadata.json +1 -1
  44. package/out/IERC721Mintable.sol/IERC721Mintable.json +1 -1
  45. package/out/IERC721Receiver.sol/IERC721Receiver.json +1 -1
  46. package/out/IERC721System.sol/IERC721System.abi.json +310 -0
  47. package/out/IERC721System.sol/IERC721System.abi.json.d.ts +310 -0
  48. package/out/IERC721System.sol/IERC721System.json +1 -0
  49. package/out/IPuppetFactorySystem.sol/IPuppetFactorySystem.json +1 -1
  50. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.abi.json +15 -0
  51. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.abi.json.d.ts +15 -0
  52. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.json +1 -0
  53. package/out/{IUnstable_DelegationWithSignatureSystem.sol/IUnstable_DelegationWithSignatureSystem.abi.json → IUnstable_CallWithSignatureSystem.sol/IUnstable_CallWithSignatureSystem.abi.json} +12 -11
  54. package/out/{IUnstable_DelegationWithSignatureSystem.sol/IUnstable_DelegationWithSignatureSystem.abi.json.d.ts → IUnstable_CallWithSignatureSystem.sol/IUnstable_CallWithSignatureSystem.abi.json.d.ts} +12 -11
  55. package/out/IUnstable_CallWithSignatureSystem.sol/IUnstable_CallWithSignatureSystem.json +1 -0
  56. package/out/InitModule.sol/InitModule.json +1 -1
  57. package/out/KeysInTable.sol/KeysInTable.json +1 -1
  58. package/out/KeysInTableHook.sol/KeysInTableHook.json +1 -1
  59. package/out/KeysInTableModule.sol/KeysInTableModule.json +1 -1
  60. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.json +1 -1
  61. package/out/KeysWithValue.sol/KeysWithValue.json +1 -1
  62. package/out/KeysWithValueHook.sol/KeysWithValueHook.json +1 -1
  63. package/out/KeysWithValueModule.sol/KeysWithValueModule.json +1 -1
  64. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.json +1 -1
  65. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.json +1 -1
  66. package/out/OperatorApproval.sol/OperatorApproval.json +1 -1
  67. package/out/Owners.sol/Owners.json +1 -1
  68. package/out/Puppet.sol/Puppet.json +1 -1
  69. package/out/PuppetDelegationControl.sol/PuppetDelegationControl.json +1 -1
  70. package/out/PuppetFactorySystem.sol/PuppetFactorySystem.json +1 -1
  71. package/out/PuppetMaster.sol/PuppetMaster.json +1 -1
  72. package/out/PuppetModule.sol/PuppetModule.json +1 -1
  73. package/out/PuppetModule.t.sol/PuppetModuleTest.json +1 -1
  74. package/out/PuppetModule.t.sol/PuppetTestSystem.json +1 -1
  75. package/out/PuppetRegistry.sol/PuppetRegistry.json +1 -1
  76. package/out/RegistrationSystem.sol/RegistrationSystem.json +1 -1
  77. package/out/RevertSubscriber.sol/RevertSubscriber.json +1 -1
  78. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.json +1 -1
  79. package/out/StandardDelegationsModule.t.sol/StandardDelegationsModuleTest.json +1 -1
  80. package/out/StdError.sol/stdError.json +1 -1
  81. package/out/StoreRead.sol/StoreRead.json +1 -1
  82. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.json +1 -1
  83. package/out/System.sol/System.json +1 -1
  84. package/out/SystemSwitch.sol/SystemSwitch.json +1 -1
  85. package/out/SystemSwitch.t.sol/EchoSystem.json +1 -1
  86. package/out/SystemSwitch.t.sol/SystemSwitchTest.json +1 -1
  87. package/out/SystemboundDelegationControl.sol/SystemboundDelegationControl.json +1 -1
  88. package/out/SystemboundDelegations.sol/SystemboundDelegations.json +1 -1
  89. package/out/TimeboundDelegationControl.sol/TimeboundDelegationControl.json +1 -1
  90. package/out/TimeboundDelegations.sol/TimeboundDelegations.json +1 -1
  91. package/out/TokenApproval.sol/TokenApproval.json +1 -1
  92. package/out/TokenURI.sol/TokenURI.json +1 -1
  93. package/out/TotalSupply.sol/TotalSupply.json +1 -1
  94. package/out/UniqueEntity.sol/UniqueEntity.json +1 -1
  95. package/out/UniqueEntityModule.sol/UniqueEntityModule.json +1 -1
  96. package/out/UniqueEntityModule.t.sol/UniqueEntityModuleTest.json +1 -1
  97. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.json +1 -1
  98. package/out/UniqueEntitySystem.sol/UniqueEntitySystem.json +1 -1
  99. package/out/Unstable_CallWithSignatureModule.sol/Unstable_CallWithSignatureModule.json +1 -0
  100. package/out/{Unstable_DelegationWithSignatureSystem.sol/Unstable_DelegationWithSignatureSystem.abi.json → Unstable_CallWithSignatureSystem.sol/Unstable_CallWithSignatureSystem.abi.json} +12 -27
  101. package/out/{Unstable_DelegationWithSignatureSystem.sol/Unstable_DelegationWithSignatureSystem.abi.json.d.ts → Unstable_CallWithSignatureSystem.sol/Unstable_CallWithSignatureSystem.abi.json.d.ts} +12 -27
  102. package/out/Unstable_CallWithSignatureSystem.sol/Unstable_CallWithSignatureSystem.json +1 -0
  103. package/out/UsedKeysIndex.sol/UsedKeysIndex.json +1 -1
  104. package/out/World.sol/World.json +1 -1
  105. package/out/World.t.sol/EchoSystemHook.json +1 -1
  106. package/out/World.t.sol/PayableFallbackSystem.json +1 -1
  107. package/out/World.t.sol/RevertSystemHook.json +1 -1
  108. package/out/World.t.sol/WorldTest.json +1 -1
  109. package/out/World.t.sol/WorldTestSystem.json +1 -1
  110. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.json +1 -1
  111. package/out/query.t.sol/QueryTest.json +1 -1
  112. package/out/test.sol/DSTest.json +1 -1
  113. package/package.json +8 -8
  114. package/src/index.sol +1 -1
  115. package/src/interfaces/IERC721System.sol +43 -0
  116. package/src/interfaces/IUniqueEntitySystem.sol +13 -0
  117. package/src/interfaces/{IUnstable_DelegationWithSignatureSystem.sol → IUnstable_CallWithSignatureSystem.sol} +7 -8
  118. package/src/modules/delegation/{Unstable_DelegationWithSignatureModule.sol → Unstable_CallWithSignatureModule.sol} +8 -9
  119. package/src/modules/delegation/Unstable_CallWithSignatureSystem.sol +46 -0
  120. package/src/modules/delegation/getSignedMessageHash.sol +12 -18
  121. package/src/modules/delegation/tables/{UserDelegationNonces.sol → CallWithSignatureNonces.sol} +26 -26
  122. package/out/DelegationWithSignatureModule.t.sol/Unstable_DelegationWithSignatureModuleTest.json +0 -1
  123. package/out/IUnstable_DelegationWithSignatureSystem.sol/IUnstable_DelegationWithSignatureSystem.json +0 -1
  124. package/out/Unstable_DelegationWithSignatureModule.sol/Unstable_DelegationWithSignatureModule.json +0 -1
  125. package/out/Unstable_DelegationWithSignatureSystem.sol/Unstable_DelegationWithSignatureSystem.json +0 -1
  126. package/out/UserDelegationNonces.sol/UserDelegationNonces.json +0 -1
  127. package/src/modules/delegation/Unstable_DelegationWithSignatureSystem.sol +0 -47
  128. /package/out/{DelegationWithSignatureModule.t.sol/Unstable_DelegationWithSignatureModuleTest.abi.json → CallWithSignatureModule.t.sol/Unstable_CallWithSignatureModuleTest.abi.json} +0 -0
  129. /package/out/{DelegationWithSignatureModule.t.sol/Unstable_DelegationWithSignatureModuleTest.abi.json.d.ts → CallWithSignatureModule.t.sol/Unstable_CallWithSignatureModuleTest.abi.json.d.ts} +0 -0
  130. /package/out/{UserDelegationNonces.sol/UserDelegationNonces.abi.json → CallWithSignatureNonces.sol/CallWithSignatureNonces.abi.json} +0 -0
  131. /package/out/{Unstable_DelegationWithSignatureModule.sol/Unstable_DelegationWithSignatureModule.abi.json → Unstable_CallWithSignatureModule.sol/Unstable_CallWithSignatureModule.abi.json} +0 -0
  132. /package/out/{Unstable_DelegationWithSignatureModule.sol/Unstable_DelegationWithSignatureModule.abi.json.d.ts → Unstable_CallWithSignatureModule.sol/Unstable_CallWithSignatureModule.abi.json.d.ts} +0 -0
@@ -1 +1 @@
1
- {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040526000805460ff1916600117905534801561001d57600080fd5b506102728061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea164736f6c6343000818000a","sourceMap":"715:19781:114:-:0;;;1572:26;;;-1:-1:-1;;1572:26:114;1594:4;1572:26;;;715:19781;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea164736f6c6343000818000a","sourceMap":"715:19781:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584;;;:::i;:::-;;;179:14:223;;172:22;154:41;;142:2;127:18;1819:584:114;;;;;;;1572:26;;;;;;;;;1819:584;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:114;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;380:74:223;;;2221:17:114;470:18:223;;;463:34;2196:43:114;;;;;;;;;353:18:223;;;2196:43:114;;;-1:-1:-1;;1671:64:114;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:114:o;508:322:223:-;549:3;587:5;581:12;611:1;621:128;635:6;632:1;629:13;621:128;;;732:4;717:13;;;713:24;;707:31;694:11;;;687:52;650:12;621:128;;;-1:-1:-1;804:1:223;768:16;;793:13;;;-1:-1:-1;768:16:223;;508:322;-1:-1:-1;508:322:223:o;835:324::-;1032:66;1024:6;1020:79;1015:3;1008:92;990:3;1116:37;1150:1;1145:3;1141:11;1133:6;1116:37;:::i;:::-;1109:44;835:324;-1:-1:-1;;;;835:324:223:o;1164:189::-;1293:3;1318:29;1343:3;1335:6;1318:29;:::i;:::-;1311:36;1164:189;-1:-1:-1;;;1164:189:223:o;1358:277::-;1425:6;1478:2;1466:9;1457:7;1453:23;1449:32;1446:52;;;1494:1;1491;1484:12;1446:52;1526:9;1520:16;1579:5;1572:13;1565:21;1558:5;1555:32;1545:60;;1601:1;1598;1591:12","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/ds-test/src/test.sol\":\"DSTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"node_modules/ds-test/src/test.sol":"DSTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"}},"version":1},"id":114}
1
+ {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040526000805460ff1916600117905534801561001d57600080fd5b506102728061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea164736f6c6343000818000a","sourceMap":"715:19781:114:-:0;;;1572:26;;;-1:-1:-1;;1572:26:114;1594:4;1572:26;;;715:19781;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea164736f6c6343000818000a","sourceMap":"715:19781:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584;;;:::i;:::-;;;179:14:225;;172:22;154:41;;142:2;127:18;1819:584:114;;;;;;;1572:26;;;;;;;;;1819:584;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:114;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;380:74:225;;;2221:17:114;470:18:225;;;463:34;2196:43:114;;;;;;;;;353:18:225;;;2196:43:114;;;-1:-1:-1;;1671:64:114;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:114:o;508:322:225:-;549:3;587:5;581:12;611:1;621:128;635:6;632:1;629:13;621:128;;;732:4;717:13;;;713:24;;707:31;694:11;;;687:52;650:12;621:128;;;-1:-1:-1;804:1:225;768:16;;793:13;;;-1:-1:-1;768:16:225;;508:322;-1:-1:-1;508:322:225:o;835:324::-;1032:66;1024:6;1020:79;1015:3;1008:92;990:3;1116:37;1150:1;1145:3;1141:11;1133:6;1116:37;:::i;:::-;1109:44;835:324;-1:-1:-1;;;;835:324:225:o;1164:189::-;1293:3;1318:29;1343:3;1335:6;1318:29;:::i;:::-;1311:36;1164:189;-1:-1:-1;;;1164:189:225:o;1358:277::-;1425:6;1478:2;1466:9;1457:7;1453:23;1449:32;1446:52;;;1494:1;1491;1484:12;1446:52;1526:9;1520:16;1579:5;1572:13;1565:21;1558:5;1555:32;1545:60;;1601:1;1598;1591:12","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/ds-test/src/test.sol\":\"DSTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"node_modules/ds-test/src/test.sol":"DSTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"}},"version":1},"id":114}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@latticexyz/world-modules",
3
- "version": "2.0.4",
3
+ "version": "2.0.5-main-e2e8ec8b",
4
4
  "description": "World modules",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,11 +15,11 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "zod": "^3.21.4",
18
- "@latticexyz/common": "2.0.4",
19
- "@latticexyz/config": "2.0.4",
20
- "@latticexyz/schema-type": "2.0.4",
21
- "@latticexyz/store": "2.0.4",
22
- "@latticexyz/world": "2.0.4"
18
+ "@latticexyz/common": "2.0.5-main-e2e8ec8b",
19
+ "@latticexyz/schema-type": "2.0.5-main-e2e8ec8b",
20
+ "@latticexyz/store": "2.0.5-main-e2e8ec8b",
21
+ "@latticexyz/config": "2.0.5-main-e2e8ec8b",
22
+ "@latticexyz/world": "2.0.5-main-e2e8ec8b"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/ejs": "^3.1.1",
@@ -34,8 +34,8 @@
34
34
  "tsup": "^6.7.0",
35
35
  "tsx": "^3.12.6",
36
36
  "vitest": "0.34.6",
37
- "@latticexyz/abi-ts": "2.0.4",
38
- "@latticexyz/gas-report": "2.0.4"
37
+ "@latticexyz/abi-ts": "2.0.5-main-e2e8ec8b",
38
+ "@latticexyz/gas-report": "2.0.5-main-e2e8ec8b"
39
39
  },
40
40
  "publishConfig": {
41
41
  "access": "public"
package/src/index.sol CHANGED
@@ -22,4 +22,4 @@ import { Owners } from "./modules/erc721-puppet/tables/Owners.sol";
22
22
  import { TokenApproval } from "./modules/erc721-puppet/tables/TokenApproval.sol";
23
23
  import { OperatorApproval } from "./modules/erc721-puppet/tables/OperatorApproval.sol";
24
24
  import { ERC721Registry } from "./modules/erc721-puppet/tables/ERC721Registry.sol";
25
- import { UserDelegationNonces } from "./modules/delegation/tables/UserDelegationNonces.sol";
25
+ import { CallWithSignatureNonces } from "./modules/delegation/tables/CallWithSignatureNonces.sol";
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.8.24;
3
+
4
+ /* Autogenerated file. Do not edit manually. */
5
+
6
+ /**
7
+ * @title IERC721System
8
+ * @author MUD (https://mud.dev) by Lattice (https://lattice.xyz)
9
+ * @dev This interface is automatically generated from the corresponding system contract. Do not edit manually.
10
+ */
11
+ interface IERC721System {
12
+ function balanceOf(address owner) external view returns (uint256);
13
+
14
+ function ownerOf(uint256 tokenId) external view returns (address);
15
+
16
+ function name() external view returns (string memory);
17
+
18
+ function symbol() external view returns (string memory);
19
+
20
+ function tokenURI(uint256 tokenId) external view returns (string memory);
21
+
22
+ function approve(address to, uint256 tokenId) external;
23
+
24
+ function getApproved(uint256 tokenId) external view returns (address);
25
+
26
+ function setApprovalForAll(address operator, bool approved) external;
27
+
28
+ function isApprovedForAll(address owner, address operator) external view returns (bool);
29
+
30
+ function transferFrom(address from, address to, uint256 tokenId) external;
31
+
32
+ function safeTransferFrom(address from, address to, uint256 tokenId) external;
33
+
34
+ function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) external;
35
+
36
+ function mint(address to, uint256 tokenId) external;
37
+
38
+ function safeMint(address to, uint256 tokenId) external;
39
+
40
+ function safeMint(address to, uint256 tokenId, bytes memory data) external;
41
+
42
+ function burn(uint256 tokenId) external;
43
+ }
@@ -0,0 +1,13 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.8.24;
3
+
4
+ /* Autogenerated file. Do not edit manually. */
5
+
6
+ /**
7
+ * @title IUniqueEntitySystem
8
+ * @author MUD (https://mud.dev) by Lattice (https://lattice.xyz)
9
+ * @dev This interface is automatically generated from the corresponding system contract. Do not edit manually.
10
+ */
11
+ interface IUniqueEntitySystem {
12
+ function getUniqueEntity() external returns (bytes32);
13
+ }
@@ -6,18 +6,17 @@ pragma solidity >=0.8.24;
6
6
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
7
7
 
8
8
  /**
9
- * @title IUnstable_DelegationWithSignatureSystem
9
+ * @title IUnstable_CallWithSignatureSystem
10
10
  * @author MUD (https://mud.dev) by Lattice (https://lattice.xyz)
11
11
  * @dev This interface is automatically generated from the corresponding system contract. Do not edit manually.
12
12
  */
13
- interface IUnstable_DelegationWithSignatureSystem {
13
+ interface IUnstable_CallWithSignatureSystem {
14
14
  error InvalidSignature(address signer);
15
15
 
16
- function registerDelegationWithSignature(
17
- address delegatee,
18
- ResourceId delegationControlId,
19
- bytes memory initCallData,
20
- address delegator,
16
+ function callWithSignature(
17
+ address signer,
18
+ ResourceId systemId,
19
+ bytes memory callData,
21
20
  bytes memory signature
22
- ) external;
21
+ ) external payable returns (bytes memory);
23
22
  }
@@ -6,14 +6,13 @@ import { IBaseWorld } from "@latticexyz/world/src/codegen/interfaces/IBaseWorld.
6
6
  import { Module } from "@latticexyz/world/src/Module.sol";
7
7
  import { revertWithBytes } from "@latticexyz/world/src/revertWithBytes.sol";
8
8
 
9
- import { UserDelegationNonces } from "./tables/UserDelegationNonces.sol";
10
- import { Unstable_DelegationWithSignatureSystem } from "./Unstable_DelegationWithSignatureSystem.sol";
9
+ import { CallWithSignatureNonces } from "./tables/CallWithSignatureNonces.sol";
10
+ import { Unstable_CallWithSignatureSystem } from "./Unstable_CallWithSignatureSystem.sol";
11
11
 
12
12
  import { DELEGATION_SYSTEM_ID } from "./constants.sol";
13
13
 
14
- contract Unstable_DelegationWithSignatureModule is Module {
15
- Unstable_DelegationWithSignatureSystem private immutable delegationWithSignatureSystem =
16
- new Unstable_DelegationWithSignatureSystem();
14
+ contract Unstable_CallWithSignatureModule is Module {
15
+ Unstable_CallWithSignatureSystem private immutable callWithSignatureSystem = new Unstable_CallWithSignatureSystem();
17
16
 
18
17
  function installRoot(bytes memory encodedArgs) public {
19
18
  requireNotInstalled(__self, encodedArgs);
@@ -21,11 +20,11 @@ contract Unstable_DelegationWithSignatureModule is Module {
21
20
  IBaseWorld world = IBaseWorld(_world());
22
21
 
23
22
  // Register table
24
- UserDelegationNonces._register();
23
+ CallWithSignatureNonces._register();
25
24
 
26
25
  // Register system
27
26
  (bool success, bytes memory data) = address(world).delegatecall(
28
- abi.encodeCall(world.registerSystem, (DELEGATION_SYSTEM_ID, delegationWithSignatureSystem, true))
27
+ abi.encodeCall(world.registerSystem, (DELEGATION_SYSTEM_ID, callWithSignatureSystem, true))
29
28
  );
30
29
  if (!success) revertWithBytes(data);
31
30
 
@@ -35,8 +34,8 @@ contract Unstable_DelegationWithSignatureModule is Module {
35
34
  world.registerRootFunctionSelector,
36
35
  (
37
36
  DELEGATION_SYSTEM_ID,
38
- "registerDelegationWithSignature(address,bytes32,bytes,address,bytes)",
39
- "registerDelegationWithSignature(address,bytes32,bytes,address,bytes)"
37
+ "callWithSignature(address,bytes32,bytes,bytes)",
38
+ "callWithSignature(address,bytes32,bytes,bytes)"
40
39
  )
41
40
  )
42
41
  );
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.8.24;
3
+
4
+ import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
5
+ import { System } from "@latticexyz/world/src/System.sol";
6
+ import { SystemCall } from "@latticexyz/world/src/SystemCall.sol";
7
+ import { createDelegation } from "@latticexyz/world/src/modules/init/implementations/createDelegation.sol";
8
+
9
+ import { CallWithSignatureNonces } from "./tables/CallWithSignatureNonces.sol";
10
+ import { getSignedMessageHash } from "./getSignedMessageHash.sol";
11
+ import { ECDSA } from "./ECDSA.sol";
12
+
13
+ contract Unstable_CallWithSignatureSystem is System {
14
+ /**
15
+ * @dev Mismatched signature.
16
+ */
17
+ error InvalidSignature(address signer);
18
+
19
+ /**
20
+ * @notice Calls a system with a given system ID using the given signature.
21
+ * @param signer The address on whose behalf the system is called.
22
+ * @param systemId The ID of the system to be called.
23
+ * @param callData The ABI data for the system call.
24
+ * @param signature The EIP712 signature.
25
+ * @return Return data from the system call.
26
+ */
27
+ function callWithSignature(
28
+ address signer,
29
+ ResourceId systemId,
30
+ bytes memory callData,
31
+ bytes memory signature
32
+ ) external payable returns (bytes memory) {
33
+ uint256 nonce = CallWithSignatureNonces.get(signer);
34
+ bytes32 hash = getSignedMessageHash(signer, systemId, callData, nonce, _world());
35
+
36
+ // If the message was not signed by the delegator or is invalid, revert
37
+ address recoveredSigner = ECDSA.recover(hash, signature);
38
+ if (recoveredSigner != signer) {
39
+ revert InvalidSignature(recoveredSigner);
40
+ }
41
+
42
+ CallWithSignatureNonces.set(signer, nonce + 1);
43
+
44
+ return SystemCall.callWithHooksOrRevert(signer, systemId, callData, _msgValue());
45
+ }
46
+ }
@@ -3,27 +3,23 @@ pragma solidity >=0.8.24;
3
3
 
4
4
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
5
5
 
6
- // Implements EIP712 signatures https://eips.ethereum.org/EIPS/eip-712
7
-
8
- bytes32 constant DELEGATION_TYPEHASH = keccak256(
9
- "Delegation(address delegatee,bytes32 delegationControlId,bytes initCallData,address delegator,uint256 nonce)"
10
- );
6
+ bytes32 constant CALL_TYPEHASH = keccak256("Call(address signer,bytes32 systemId,bytes callData,uint256 nonce)");
11
7
 
12
8
  /**
13
9
  * @notice Generate the message hash for a given delegation signature.
14
- * @dev We include the delegator to prevent generating a garbage signature and registering a delegation for the corresponding recovered address.
15
- * @param delegatee The address of the delegatee
16
- * @param delegationControlId The ID controlling the delegation
17
- * @param initCallData The initialization data for the delegation
18
- * @param delegator The address of the delegator
19
- * @param nonce The nonce of the delegator
10
+ * For EIP712 signatures https://eips.ethereum.org/EIPS/eip-712
11
+ * @dev We include the signer address to prevent generating a signature that recovers to a random address that didn't sign the message.
12
+ * @param signer The address on whose behalf the system is called.
13
+ * @param systemId The ID of the system to be called.
14
+ * @param callData The ABI data for the system call.
15
+ * @param nonce The nonce of the signer
20
16
  * @param worldAddress The world address
17
+ * @return Return the message hash.
21
18
  */
22
19
  function getSignedMessageHash(
23
- address delegatee,
24
- ResourceId delegationControlId,
25
- bytes memory initCallData,
26
- address delegator,
20
+ address signer,
21
+ ResourceId systemId,
22
+ bytes memory callData,
27
23
  uint256 nonce,
28
24
  address worldAddress
29
25
  ) view returns (bytes32) {
@@ -36,9 +32,7 @@ function getSignedMessageHash(
36
32
  abi.encodePacked(
37
33
  "\x19\x01",
38
34
  domainSeperator,
39
- keccak256(
40
- abi.encode(DELEGATION_TYPEHASH, delegatee, delegationControlId, keccak256(initCallData), delegator, nonce)
41
- )
35
+ keccak256(abi.encode(CALL_TYPEHASH, signer, systemId, keccak256(callData), nonce))
42
36
  )
43
37
  );
44
38
  }
@@ -16,9 +16,9 @@ import { Schema } from "@latticexyz/store/src/Schema.sol";
16
16
  import { EncodedLengths, EncodedLengthsLib } from "@latticexyz/store/src/EncodedLengths.sol";
17
17
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
18
18
 
19
- library UserDelegationNonces {
20
- // Hex below is the result of `WorldResourceIdLib.encode({ namespace: "", name: "UserDelegationNo", typeId: RESOURCE_TABLE });`
21
- ResourceId constant _tableId = ResourceId.wrap(0x746200000000000000000000000000005573657244656c65676174696f6e4e6f);
19
+ library CallWithSignatureNonces {
20
+ // Hex below is the result of `WorldResourceIdLib.encode({ namespace: "", name: "CallWithSignatur", typeId: RESOURCE_TABLE });`
21
+ ResourceId constant _tableId = ResourceId.wrap(0x7462000000000000000000000000000043616c6c576974685369676e61747572);
22
22
 
23
23
  FieldLayout constant _fieldLayout =
24
24
  FieldLayout.wrap(0x0020010020000000000000000000000000000000000000000000000000000000);
@@ -34,7 +34,7 @@ library UserDelegationNonces {
34
34
  */
35
35
  function getKeyNames() internal pure returns (string[] memory keyNames) {
36
36
  keyNames = new string[](1);
37
- keyNames[0] = "delegator";
37
+ keyNames[0] = "signer";
38
38
  }
39
39
 
40
40
  /**
@@ -63,9 +63,9 @@ library UserDelegationNonces {
63
63
  /**
64
64
  * @notice Get nonce.
65
65
  */
66
- function getNonce(address delegator) internal view returns (uint256 nonce) {
66
+ function getNonce(address signer) internal view returns (uint256 nonce) {
67
67
  bytes32[] memory _keyTuple = new bytes32[](1);
68
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
68
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
69
69
 
70
70
  bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 0, _fieldLayout);
71
71
  return (uint256(bytes32(_blob)));
@@ -74,9 +74,9 @@ library UserDelegationNonces {
74
74
  /**
75
75
  * @notice Get nonce.
76
76
  */
77
- function _getNonce(address delegator) internal view returns (uint256 nonce) {
77
+ function _getNonce(address signer) internal view returns (uint256 nonce) {
78
78
  bytes32[] memory _keyTuple = new bytes32[](1);
79
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
79
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
80
80
 
81
81
  bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 0, _fieldLayout);
82
82
  return (uint256(bytes32(_blob)));
@@ -85,9 +85,9 @@ library UserDelegationNonces {
85
85
  /**
86
86
  * @notice Get nonce.
87
87
  */
88
- function get(address delegator) internal view returns (uint256 nonce) {
88
+ function get(address signer) internal view returns (uint256 nonce) {
89
89
  bytes32[] memory _keyTuple = new bytes32[](1);
90
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
90
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
91
91
 
92
92
  bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 0, _fieldLayout);
93
93
  return (uint256(bytes32(_blob)));
@@ -96,9 +96,9 @@ library UserDelegationNonces {
96
96
  /**
97
97
  * @notice Get nonce.
98
98
  */
99
- function _get(address delegator) internal view returns (uint256 nonce) {
99
+ function _get(address signer) internal view returns (uint256 nonce) {
100
100
  bytes32[] memory _keyTuple = new bytes32[](1);
101
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
101
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
102
102
 
103
103
  bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 0, _fieldLayout);
104
104
  return (uint256(bytes32(_blob)));
@@ -107,9 +107,9 @@ library UserDelegationNonces {
107
107
  /**
108
108
  * @notice Set nonce.
109
109
  */
110
- function setNonce(address delegator, uint256 nonce) internal {
110
+ function setNonce(address signer, uint256 nonce) internal {
111
111
  bytes32[] memory _keyTuple = new bytes32[](1);
112
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
112
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
113
113
 
114
114
  StoreSwitch.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((nonce)), _fieldLayout);
115
115
  }
@@ -117,9 +117,9 @@ library UserDelegationNonces {
117
117
  /**
118
118
  * @notice Set nonce.
119
119
  */
120
- function _setNonce(address delegator, uint256 nonce) internal {
120
+ function _setNonce(address signer, uint256 nonce) internal {
121
121
  bytes32[] memory _keyTuple = new bytes32[](1);
122
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
122
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
123
123
 
124
124
  StoreCore.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((nonce)), _fieldLayout);
125
125
  }
@@ -127,9 +127,9 @@ library UserDelegationNonces {
127
127
  /**
128
128
  * @notice Set nonce.
129
129
  */
130
- function set(address delegator, uint256 nonce) internal {
130
+ function set(address signer, uint256 nonce) internal {
131
131
  bytes32[] memory _keyTuple = new bytes32[](1);
132
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
132
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
133
133
 
134
134
  StoreSwitch.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((nonce)), _fieldLayout);
135
135
  }
@@ -137,9 +137,9 @@ library UserDelegationNonces {
137
137
  /**
138
138
  * @notice Set nonce.
139
139
  */
140
- function _set(address delegator, uint256 nonce) internal {
140
+ function _set(address signer, uint256 nonce) internal {
141
141
  bytes32[] memory _keyTuple = new bytes32[](1);
142
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
142
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
143
143
 
144
144
  StoreCore.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((nonce)), _fieldLayout);
145
145
  }
@@ -147,9 +147,9 @@ library UserDelegationNonces {
147
147
  /**
148
148
  * @notice Delete all data for given keys.
149
149
  */
150
- function deleteRecord(address delegator) internal {
150
+ function deleteRecord(address signer) internal {
151
151
  bytes32[] memory _keyTuple = new bytes32[](1);
152
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
152
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
153
153
 
154
154
  StoreSwitch.deleteRecord(_tableId, _keyTuple);
155
155
  }
@@ -157,9 +157,9 @@ library UserDelegationNonces {
157
157
  /**
158
158
  * @notice Delete all data for given keys.
159
159
  */
160
- function _deleteRecord(address delegator) internal {
160
+ function _deleteRecord(address signer) internal {
161
161
  bytes32[] memory _keyTuple = new bytes32[](1);
162
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
162
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
163
163
 
164
164
  StoreCore.deleteRecord(_tableId, _keyTuple, _fieldLayout);
165
165
  }
@@ -190,9 +190,9 @@ library UserDelegationNonces {
190
190
  /**
191
191
  * @notice Encode keys as a bytes32 array using this table's field layout.
192
192
  */
193
- function encodeKeyTuple(address delegator) internal pure returns (bytes32[] memory) {
193
+ function encodeKeyTuple(address signer) internal pure returns (bytes32[] memory) {
194
194
  bytes32[] memory _keyTuple = new bytes32[](1);
195
- _keyTuple[0] = bytes32(uint256(uint160(delegator)));
195
+ _keyTuple[0] = bytes32(uint256(uint160(signer)));
196
196
 
197
197
  return _keyTuple;
198
198
  }