@latticexyz/world-modules 2.0.0-main-87235a21 → 2.0.0-main-85218618

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 (89) hide show
  1. package/out/ArrayLib.sol/ArrayLib.json +255 -255
  2. package/out/CallboundDelegationControl.sol/CallboundDelegationControl.json +264 -227
  3. package/out/CallboundDelegations.sol/CallboundDelegations.json +2595 -2595
  4. package/out/DelegationControl.sol/DelegationControl.json +193 -143
  5. package/out/Hooks.sol/Hooks.json +45 -45
  6. package/out/IAccessManagementSystem.sol/IAccessManagementSystem.json +64 -64
  7. package/out/IBalanceTransferSystem.sol/IBalanceTransferSystem.json +53 -53
  8. package/out/IBaseWorld.sol/IBaseWorld.json +136 -91
  9. package/out/IBatchCallSystem.sol/IBatchCallSystem.json +51 -51
  10. package/out/ICoreSystem.sol/ICoreSystem.json +6 -6
  11. package/out/IDelegationControl.sol/IDelegationControl.json +138 -108
  12. package/out/IModule.sol/IModule.json +181 -151
  13. package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.json +34 -34
  14. package/out/ISystemHook.sol/ISystemHook.json +192 -152
  15. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.json +13 -13
  16. package/out/IWorldContextConsumer.sol/IWorldContextConsumer.json +172 -124
  17. package/out/IWorldErrors.sol/IWorldErrors.json +346 -256
  18. package/out/IWorldKernel.sol/IWorldCall.json +312 -272
  19. package/out/IWorldKernel.sol/IWorldKernel.json +339 -276
  20. package/out/IWorldKernel.sol/IWorldModuleInstallation.json +297 -271
  21. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.json +201 -201
  22. package/out/KeysInTable.sol/KeysInTable.json +10668 -10668
  23. package/out/KeysInTableHook.sol/KeysInTableHook.json +862 -862
  24. package/out/KeysInTableModule.sol/KeysInTableModule.json +607 -558
  25. package/out/KeysWithValue.sol/KeysWithValue.json +3828 -3828
  26. package/out/KeysWithValueHook.sol/KeysWithValueHook.json +1014 -1014
  27. package/out/KeysWithValueModule.sol/KeysWithValueModule.json +496 -447
  28. package/out/Module.sol/Module.json +192 -125
  29. package/out/ResourceIds.sol/ResourceIds.json +45 -45
  30. package/out/Schema.sol/SchemaInstance.json +30 -30
  31. package/out/Schema.sol/SchemaLib.json +30 -30
  32. package/out/SchemaType.sol/SchemaType.json +276 -276
  33. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.json +372 -329
  34. package/out/StoreHook.sol/StoreHook.json +358 -358
  35. package/out/StoreHooks.sol/StoreHooks.json +45 -45
  36. package/out/System.sol/System.json +84 -41
  37. package/out/Tables.sol/Tables.json +73 -73
  38. package/out/TimeboundDelegationControl.sol/TimeboundDelegationControl.json +168 -131
  39. package/out/TimeboundDelegations.sol/TimeboundDelegations.json +1986 -1986
  40. package/out/UniqueEntity.sol/UniqueEntity.json +1402 -1402
  41. package/out/UniqueEntityModule.sol/UniqueEntityModule.json +393 -350
  42. package/out/UniqueEntitySystem.sol/UniqueEntitySystem.json +138 -102
  43. package/out/UsedKeysIndex.sol/UsedKeysIndex.json +2722 -2722
  44. package/out/WorldContext.sol/WorldContextConsumer.json +780 -683
  45. package/out/WorldContext.sol/WorldContextProvider.json +743 -683
  46. package/out/WorldResourceId.sol/WorldResourceIdInstance.json +777 -765
  47. package/out/WorldResourceId.sol/WorldResourceIdLib.json +777 -765
  48. package/out/constants.sol/constants.json +115 -115
  49. package/out/getKeysInTable.sol/getKeysInTable.json +564 -564
  50. package/out/getKeysWithValue.sol/getKeysWithValue.json +264 -264
  51. package/out/getTargetTableId.sol/getTargetTableId.json +163 -163
  52. package/out/getUniqueEntity.sol/getUniqueEntity.json +88 -88
  53. package/out/hasKey.sol/hasKey.json +130 -130
  54. package/out/index.sol/index.json +53 -53
  55. package/out/interfaces/IBaseWorld.sol/IBaseWorld.json +205 -160
  56. package/out/query.sol/query.json +1154 -1154
  57. package/out/revertWithBytes.sol/revertWithBytes.json +15 -15
  58. package/out/src/Bytes.sol/Bytes.json +1332 -1332
  59. package/out/src/FieldLayout.sol/FieldLayoutInstance.json +697 -697
  60. package/out/src/FieldLayout.sol/FieldLayoutLib.json +697 -697
  61. package/out/src/IStore.sol/IStore.json +53 -53
  62. package/out/src/IWorldKernel.sol/IWorldCall.json +313 -273
  63. package/out/src/IWorldKernel.sol/IWorldKernel.json +340 -277
  64. package/out/src/IWorldKernel.sol/IWorldModuleInstallation.json +298 -272
  65. package/out/src/Memory.sol/Memory.json +89 -89
  66. package/out/src/PackedCounter.sol/PackedCounterInstance.json +923 -923
  67. package/out/src/PackedCounter.sol/PackedCounterLib.json +923 -923
  68. package/out/src/ResourceId.sol/ResourceIdInstance.json +112 -112
  69. package/out/src/ResourceId.sol/ResourceIdLib.json +112 -112
  70. package/out/src/Schema.sol/SchemaInstance.json +787 -787
  71. package/out/src/Schema.sol/SchemaLib.json +787 -787
  72. package/out/src/Slice.sol/SliceInstance.json +429 -429
  73. package/out/src/Slice.sol/SliceLib.json +429 -429
  74. package/out/src/StoreCore.sol/StoreCore.json +4455 -4455
  75. package/out/src/StoreCore.sol/StoreCoreInternal.json +4455 -4455
  76. package/out/src/StoreSwitch.sol/StoreSwitch.json +2454 -2454
  77. package/out/src/WorldContext.sol/WorldContextConsumer.json +780 -683
  78. package/out/src/WorldContext.sol/WorldContextProvider.json +743 -683
  79. package/out/src/WorldResourceId.sol/WorldResourceIdInstance.json +777 -765
  80. package/out/src/WorldResourceId.sol/WorldResourceIdLib.json +777 -765
  81. package/out/storeHookTypes.sol/storeHookTypes.json +115 -115
  82. package/out/storeResourceTypes.sol/storeResourceTypes.json +12 -12
  83. package/out/tables/ResourceIds.sol/ResourceIds.json +1746 -1746
  84. package/out/tables/Tables.sol/Tables.json +7288 -7288
  85. package/out/tightcoder/EncodeArray.sol/EncodeArray.json +3246 -3246
  86. package/out/types.sol/types.json +39 -39
  87. package/out/world/src/IERC165.sol/IERC165.json +63 -57
  88. package/out/worldResourceTypes.sol/worldResourceTypes.json +87 -87
  89. package/package.json +8 -8
