@etherisc/gif-next 0.0.2-91f98cf-477 → 0.0.2-9542215-990

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