@etherisc/gif-next 0.0.2-cddad6b-504 → 0.0.2-ce8407f-016

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 (348) hide show
  1. package/README.md +40 -25
  2. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +115 -48
  4. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  5. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  6. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  7. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  8. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  9. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  10. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  11. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  12. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  13. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  14. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  16. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  20. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  22. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  24. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  25. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  26. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  27. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1119 -0
  28. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  29. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  30. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  31. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1 -1998
  32. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  33. package/artifacts/contracts/instance/Instance.sol/Instance.json +2378 -1243
  34. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  36. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +878 -0
  38. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +117 -0
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +32 -86
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/IService.sol/IService.json +174 -53
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +138 -112
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  49. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +220 -52
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  53. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  66. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +141 -12
  67. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  68. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
  69. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  70. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +298 -39
  71. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  72. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +745 -0
  73. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  74. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  75. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  76. package/artifacts/contracts/registry/Registry.sol/Registry.json +489 -120
  77. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  78. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1013 -0
  79. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +476 -0
  81. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  82. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  83. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  84. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  85. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  86. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
  87. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  88. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  89. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  90. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  91. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  92. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  93. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  94. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  95. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  96. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  97. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  98. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  99. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  100. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  101. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  102. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  103. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  104. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  105. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  106. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  107. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +5 -111
  108. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  109. package/artifacts/contracts/test/TestService.sol/TestService.json +283 -62
  110. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  111. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  112. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  113. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  114. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
  115. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  116. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  117. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  118. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  119. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  120. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  121. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  122. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  123. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  124. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  125. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  126. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  127. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  128. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  129. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  130. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  131. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  132. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  133. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  134. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  135. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  136. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  137. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  138. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  139. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  140. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  141. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  142. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  143. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  144. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  145. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  146. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  147. package/contracts/components/IBaseComponent.sol +4 -4
  148. package/contracts/instance/AccessManagedSimple.sol +114 -0
  149. package/contracts/instance/AccessManagerSimple.sol +682 -0
  150. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  151. package/contracts/instance/IInstance.sol +3 -50
  152. package/contracts/instance/Instance.sol +379 -61
  153. package/contracts/instance/InstanceAccessManager.sol +288 -0
  154. package/contracts/instance/InstanceReader.sol +235 -0
  155. package/contracts/instance/InstanceService.sol +45 -0
  156. package/contracts/instance/base/IKeyValueStore.sol +10 -12
  157. package/contracts/instance/base/ILifecycle.sol +3 -3
  158. package/contracts/instance/base/KeyValueStore.sol +46 -19
  159. package/contracts/instance/base/Lifecycle.sol +1 -1
  160. package/contracts/instance/base/ServiceBase.sol +20 -13
  161. package/contracts/instance/module/IAccess.sol +38 -0
  162. package/contracts/instance/module/IBundle.sol +19 -0
  163. package/contracts/instance/module/IDistribution.sol +39 -0
  164. package/contracts/instance/module/IPolicy.sol +45 -0
  165. package/contracts/instance/module/IRisk.sol +11 -0
  166. package/contracts/instance/module/ISetup.sol +41 -0
  167. package/contracts/instance/module/ITreasury.sol +23 -0
  168. package/contracts/registry/ChainNft.sol +43 -15
  169. package/contracts/registry/IChainNft.sol +3 -2
  170. package/contracts/registry/IRegistry.sol +42 -26
  171. package/contracts/registry/IRegistryService.sol +29 -0
  172. package/contracts/registry/ITransferInterceptor.sol +6 -0
  173. package/contracts/registry/Registry.sol +383 -273
  174. package/contracts/registry/RegistryService.sol +369 -0
  175. package/contracts/registry/RegistryServiceManager.sol +43 -0
  176. package/contracts/shared/ContractDeployerLib.sol +72 -0
  177. package/contracts/shared/ERC165.sol +1 -1
  178. package/contracts/shared/INftOwnable.sol +22 -0
  179. package/contracts/shared/IRegisterable.sol +9 -16
  180. package/contracts/shared/IVersionable.sol +55 -11
  181. package/contracts/shared/NftOwnable.sol +136 -0
  182. package/contracts/shared/ProxyManager.sol +94 -0
  183. package/contracts/shared/Registerable.sol +62 -59
  184. package/contracts/shared/TokenHandler.sol +27 -0
  185. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  186. package/contracts/shared/Versionable.sol +113 -55
  187. package/contracts/test/TestRegisterable.sol +5 -6
  188. package/contracts/test/TestRoleId.sol +6 -6
  189. package/contracts/test/TestService.sol +5 -11
  190. package/contracts/types/DistributorType.sol +55 -0
  191. package/contracts/types/Key32.sol +8 -3
  192. package/contracts/types/NumberId.sol +52 -0
  193. package/contracts/types/ObjectType.sol +35 -14
  194. package/contracts/types/Referral.sol +85 -0
  195. package/contracts/types/RoleId.sol +46 -9
  196. package/contracts/types/StateId.sol +1 -1
  197. package/contracts/types/Timestamp.sol +7 -3
  198. package/contracts/types/Version.sol +9 -0
  199. package/package.json +1 -1
  200. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  201. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  202. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  203. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -405
  204. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  205. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -340
  206. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  207. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -487
  208. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  209. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -370
  210. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  211. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -578
  212. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  213. package/artifacts/contracts/components/Product.sol/Product.json +0 -444
  214. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  215. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  216. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  217. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  218. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  219. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  220. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  221. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -376
  222. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  223. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  224. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  225. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  226. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  227. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  228. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  229. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  230. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  231. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  232. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  233. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  234. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  235. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  236. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  237. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  238. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  239. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  240. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  241. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  242. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  243. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  244. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  245. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  246. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  247. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  248. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  249. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  250. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  251. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  252. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  253. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  254. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  255. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  256. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  257. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  258. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  259. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  260. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  261. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  262. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  263. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  264. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  265. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  266. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  267. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  268. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  269. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  270. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -420
  271. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  272. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  273. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  274. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -325
  275. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  276. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -440
  277. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  278. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -630
  279. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  280. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -543
  281. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  282. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -858
  283. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  284. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  285. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  286. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -495
  287. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  288. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  289. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  290. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
  291. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  292. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  293. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -187
  294. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  295. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  296. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  297. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  298. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  299. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  300. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  301. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  302. package/contracts/components/BaseComponent.sol +0 -94
  303. package/contracts/components/Distribution.sol +0 -132
  304. package/contracts/components/IDistributionComponent.sol +0 -47
  305. package/contracts/components/IPoolComponent.sol +0 -71
  306. package/contracts/components/IProductComponent.sol +0 -38
  307. package/contracts/components/Pool.sol +0 -235
  308. package/contracts/components/Product.sol +0 -227
  309. package/contracts/experiment/statemachine/README.md +0 -112
  310. package/contracts/instance/IInstanceLinked.sol +0 -8
  311. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  312. package/contracts/instance/base/IInstanceBase.sol +0 -22
  313. package/contracts/instance/base/InstanceBase.sol +0 -91
  314. package/contracts/instance/base/ModuleBase.sol +0 -57
  315. package/contracts/instance/module/access/Access.sol +0 -149
  316. package/contracts/instance/module/access/IAccess.sol +0 -53
  317. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  318. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  319. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  320. package/contracts/instance/module/component/IComponent.sol +0 -28
  321. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  322. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  323. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  324. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  325. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  326. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  327. package/contracts/instance/module/risk/IRisk.sol +0 -26
  328. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  329. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  330. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  331. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  332. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  333. package/contracts/instance/service/DistributionService.sol +0 -59
  334. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  335. package/contracts/instance/service/IDistributionService.sol +0 -12
  336. package/contracts/instance/service/IPoolService.sol +0 -37
  337. package/contracts/instance/service/IProductService.sol +0 -107
  338. package/contracts/instance/service/PoolService.sol +0 -149
  339. package/contracts/instance/service/ProductService.sol +0 -509
  340. package/contracts/registry/IRegistryLinked.sol +0 -8
  341. package/contracts/registry/RegistryUpgradeable.sol +0 -416
  342. package/contracts/shared/IOwnable.sol +0 -6
  343. package/contracts/shared/Proxy.sol +0 -83
  344. package/contracts/shared/VersionableUpgradeable.sol +0 -108
  345. package/contracts/test/TestDistribution.sol +0 -21
  346. package/contracts/test/TestPool.sol +0 -25
  347. package/contracts/test/TestProduct.sol +0 -72
  348. package/contracts/types/ReferralId.sol +0 -48