@@ -75,7 +75,7 @@
75
75
  "_world()": "e1af802c",
76
76
  "supportsInterface(bytes4)": "01ffc9a7"
77
77
  },
78
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"_msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_msgValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_world\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/mud/mud/packages/world/src/IWorldContextConsumer.sol\":\"IWorldContextConsumer\"},\"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\":{\"/home/runner/work/mud/mud/packages/world/src/IERC165.sol\":{\"keccak256\":\"0x1a113ae394de69ca1db7e9acb1886eaee3967dcfed46fc78497e77bc26dd778f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://091e04dc9e8d5b3a492d1d39a6d06fd5b4bad3c282bd4c06a38d92bec3422513\",\"dweb:/ipfs/QmbfMi1bH9RAs4JMDxKmhVqpAoyoVgN9nd7o11SakJC1zQ\"]},\"/home/runner/work/mud/mud/packages/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0x0c0f9eba3a700d97a3b87678bbf12d4bbd8a80490e9b3a5841d049ebc1a89f93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a56466e8ddcaf10b9109bfbc581563f5e9eefcaff1963a6954ccd093859ef6d2\",\"dweb:/ipfs/QmNk6FvWzmLT3vnsUuzqr9MYMfaQRa7yLuNM7DVvpkuytf\"]}},\"version\":1}",
78
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"_msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_msgValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_world\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract should only be used for contracts without their own storage, like Systems.\",\"kind\":\"dev\",\"methods\":{\"_msgSender()\":{\"returns\":{\"_0\":\"The address of the `msg.sender` that called the World contract before the World routed the call to the WorldContextConsumer contract.\"}},\"_msgValue()\":{\"returns\":{\"_0\":\"The `msg.value` in the call to the World contract before the World routed the call to the WorldContextConsumer contract.\"}},\"_world()\":{\"returns\":{\"_0\":\"The address of the World contract that routed the call to this WorldContextConsumer.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165.\"},\"returns\":{\"_0\":\"True if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, false otherwise.\"}}},\"title\":\"WorldContextConsumer - Extracting trusted context values from appended calldata.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"_msgSender()\":{\"notice\":\"Extract the `msg.sender` from the context appended to the calldata.\"},\"_msgValue()\":{\"notice\":\"Extract the `msg.value` from the context appended to the calldata.\"},\"_world()\":{\"notice\":\"Get the address of the World contract that routed the call to this WorldContextConsumer.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface.\"}},\"notice\":\"This contract is designed to extract trusted context values (like msg.sender and msg.value) from the appended calldata. It provides mechanisms similar to EIP-2771 (https://eips.ethereum.org/EIPS/eip-2771), but allowing any contract to be the trusted forwarder.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/mud/mud/packages/world/src/IWorldContextConsumer.sol\":\"IWorldContextConsumer\"},\"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\":{\"/home/runner/work/mud/mud/packages/world/src/IERC165.sol\":{\"keccak256\":\"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5\",\"dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y\"]},\"/home/runner/work/mud/mud/packages/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0x22b8cb3ffcc21cb1657d57fc8ac929d2d6fdd199328e6f43ad2cb54f53dcd500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47c001f6b7c6d6e453c340618d23b1532078abb7d0fd7283405071e4e8ff8d2d\",\"dweb:/ipfs/QmRW3femBhqQCPwDEj4Jop2Dnd3EU21ufg7GDVwN4joCQu\"]}},\"version\":1}",
79
79
  "metadata": {
80
80
  "compiler": {
81
81
  "version": "0.8.21+commit.d9974bed"
@@ -145,13 +145,28 @@
145
145
  "devdoc": {
146
146
  "kind": "dev",
147
147
  "methods": {
148
+ "_msgSender()": {
149
+ "returns": {
150
+ "_0": "The address of the `msg.sender` that called the World contract before the World routed the call to the WorldContextConsumer contract."
151
+ }
152
+ },
153
+ "_msgValue()": {
154
+ "returns": {
155
+ "_0": "The `msg.value` in the call to the World contract before the World routed the call to the WorldContextConsumer contract."
156
+ }
157
+ },
158
+ "_world()": {
159
+ "returns": {
160
+ "_0": "The address of the World contract that routed the call to this WorldContextConsumer."
161
+ }
162
+ },
148
163
  "supportsInterface(bytes4)": {
149
- "details": "Interface identification is specified in ERC-165. This function uses less than 30,000 gas.",
164
+ "details": "Interface identification is specified in ERC-165. This function uses less than 30,000 gas.",
150
165
  "params": {
151
- "interfaceID": "The interface identifier, as specified in ERC-165"
166
+ "interfaceID": "The interface identifier, as specified in ERC-165."
152
167
  },
153
168
  "returns": {
154
- "_0": "`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"
169
+ "_0": "True if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, false otherwise."
155
170
  }
156
171
  }
157
172
  },
@@ -160,8 +175,17 @@
160
175
  "userdoc": {
161
176
  "kind": "user",
162
177
  "methods": {
178
+ "_msgSender()": {
179
+ "notice": "Extract the `msg.sender` from the context appended to the calldata."
180
+ },
181
+ "_msgValue()": {
182
+ "notice": "Extract the `msg.value` from the context appended to the calldata."
183
+ },
184
+ "_world()": {
185
+ "notice": "Get the address of the World contract that routed the call to this WorldContextConsumer."
186
+ },
163
187
  "supportsInterface(bytes4)": {
164
- "notice": "Query if a contract implements an interface"
188
+ "notice": "Query if a contract implements an interface."
165
189
  }
166
190
  },
167
191
  "version": 1
@@ -187,18 +211,18 @@
187
211
  },
188
212
  "sources": {
189
213
  "/home/runner/work/mud/mud/packages/world/src/IERC165.sol": {
190
- "keccak256": "0x1a113ae394de69ca1db7e9acb1886eaee3967dcfed46fc78497e77bc26dd778f",
214
+ "keccak256": "0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47",
191
215
  "urls": [
192
- "bzz-raw://091e04dc9e8d5b3a492d1d39a6d06fd5b4bad3c282bd4c06a38d92bec3422513",
193
- "dweb:/ipfs/QmbfMi1bH9RAs4JMDxKmhVqpAoyoVgN9nd7o11SakJC1zQ"
216
+ "bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5",
217
+ "dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y"
194
218
  ],
195
219
  "license": "MIT"
196
220
  },
197
221
  "/home/runner/work/mud/mud/packages/world/src/IWorldContextConsumer.sol": {
198
- "keccak256": "0x0c0f9eba3a700d97a3b87678bbf12d4bbd8a80490e9b3a5841d049ebc1a89f93",
222
+ "keccak256": "0x22b8cb3ffcc21cb1657d57fc8ac929d2d6fdd199328e6f43ad2cb54f53dcd500",
199
223
  "urls": [
200
- "bzz-raw://a56466e8ddcaf10b9109bfbc581563f5e9eefcaff1963a6954ccd093859ef6d2",
201
- "dweb:/ipfs/QmNk6FvWzmLT3vnsUuzqr9MYMfaQRa7yLuNM7DVvpkuytf"
224
+ "bzz-raw://47c001f6b7c6d6e453c340618d23b1532078abb7d0fd7283405071e4e8ff8d2d",
225
+ "dweb:/ipfs/QmRW3femBhqQCPwDEj4Jop2Dnd3EU21ufg7GDVwN4joCQu"
202
226
  ],
203
227
  "license": "MIT"
204
228
  }
@@ -207,26 +231,26 @@
207
231
  },
208
232
  "ast": {
209
233
  "absolutePath": "/home/runner/work/mud/mud/packages/world/src/IWorldContextConsumer.sol",
210
- "id": 23058,
234
+ "id": 23074,
211
235
  "exportedSymbols": {
212
236
  "ERC165_INTERFACE_ID": [
213
- 22924
237
+ 22927
214
238
  ],
215
239
  "IERC165": [
216
- 22933
240
+ 22937
217
241
  ],
218
242
  "IWorldContextConsumer": [
219
- 23057
243
+ 23073
220
244
  ],
221
245
  "WORLD_CONTEXT_CONSUMER_INTERFACE_ID": [
222
- 23039
246
+ 23051
223
247
  ]
224
248
  },
225
249
  "nodeType": "SourceUnit",
226
- "src": "32:583:37",
250
+ "src": "32:1985:37",
227
251
  "nodes": [
228
252
  {
229
- "id": 23021,
253
+ "id": 23032,
230
254
  "nodeType": "PragmaDirective",
231
255
  "src": "32:25:37",
232
256
  "nodes": [],
@@ -238,23 +262,23 @@
238
262
  ]
239
263
  },
240
264
  {
241
- "id": 23024,
265
+ "id": 23035,
242
266
  "nodeType": "ImportDirective",
243
267
  "src": "59:61:37",
244
268
  "nodes": [],
245
269
  "absolutePath": "/home/runner/work/mud/mud/packages/world/src/IERC165.sol",
246
270
  "file": "./IERC165.sol",
247
271
  "nameLocation": "-1:-1:-1",
248
- "scope": 23058,
249
- "sourceUnit": 22934,
272
+ "scope": 23074,
273
+ "sourceUnit": 22938,
250
274
  "symbolAliases": [
251
275
  {
252
276
  "foreign": {
253
- "id": 23022,
277
+ "id": 23033,
254
278
  "name": "IERC165",
255
279
  "nodeType": "Identifier",
256
280
  "overloadedDeclarations": [],
257
- "referencedDeclaration": 22933,
281
+ "referencedDeclaration": 22937,
258
282
  "src": "68:7:37",
259
283
  "typeDescriptions": {}
260
284
  },
@@ -262,11 +286,11 @@
262
286
  },
263
287
  {
264
288
  "foreign": {
265
- "id": 23023,
289
+ "id": 23034,
266
290
  "name": "ERC165_INTERFACE_ID",
267
291
  "nodeType": "Identifier",
268
292
  "overloadedDeclarations": [],
269
- "referencedDeclaration": 22924,
293
+ "referencedDeclaration": 22927,
270
294
  "src": "77:19:37",
271
295
  "typeDescriptions": {}
272
296
  },
@@ -276,15 +300,15 @@
276
300
  "unitAlias": ""
277
301
  },
278
302
  {
279
- "id": 23039,
303
+ "id": 23051,
280
304
  "nodeType": "VariableDeclaration",
281
- "src": "191:206:37",
305
+ "src": "431:206:37",
282
306
  "nodes": [],
283
307
  "constant": true,
284
308
  "mutability": "constant",
285
309
  "name": "WORLD_CONTEXT_CONSUMER_INTERFACE_ID",
286
- "nameLocation": "207:35:37",
287
- "scope": 23058,
310
+ "nameLocation": "447:35:37",
311
+ "scope": 23074,
288
312
  "stateVariable": false,
289
313
  "storageLocation": "default",
290
314
  "typeDescriptions": {
@@ -292,10 +316,10 @@
292
316
  "typeString": "bytes4"
293
317
  },
294
318
  "typeName": {
295
- "id": 23025,
319
+ "id": 23037,
296
320
  "name": "bytes4",
297
321
  "nodeType": "ElementaryTypeName",
298
- "src": "191:6:37",
322
+ "src": "431:6:37",
299
323
  "typeDescriptions": {
300
324
  "typeIdentifier": "t_bytes4",
301
325
  "typeString": "bytes4"
@@ -306,7 +330,7 @@
306
330
  "typeIdentifier": "t_bytes4",
307
331
  "typeString": "bytes4"
308
332
  },
309
- "id": 23038,
333
+ "id": 23050,
310
334
  "isConstant": false,
311
335
  "isLValue": false,
312
336
  "isPure": true,
@@ -316,7 +340,7 @@
316
340
  "typeIdentifier": "t_bytes4",
317
341
  "typeString": "bytes4"
318
342
  },
319
- "id": 23036,
343
+ "id": 23048,
320
344
  "isConstant": false,
321
345
  "isLValue": false,
322
346
  "isPure": true,
@@ -326,7 +350,7 @@
326
350
  "typeIdentifier": "t_bytes4",
327
351
  "typeString": "bytes4"
328
352
  },
329
- "id": 23032,
353
+ "id": 23044,
330
354
  "isConstant": false,
331
355
  "isLValue": false,
332
356
  "isPure": true,
@@ -334,41 +358,41 @@
334
358
  "leftExpression": {
335
359
  "expression": {
336
360
  "expression": {
337
- "id": 23026,
361
+ "id": 23038,
338
362
  "name": "IWorldContextConsumer",
339
363
  "nodeType": "Identifier",
340
364
  "overloadedDeclarations": [],
341
- "referencedDeclaration": 23057,
342
- "src": "245:21:37",
365
+ "referencedDeclaration": 23073,
366
+ "src": "485:21:37",
343
367
  "typeDescriptions": {
344
- "typeIdentifier": "t_type$_t_contract$_IWorldContextConsumer_$23057_$",
368
+ "typeIdentifier": "t_type$_t_contract$_IWorldContextConsumer_$23073_$",
345
369
  "typeString": "type(contract IWorldContextConsumer)"
346
370
  }
347
371
  },
348
- "id": 23027,
372
+ "id": 23039,
349
373
  "isConstant": false,
350
374
  "isLValue": false,
351
375
  "isPure": true,
352
376
  "lValueRequested": false,
353
- "memberLocation": "267:10:37",
377
+ "memberLocation": "507:10:37",
354
378
  "memberName": "_msgSender",
355
379
  "nodeType": "MemberAccess",
356
- "referencedDeclaration": 23046,
357
- "src": "245:32:37",
380
+ "referencedDeclaration": 23060,
381
+ "src": "485:32:37",
358
382
  "typeDescriptions": {
359
383
  "typeIdentifier": "t_function_declaration_view$__$returns$_t_address_$",
360
384
  "typeString": "function IWorldContextConsumer._msgSender() view returns (address)"
361
385
  }
362
386
  },
363
- "id": 23028,
387
+ "id": 23040,
364
388
  "isConstant": false,
365
389
  "isLValue": false,
366
390
  "isPure": true,
367
391
  "lValueRequested": false,
368
- "memberLocation": "278:8:37",
392
+ "memberLocation": "518:8:37",
369
393
  "memberName": "selector",
370
394
  "nodeType": "MemberAccess",
371
- "src": "245:41:37",
395
+ "src": "485:41:37",
372
396
  "typeDescriptions": {
373
397
  "typeIdentifier": "t_bytes4",
374
398
  "typeString": "bytes4"
@@ -379,47 +403,47 @@
379
403
  "rightExpression": {
380
404
  "expression": {
381
405
  "expression": {
382
- "id": 23029,
406
+ "id": 23041,
383
407
  "name": "IWorldContextConsumer",
384
408
  "nodeType": "Identifier",
385
409
  "overloadedDeclarations": [],
386
- "referencedDeclaration": 23057,
387
- "src": "291:21:37",
410
+ "referencedDeclaration": 23073,
411
+ "src": "531:21:37",
388
412
  "typeDescriptions": {
389
- "typeIdentifier": "t_type$_t_contract$_IWorldContextConsumer_$23057_$",
413
+ "typeIdentifier": "t_type$_t_contract$_IWorldContextConsumer_$23073_$",
390
414
  "typeString": "type(contract IWorldContextConsumer)"
391
415
  }
392
416
  },
393
- "id": 23030,
417
+ "id": 23042,
394
418
  "isConstant": false,
395
419
  "isLValue": false,
396
420
  "isPure": true,
397
421
  "lValueRequested": false,
398
- "memberLocation": "313:9:37",
422
+ "memberLocation": "553:9:37",
399
423
  "memberName": "_msgValue",
400
424
  "nodeType": "MemberAccess",
401
- "referencedDeclaration": 23051,
402
- "src": "291:31:37",
425
+ "referencedDeclaration": 23066,
426
+ "src": "531:31:37",
403
427
  "typeDescriptions": {
404
428
  "typeIdentifier": "t_function_declaration_view$__$returns$_t_uint256_$",
405
429
  "typeString": "function IWorldContextConsumer._msgValue() view returns (uint256)"
406
430
  }
407
431
  },
408
- "id": 23031,
432
+ "id": 23043,
409
433
  "isConstant": false,
410
434
  "isLValue": false,
411
435
  "isPure": true,
412
436
  "lValueRequested": false,
413
- "memberLocation": "323:8:37",
437
+ "memberLocation": "563:8:37",
414
438
  "memberName": "selector",
415
439
  "nodeType": "MemberAccess",
416
- "src": "291:40:37",
440
+ "src": "531:40:37",
417
441
  "typeDescriptions": {
418
442
  "typeIdentifier": "t_bytes4",
419
443
  "typeString": "bytes4"
420
444
  }
421
445
  },
422
- "src": "245:86:37",
446
+ "src": "485:86:37",
423
447
  "typeDescriptions": {
424
448
  "typeIdentifier": "t_bytes4",
425
449
  "typeString": "bytes4"
@@ -430,47 +454,47 @@
430
454
  "rightExpression": {
431
455
  "expression": {
432
456
  "expression": {
433
- "id": 23033,
457
+ "id": 23045,
434
458
  "name": "IWorldContextConsumer",
435
459
  "nodeType": "Identifier",
436
460
  "overloadedDeclarations": [],
437
- "referencedDeclaration": 23057,
438
- "src": "336:21:37",
461
+ "referencedDeclaration": 23073,
462
+ "src": "576:21:37",
439
463
  "typeDescriptions": {
440
- "typeIdentifier": "t_type$_t_contract$_IWorldContextConsumer_$23057_$",
464
+ "typeIdentifier": "t_type$_t_contract$_IWorldContextConsumer_$23073_$",
441
465
  "typeString": "type(contract IWorldContextConsumer)"
442
466
  }
443
467
  },
444
- "id": 23034,
468
+ "id": 23046,
445
469
  "isConstant": false,
446
470
  "isLValue": false,
447
471
  "isPure": true,
448
472
  "lValueRequested": false,
449
- "memberLocation": "358:6:37",
473
+ "memberLocation": "598:6:37",
450
474
  "memberName": "_world",
451
475
  "nodeType": "MemberAccess",
452
- "referencedDeclaration": 23056,
453
- "src": "336:28:37",
476
+ "referencedDeclaration": 23072,
477
+ "src": "576:28:37",
454
478
  "typeDescriptions": {
455
479
  "typeIdentifier": "t_function_declaration_view$__$returns$_t_address_$",
456
480
  "typeString": "function IWorldContextConsumer._world() view returns (address)"
457
481
  }
458
482
  },
459
- "id": 23035,
483
+ "id": 23047,
460
484
  "isConstant": false,
461
485
  "isLValue": false,
462
486
  "isPure": true,
463
487
  "lValueRequested": false,
464
- "memberLocation": "365:8:37",
488
+ "memberLocation": "605:8:37",
465
489
  "memberName": "selector",
466
490
  "nodeType": "MemberAccess",
467
- "src": "336:37:37",
491
+ "src": "576:37:37",
468
492
  "typeDescriptions": {
469
493
  "typeIdentifier": "t_bytes4",
470
494
  "typeString": "bytes4"
471
495
  }
472
496
  },
473
- "src": "245:128:37",
497
+ "src": "485:128:37",
474
498
  "typeDescriptions": {
475
499
  "typeIdentifier": "t_bytes4",
476
500
  "typeString": "bytes4"
@@ -479,18 +503,18 @@
479
503
  "nodeType": "BinaryOperation",
480
504
  "operator": "^",
481
505
  "rightExpression": {
482
- "id": 23037,
506
+ "id": 23049,
483
507
  "name": "ERC165_INTERFACE_ID",
484
508
  "nodeType": "Identifier",
485
509
  "overloadedDeclarations": [],
486
- "referencedDeclaration": 22924,
487
- "src": "378:19:37",
510
+ "referencedDeclaration": 22927,
511
+ "src": "618:19:37",
488
512
  "typeDescriptions": {
489
513
  "typeIdentifier": "t_bytes4",
490
514
  "typeString": "bytes4"
491
515
  }
492
516
  },
493
- "src": "245:152:37",
517
+ "src": "485:152:37",
494
518
  "typeDescriptions": {
495
519
  "typeIdentifier": "t_bytes4",
496
520
  "typeString": "bytes4"
@@ -499,40 +523,46 @@
499
523
  "visibility": "internal"
500
524
  },
501
525
  {
502
- "id": 23057,
526
+ "id": 23073,
503
527
  "nodeType": "ContractDefinition",
504
- "src": "400:214:37",
528
+ "src": "1114:902:37",
505
529
  "nodes": [
506
530
  {
507
- "id": 23046,
531
+ "id": 23060,
508
532
  "nodeType": "FunctionDefinition",
509
- "src": "447:54:37",
533
+ "src": "1406:54:37",
510
534
  "nodes": [],
535
+ "documentation": {
536
+ "id": 23055,
537
+ "nodeType": "StructuredDocumentation",
538
+ "src": "1161:242:37",
539
+ "text": " @notice Extract the `msg.sender` from the context appended to the calldata.\n @return The address of the `msg.sender` that called the World contract\n before the World routed the call to the WorldContextConsumer contract."
540
+ },
511
541
  "functionSelector": "119df25f",
512
542
  "implemented": false,
513
543
  "kind": "function",
514
544
  "modifiers": [],
515
545
  "name": "_msgSender",
516
- "nameLocation": "456:10:37",
546
+ "nameLocation": "1415:10:37",
517
547
  "parameters": {
518
- "id": 23042,
548
+ "id": 23056,
519
549
  "nodeType": "ParameterList",
520
550
  "parameters": [],
521
- "src": "466:2:37"
551
+ "src": "1425:2:37"
522
552
  },
523
553
  "returnParameters": {
524
- "id": 23045,
554
+ "id": 23059,
525
555
  "nodeType": "ParameterList",
526
556
  "parameters": [
527
557
  {
528
558
  "constant": false,
529
- "id": 23044,
559
+ "id": 23058,
530
560
  "mutability": "mutable",
531
561
  "name": "",
532
562
  "nameLocation": "-1:-1:-1",
533
563
  "nodeType": "VariableDeclaration",
534
- "scope": 23046,
535
- "src": "492:7:37",
564
+ "scope": 23060,
565
+ "src": "1451:7:37",
536
566
  "stateVariable": false,
537
567
  "storageLocation": "default",
538
568
  "typeDescriptions": {
@@ -540,10 +570,10 @@
540
570
  "typeString": "address"
541
571
  },
542
572
  "typeName": {
543
- "id": 23043,
573
+ "id": 23057,
544
574
  "name": "address",
545
575
  "nodeType": "ElementaryTypeName",
546
- "src": "492:7:37",
576
+ "src": "1451:7:37",
547
577
  "stateMutability": "nonpayable",
548
578
  "typeDescriptions": {
549
579
  "typeIdentifier": "t_address",
@@ -553,43 +583,49 @@
553
583
  "visibility": "internal"
554
584
  }
555
585
  ],
556
- "src": "491:9:37"
586
+ "src": "1450:9:37"
557
587
  },
558
- "scope": 23057,
588
+ "scope": 23073,
559
589
  "stateMutability": "view",
560
590
  "virtual": false,
561
591
  "visibility": "external"
562
592
  },
563
593
  {
564
- "id": 23051,
594
+ "id": 23066,
565
595
  "nodeType": "FunctionDefinition",
566
- "src": "505:53:37",
596
+ "src": "1695:53:37",
567
597
  "nodes": [],
598
+ "documentation": {
599
+ "id": 23061,
600
+ "nodeType": "StructuredDocumentation",
601
+ "src": "1464:228:37",
602
+ "text": " @notice Extract the `msg.value` from the context appended to the calldata.\n @return The `msg.value` in the call to the World contract before the World routed the\n call to the WorldContextConsumer contract."
603
+ },
568
604
  "functionSelector": "45ec9354",
569
605
  "implemented": false,
570
606
  "kind": "function",
571
607
  "modifiers": [],
572
608
  "name": "_msgValue",
573
- "nameLocation": "514:9:37",
609
+ "nameLocation": "1704:9:37",
574
610
  "parameters": {
575
- "id": 23047,
611
+ "id": 23062,
576
612
  "nodeType": "ParameterList",
577
613
  "parameters": [],
578
- "src": "523:2:37"
614
+ "src": "1713:2:37"
579
615
  },
580
616
  "returnParameters": {
581
- "id": 23050,
617
+ "id": 23065,
582
618
  "nodeType": "ParameterList",
583
619
  "parameters": [
584
620
  {
585
621
  "constant": false,
586
- "id": 23049,
622
+ "id": 23064,
587
623
  "mutability": "mutable",
588
624
  "name": "",
589
625
  "nameLocation": "-1:-1:-1",
590
626
  "nodeType": "VariableDeclaration",
591
- "scope": 23051,
592
- "src": "549:7:37",
627
+ "scope": 23066,
628
+ "src": "1739:7:37",
593
629
  "stateVariable": false,
594
630
  "storageLocation": "default",
595
631
  "typeDescriptions": {
@@ -597,10 +633,10 @@
597
633
  "typeString": "uint256"
598
634
  },
599
635
  "typeName": {
600
- "id": 23048,
636
+ "id": 23063,
601
637
  "name": "uint256",
602
638
  "nodeType": "ElementaryTypeName",
603
- "src": "549:7:37",
639
+ "src": "1739:7:37",
604
640
  "typeDescriptions": {
605
641
  "typeIdentifier": "t_uint256",
606
642
  "typeString": "uint256"
@@ -609,43 +645,49 @@
609
645
  "visibility": "internal"
610
646
  }
611
647
  ],
612
- "src": "548:9:37"
648
+ "src": "1738:9:37"
613
649
  },
614
- "scope": 23057,
650
+ "scope": 23073,
615
651
  "stateMutability": "view",
616
652
  "virtual": false,
617
653
  "visibility": "external"
618
654
  },
619
655
  {
620
- "id": 23056,
656
+ "id": 23072,
621
657
  "nodeType": "FunctionDefinition",
622
- "src": "562:50:37",
658
+ "src": "1964:50:37",
623
659
  "nodes": [],
660
+ "documentation": {
661
+ "id": 23067,
662
+ "nodeType": "StructuredDocumentation",
663
+ "src": "1752:209:37",
664
+ "text": " @notice Get the address of the World contract that routed the call to this WorldContextConsumer.\n @return The address of the World contract that routed the call to this WorldContextConsumer."
665
+ },
624
666
  "functionSelector": "e1af802c",
625
667
  "implemented": false,
626
668
  "kind": "function",
627
669
  "modifiers": [],
628
670
  "name": "_world",
629
- "nameLocation": "571:6:37",
671
+ "nameLocation": "1973:6:37",
630
672
  "parameters": {
631
- "id": 23052,
673
+ "id": 23068,
632
674
  "nodeType": "ParameterList",
633
675
  "parameters": [],
634
- "src": "577:2:37"
676
+ "src": "1979:2:37"
635
677
  },
636
678
  "returnParameters": {
637
- "id": 23055,
679
+ "id": 23071,
638
680
  "nodeType": "ParameterList",
639
681
  "parameters": [
640
682
  {
641
683
  "constant": false,
642
- "id": 23054,
684
+ "id": 23070,
643
685
  "mutability": "mutable",
644
686
  "name": "",
645
687
  "nameLocation": "-1:-1:-1",
646
688
  "nodeType": "VariableDeclaration",
647
- "scope": 23056,
648
- "src": "603:7:37",
689
+ "scope": 23072,
690
+ "src": "2005:7:37",
649
691
  "stateVariable": false,
650
692
  "storageLocation": "default",
651
693
  "typeDescriptions": {
@@ -653,10 +695,10 @@
653
695
  "typeString": "address"
654
696
  },
655
697
  "typeName": {
656
- "id": 23053,
698
+ "id": 23069,
657
699
  "name": "address",
658
700
  "nodeType": "ElementaryTypeName",
659
- "src": "603:7:37",
701
+ "src": "2005:7:37",
660
702
  "stateMutability": "nonpayable",
661
703
  "typeDescriptions": {
662
704
  "typeIdentifier": "t_address",
@@ -666,9 +708,9 @@
666
708
  "visibility": "internal"
667
709
  }
668
710
  ],
669
- "src": "602:9:37"
711
+ "src": "2004:9:37"
670
712
  },
671
- "scope": 23057,
713
+ "scope": 23073,
672
714
  "stateMutability": "view",
673
715
  "virtual": false,
674
716
  "visibility": "external"
@@ -678,31 +720,37 @@
678
720
  "baseContracts": [
679
721
  {
680
722
  "baseName": {
681
- "id": 23040,
723
+ "id": 23053,
682
724
  "name": "IERC165",
683
725
  "nameLocations": [
684
- "435:7:37"
726
+ "1149:7:37"
685
727
  ],
686
728
  "nodeType": "IdentifierPath",
687
- "referencedDeclaration": 22933,
688
- "src": "435:7:37"
729
+ "referencedDeclaration": 22937,
730
+ "src": "1149:7:37"
689
731
  },
690
- "id": 23041,
732
+ "id": 23054,
691
733
  "nodeType": "InheritanceSpecifier",
692
- "src": "435:7:37"
734
+ "src": "1149:7:37"
693
735
  }
694
736
  ],
695
737
  "canonicalName": "IWorldContextConsumer",
696
738
  "contractDependencies": [],
697
739
  "contractKind": "interface",
740
+ "documentation": {
741
+ "id": 23052,
742
+ "nodeType": "StructuredDocumentation",
743
+ "src": "640:473:37",
744
+ "text": " @title WorldContextConsumer - Extracting trusted context values from appended calldata.\n @notice This contract is designed to extract trusted context values (like msg.sender and msg.value)\n from the appended calldata. It provides mechanisms similar to EIP-2771 (https://eips.ethereum.org/EIPS/eip-2771),\n but allowing any contract to be the trusted forwarder.\n @dev This contract should only be used for contracts without their own storage, like Systems."
745
+ },
698
746
  "fullyImplemented": false,
699
747
  "linearizedBaseContracts": [
700
- 23057,
701
- 22933
748
+ 23073,
749
+ 22937
702
750
  ],
703
751
  "name": "IWorldContextConsumer",
704
- "nameLocation": "410:21:37",
705
- "scope": 23058,
752
+ "nameLocation": "1124:21:37",
753
+ "scope": 23074,
706
754
  "usedErrors": [],
707
755
  "usedEvents": []
708
756
  }