@@ -1,416 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {Initializable} from "@openzeppelin5/contracts/proxy/utils/Initializable.sol";
5
-
6
- import {IRegisterable} from "../shared/IRegisterable.sol";
7
- import {IService} from "../instance/base/IService.sol";
8
-
9
- import {IChainNft} from "./IChainNft.sol";
10
- import {ChainNft} from "./ChainNft.sol";
11
- import {IRegistry} from "./IRegistry.sol";
12
- import {NftId, toNftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
13
- import {VersionPart} from "../types/Version.sol";
14
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
15
-
16
- // TODO make registry upgradable
17
- contract RegistryUpgradeable is
18
- Initializable,
19
- IRegisterable,
20
- IRegistry
21
- {
22
- using NftIdLib for NftId;
23
-
24
- string public constant EMPTY_URI = "";
25
-
26
- // @custom:storage-location erc7201:etherisc.storage.Registry
27
- struct RegistryStorageV1 {// TODO encode version? at least just apropriate naming
28
-
29
- mapping(NftId nftId => ObjectInfo info) _info;
30
- mapping(address object => NftId nftId) _nftIdByAddress;
31
- mapping(ObjectType objectType => bool) _isValidType;
32
- mapping(ObjectType objectType => mapping(ObjectType objectParentType => bool)) _isValidParentType;
33
-
34
- mapping(NftId nftId => string stringValue) _string;
35
- mapping(bytes32 serviceNameHash => mapping(VersionPart majorVersion => address service)) _service;
36
-
37
- NftId _nftId;
38
- IChainNft _chainNft;
39
- ChainNft _chainNftInternal;
40
- address _initialOwner;
41
-
42
- /// @dev will own protocol nft and registry nft(s) minted during initialize
43
- address _protocolOwner;
44
- }
45
-
46
- // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Registry")) - 1)) & ~bytes32(uint256(0xff));
47
- bytes32 private constant RegistryStorageLocation = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
48
-
49
- function _getRegistryStorageV1() private pure returns (RegistryStorageV1 storage $) {
50
- assembly {
51
- $.slot := RegistryStorageLocation
52
- }
53
- }
54
-
55
- // TODO refactor once registry becomes upgradable
56
- // @Dev the protocol owner will get ownership of the
57
- // protocol nft and the global registry nft minted in this
58
- // initializer function
59
- function initialize(
60
- address chainNft,
61
- address protocolOwner
62
- )
63
- public
64
- initializer
65
- {
66
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
67
-
68
- require(
69
- address($._chainNft) == address(0),
70
- "ERROR:REG-001:ALREADY_INITIALIZED"
71
- );
72
-
73
- $._initialOwner = msg.sender;
74
- $._protocolOwner = protocolOwner;
75
-
76
- $._chainNft = IChainNft(chainNft);
77
- $._chainNftInternal = ChainNft(chainNft);
78
-
79
- // initial registry setup
80
- _registerProtocol();
81
- $._nftId = _registerRegistry();
82
-
83
- // setup rules for further registrations
84
- _setupValidTypes();
85
- _setupValidParentTypes();
86
- }
87
-
88
-
89
- function register(
90
- address objectAddress
91
- )
92
- // TODO add authz (only services may register components etc)
93
- // we have to check how we do authz for registring services (just restrict to protocol owner/registry owner)
94
- external override returns (NftId nftId) {
95
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
96
-
97
- require(
98
- $._nftIdByAddress[objectAddress].eqz(),
99
- "ERROR:REG-002:ALREADY_REGISTERED"
100
- );
101
-
102
- IRegisterable registerable = IRegisterable(objectAddress);
103
- require(
104
- registerable.supportsInterface(type(IRegisterable).interfaceId),
105
- "ERROR:REG-003:NOT_REGISTERABLE"
106
- );
107
-
108
- ObjectType objectType = registerable.getType();
109
- require(
110
- $._isValidType[objectType],
111
- "ERROR:REG-004:TYPE_INVALID"
112
- );
113
-
114
- NftId parentNftId = registerable.getParentNftId();
115
- require(
116
- isRegistered(parentNftId),
117
- "ERROR:REG-005:PARENT_NOT_REGISTERED"
118
- );
119
-
120
- require(
121
- $._isValidParentType[objectType][$._info[parentNftId].objectType],
122
- "ERROR:REG-006:PARENT_TYPE_INVALID"
123
- );
124
-
125
- // also check that nftId and parentNFtId are on the same chain if applicable
126
-
127
- // nft minting
128
- uint256 mintedTokenId = $._chainNft.mint(
129
- registerable.getOwner(),
130
- EMPTY_URI
131
- );
132
-
133
- nftId = toNftId(mintedTokenId);
134
-
135
- // special case services
136
- if(registerable.getType() == SERVICE()) {
137
- IService service = IService(objectAddress);
138
- require(
139
- service.supportsInterface(type(IService).interfaceId),
140
- "ERROR:REG-007:NOT_SERVICE"
141
- );
142
-
143
- string memory serviceName = service.getName();
144
- VersionPart majorVersion = service.getMajorVersion();
145
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
146
-
147
- // service specific state
148
- $._string[nftId] = serviceName;
149
-
150
- require(
151
- $._service[serviceNameHash][majorVersion] == address(0),
152
- "ERROR:REG-008:ALREADY_REGISTERED"
153
- );
154
- $._service[serviceNameHash][majorVersion] = objectAddress;
155
- }
156
-
157
- // create object info and link nft id with it
158
- _registerObjectInfo(registerable, nftId);
159
- }
160
-
161
-
162
- function registerObjectForInstance(
163
- NftId parentNftId,
164
- ObjectType objectType,
165
- address initialOwner,
166
- bytes memory data
167
- )
168
- external
169
- override
170
- returns (
171
- // TODO add onlyRegisteredInstance
172
- NftId nftId
173
- )
174
- {
175
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
176
-
177
- // TODO add more validation
178
- require(
179
- objectType == POLICY() || objectType == BUNDLE(),
180
- "ERROR:REG-010:TYPE_INVALID"
181
- );
182
-
183
- uint256 mintedTokenId = $._chainNft.mint(initialOwner, EMPTY_URI);
184
- nftId = toNftId(mintedTokenId);
185
-
186
- ObjectInfo memory info = ObjectInfo(
187
- nftId,
188
- parentNftId,
189
- objectType,
190
- address(0),
191
- initialOwner,
192
- data
193
- );
194
-
195
- $._info[nftId] = info;
196
-
197
- // add logging
198
- }
199
-
200
- function getObjectCount() external view override returns (uint256) {
201
- return _getRegistryStorageV1()._chainNft.totalSupply();
202
- }
203
-
204
- function getNftId(
205
- address object
206
- ) external view override returns (NftId id) {
207
- return _getRegistryStorageV1()._nftIdByAddress[object];
208
- }
209
-
210
- function isRegistered(
211
- NftId nftId
212
- ) public view override returns (bool) {
213
- return _getRegistryStorageV1()._info[nftId].objectType.gtz();
214
- }
215
-
216
- function isRegistered(
217
- address object
218
- ) external view override returns (bool) {
219
- return _getRegistryStorageV1()._nftIdByAddress[object].gtz();
220
- }
221
-
222
- function getObjectInfo(
223
- NftId nftId
224
- ) external view override returns (ObjectInfo memory info) {
225
- return _getRegistryStorageV1()._info[nftId];
226
- }
227
-
228
- function getName(
229
- NftId nftId
230
- ) external view returns (string memory name) {
231
- return _getRegistryStorageV1()._string[nftId];
232
- }
233
-
234
- function getOwner(NftId nftId) external view override returns (address) {
235
- return _getRegistryStorageV1()._chainNft.ownerOf(nftId.toInt());
236
- }
237
-
238
- function getChainNft() external view override returns (IChainNft) {
239
- return _getRegistryStorageV1()._chainNft;
240
- }
241
-
242
- // special case to retrive a gif service
243
- function getServiceAddress(string memory serviceName, VersionPart majorVersion) external view override returns (address serviceAddress) {
244
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
245
- return _getRegistryStorageV1()._service[serviceNameHash][majorVersion];
246
- }
247
-
248
- // from IERC165
249
- function supportsInterface(bytes4 interfaceId) external pure override returns (bool) {
250
- return interfaceId == type(IRegistry).interfaceId;
251
- }
252
-
253
- // from IRegistryLinked
254
- function getRegistry() external view override returns (IRegistry registry) {
255
- return this;
256
- }
257
-
258
- // from IRegisterable
259
- function register() external pure override returns (NftId nftId) {
260
- return zeroNftId();
261
- }
262
-
263
- function getType() external pure override returns (ObjectType objectType) {
264
- return REGISTRY();
265
- }
266
-
267
-
268
- function getOwner() public view override returns (address owner) {
269
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
270
- return $._nftId.gtz() ? this.getOwner($._nftId) : $._initialOwner;
271
- }
272
-
273
- function getNftId() external view override (IRegisterable, IRegistry) returns (NftId nftId) {
274
- return _getRegistryStorageV1()._nftId;
275
- }
276
-
277
- function getParentNftId() external view returns (NftId nftId) {
278
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
279
- // we're the global registry
280
- if(block.chainid == 1) {
281
- return toNftId($._chainNftInternal.PROTOCOL_NFT_ID());
282
- }
283
- else {
284
- return toNftId($._chainNftInternal.GLOBAL_REGISTRY_ID());
285
- }
286
- }
287
-
288
- function getData() external pure returns (bytes memory data) {
289
- return "";
290
- }
291
-
292
- // registry specific functions
293
- function getProtocolOwner() external view override returns (address) {
294
- return _getRegistryStorageV1()._protocolOwner;
295
- }
296
-
297
- /// @dev defines which types are allowed to register
298
- function _setupValidTypes() internal {
299
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
300
- $._isValidType[REGISTRY()] = true; // only for global registry
301
- $._isValidType[TOKEN()] = true;
302
- $._isValidType[SERVICE()] = true;
303
- $._isValidType[INSTANCE()] = true;
304
- $._isValidType[STAKE()] = true;
305
- $._isValidType[PRODUCT()] = true;
306
- $._isValidType[ORACLE()] = true;
307
- $._isValidType[POOL()] = true;
308
- $._isValidType[DISTRIBUTION()] = true;
309
- $._isValidType[POLICY()] = true;
310
- $._isValidType[BUNDLE()] = true;
311
- }
312
-
313
- /// @dev defines which types - parent type relations are allowed to register
314
- function _setupValidParentTypes() internal {
315
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
316
- // registry as parent
317
- $._isValidParentType[TOKEN()][REGISTRY()] = true;
318
- $._isValidParentType[SERVICE()][REGISTRY()] = true;
319
- $._isValidParentType[INSTANCE()][REGISTRY()] = true;
320
-
321
- // instance as parent
322
- $._isValidParentType[PRODUCT()][INSTANCE()] = true;
323
- $._isValidParentType[DISTRIBUTION()][INSTANCE()] = true;
324
- $._isValidParentType[ORACLE()][INSTANCE()] = true;
325
- $._isValidParentType[POOL()][INSTANCE()] = true;
326
-
327
- // product as parent
328
- $._isValidParentType[POLICY()][PRODUCT()] = true;
329
-
330
- // pool as parent
331
- $._isValidParentType[BUNDLE()][POOL()] = true;
332
- $._isValidParentType[STAKE()][POOL()] = true;
333
- }
334
-
335
- /// @dev protocol registration used to anchor the dip ecosystem relations
336
- function _registerProtocol() virtual internal {
337
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
338
-
339
- uint256 protocolId = $._chainNftInternal.PROTOCOL_NFT_ID();
340
- $._chainNftInternal.mint($._protocolOwner, protocolId);
341
-
342
- NftId protocolNftid = toNftId(protocolId);
343
- ObjectInfo memory protocolInfo = ObjectInfo(
344
- protocolNftid,
345
- zeroNftId(), // parent nft id
346
- PROTOCOL(),
347
- address(0), // contract address
348
- $._protocolOwner,
349
- "" // data
350
- );
351
-
352
- $._info[protocolNftid] = protocolInfo;
353
- }
354
-
355
- /// @dev registry registration
356
- /// might also register the global registry when not on mainnet
357
- function _registerRegistry() virtual internal returns (NftId registryNftId) {
358
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
359
-
360
- uint256 registryId = $._chainNftInternal.calculateTokenId(2);
361
- registryNftId = toNftId(registryId);
362
-
363
- // we're not the global registry
364
- if(registryId != $._chainNftInternal.GLOBAL_REGISTRY_ID()) {
365
- _registerGlobalRegistry();
366
- }
367
-
368
- $._chainNftInternal.mint($._protocolOwner, registryId);
369
- _registerObjectInfo(this, registryNftId);
370
- }
371
-
372
-
373
- /// @dev global registry registration for non mainnet registries
374
- function _registerGlobalRegistry() virtual internal {
375
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
376
-
377
- uint256 globalRegistryId = $._chainNftInternal.GLOBAL_REGISTRY_ID();
378
- $._chainNftInternal.mint($._protocolOwner, globalRegistryId);
379
-
380
- NftId globalRegistryNftId = toNftId(globalRegistryId);
381
- ObjectInfo memory globalRegistryInfo = ObjectInfo(
382
- globalRegistryNftId,
383
- toNftId($._chainNftInternal.PROTOCOL_NFT_ID()),
384
- REGISTRY(),
385
- address(0), // contract address
386
- $._protocolOwner,
387
- "" // data
388
- );
389
-
390
- $._info[globalRegistryNftId] = globalRegistryInfo;
391
- }
392
-
393
-
394
- function _registerObjectInfo(
395
- IRegisterable registerable,
396
- NftId nftId
397
- ) internal virtual {
398
- RegistryStorageV1 storage $ = _getRegistryStorageV1();
399
-
400
- address objectAddress = address(registerable);
401
- ObjectInfo memory info = ObjectInfo(
402
- nftId,
403
- registerable.getParentNftId(),
404
- registerable.getType(),
405
- objectAddress,
406
- registerable.getOwner(),
407
- registerable.getData()
408
- );
409
-
410
- $._info[nftId] = info;
411
- $._nftIdByAddress[objectAddress] = nftId;
412
-
413
- // add logging
414
- }
415
-
416
- }
@@ -1,6 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- interface IOwnable {
5
- function getOwner() external view returns (address owner);
6
- }
@@ -1,83 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {Ownable} from "@openzeppelin5/contracts/access/Ownable.sol";
5
- import {ProxyAdmin} from "@openzeppelin5/contracts/proxy/transparent/ProxyAdmin.sol";
6
- import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin5/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
7
-
8
- import {IVersionable} from "./IVersionable.sol";
9
-
10
- contract ProxyWithProxyAdminGetter is TransparentUpgradeableProxy {
11
-
12
- constructor(address implementation, address initialProxyAdminOwner,bytes memory data)
13
- TransparentUpgradeableProxy(implementation, initialProxyAdminOwner, data)
14
- {}
15
-
16
- function getProxyAdmin() external returns (ProxyAdmin) { return ProxyAdmin(_proxyAdmin()); }
17
- }
18
-
19
- contract Proxy is Ownable {
20
-
21
- string public constant ACTIVATE_SIGNATURE = "activate(address,address)";
22
-
23
- ProxyWithProxyAdminGetter private _proxy;
24
- bool private _isDeployed;
25
-
26
- /// @dev only used to capture proxy owner
27
- constructor()
28
- Ownable(msg.sender)
29
- {
30
- }
31
-
32
- function getData(address implementation, address proxyOwner) public pure returns (bytes memory data) {
33
- return abi.encodeWithSignature(ACTIVATE_SIGNATURE, implementation, proxyOwner);
34
- }
35
-
36
- /// @dev deploy initial contract
37
- function deploy(address initialImplementation)
38
- external
39
- onlyOwner()
40
- returns (IVersionable versionable)
41
- {
42
- require(!_isDeployed, "ERROR:PRX-010:ALREADY_DEPLOYED");
43
-
44
- address currentProxyOwner = owner();
45
- address initialProxyAdminOwner = address(this);
46
- bytes memory data = getData(initialImplementation, currentProxyOwner);
47
-
48
- _proxy = new ProxyWithProxyAdminGetter(
49
- initialImplementation,
50
- initialProxyAdminOwner,
51
- data
52
- );
53
-
54
- _isDeployed = true;
55
- versionable = IVersionable(address(_proxy));
56
- }
57
-
58
- /// @dev upgrade existing contract
59
- function upgrade(address newImplementation)
60
- external
61
- onlyOwner
62
- returns (IVersionable versionable)
63
- {
64
- require(_isDeployed, "ERROR:PRX-020:NOT_YET_DEPLOYED");
65
-
66
- address currentProxyOwner = owner();
67
- // ProxyAdmin proxyAdmin = _proxy.getProxyAdmin();
68
- ProxyAdmin proxyAdmin = getProxyAdmin();
69
- ITransparentUpgradeableProxy proxy = ITransparentUpgradeableProxy(address(_proxy));
70
- bytes memory data = getData(newImplementation, currentProxyOwner);
71
-
72
- proxyAdmin.upgradeAndCall(
73
- proxy,
74
- newImplementation,
75
- data);
76
-
77
- versionable = IVersionable(address(_proxy));
78
- }
79
-
80
- function getProxyAdmin() public returns (ProxyAdmin) {
81
- return _proxy.getProxyAdmin();
82
- }
83
- }
@@ -1,108 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {Initializable} from "@openzeppelin5/contracts/proxy/utils/Initializable.sol";
5
-
6
- import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
7
- import {Timestamp, blockTimestamp} from "../types/Timestamp.sol";
8
- import {Version, VersionPart} from "../types/Version.sol";
9
-
10
- import {IVersionable} from "./IVersionable.sol";
11
-
12
- abstract contract VersionableUpgradeable is
13
- Initializable,
14
- IVersionable
15
- {
16
- /// @custom:storage-location erc7201:etherisc.storage.Versionable
17
- struct VersionableStorage {
18
- mapping(Version version => VersionInfo info) _versionHistory;
19
- Version [] _versions;
20
- }
21
-
22
- // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Versionable")) - 1)) & ~bytes32(uint256(0xff))
23
- bytes32 private constant VersionableStorageLocation = 0x4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900;
24
-
25
- function _getVersionableStorage() private pure returns (VersionableStorage storage $) {
26
- assembly {
27
- $.slot := VersionableStorageLocation
28
- }
29
- }
30
-
31
- // controlled activation for controller contract
32
- constructor() {
33
- _activate(address(0), msg.sender);
34
- }
35
-
36
- // IMPORTANT this function needs to be implemented by each new version
37
- // and needs to call internal function call _activate()
38
- function activate(address implementation, address activatedBy)
39
- external
40
- virtual
41
- override
42
- onlyInitializing
43
- {
44
- _activate(implementation, activatedBy);
45
- }
46
-
47
-
48
- // can only be called once per contract
49
- // needs to be called inside the proxy upgrade tx
50
- function _activate(
51
- address implementation,
52
- address activatedBy
53
- )
54
- internal
55
- {
56
- VersionableStorage storage $ = _getVersionableStorage();
57
-
58
- Version thisVersion = getVersion();
59
- require(
60
- !isActivated(thisVersion),
61
- "ERROR:VRN-001:VERSION_ALREADY_ACTIVATED"
62
- );
63
-
64
- // require increasing version number
65
- if($._versions.length > 0) {
66
- Version lastVersion = $._versions[$._versions.length - 1];
67
- require(
68
- thisVersion > lastVersion,
69
- "ERROR:VRN-002:VERSION_NOT_INCREASING"
70
- );
71
- }
72
-
73
- // update version history
74
- $._versions.push(thisVersion);
75
- $._versionHistory[thisVersion] = VersionInfo(
76
- thisVersion,
77
- implementation,
78
- activatedBy,
79
- blockTimestamp(),
80
- blockNumber()
81
- );
82
-
83
- emit LogVersionableActivated(thisVersion, implementation, activatedBy);
84
- }
85
-
86
-
87
- function isActivated(Version _version) public override view returns(bool) {
88
- return _getVersionableStorage()._versionHistory[_version].activatedIn.toInt() > 0;
89
- }
90
-
91
-
92
- function getVersion() public pure virtual returns(Version);
93
-
94
-
95
- function getVersionCount() external view override returns(uint256) {
96
- return _getVersionableStorage()._versions.length;
97
- }
98
-
99
-
100
- function getVersion(uint256 idx) external view override returns(Version) {
101
- return _getVersionableStorage()._versions[idx];
102
- }
103
-
104
-
105
- function getVersionInfo(Version _version) external override view returns(VersionInfo memory) {
106
- return _getVersionableStorage()._versionHistory[_version];
107
- }
108
- }
@@ -1,21 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Fee} from "../../contracts/types/Fee.sol";
5
- import {NftId} from "../../contracts/types/NftId.sol";
6
- import {Distribution} from "../../contracts/components/Distribution.sol";
7
-
8
-
9
- contract TestDistribution is Distribution {
10
-
11
- constructor(
12
- address registry,
13
- NftId instanceNftid,
14
- address token,
15
- bool isVerifying,
16
- Fee memory distributionFee
17
- )
18
- Distribution(registry, instanceNftid, token, isVerifying, distributionFee)
19
- // solhint-disable-next-line no-empty-blocks
20
- {}
21
- }
@@ -1,25 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId} from "../../contracts/types/NftId.sol";
5
- import {UFixed} from "../../contracts/types/UFixed.sol";
6
- import {Fee} from "../../contracts/types/Fee.sol";
7
- import {Pool} from "../../contracts/components/Pool.sol";
8
-
9
-
10
- contract TestPool is Pool {
11
-
12
- constructor(
13
- address registry,
14
- NftId instanceNftid,
15
- address token,
16
- bool isVerifying,
17
- UFixed collateralizationLevel,
18
- Fee memory poolFee,
19
- Fee memory stakingFee,
20
- Fee memory performanceFee
21
- )
22
- Pool(registry, instanceNftid, token, isVerifying, collateralizationLevel, poolFee, stakingFee, performanceFee)
23
- // solhint-disable-next-line no-empty-blocks
24
- {}
25
- }