@etherisc/gif-next 0.0.2-91f98cf-477 → 0.0.2-92cdbc9-533

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 (729) hide show
  1. package/README.md +237 -41
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +263 -1618
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +512 -1993
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1735 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1160 -0
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  70. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  74. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  78. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  79. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  80. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  82. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  84. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  86. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  88. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +380 -307
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  138. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → product/IProductService.sol/IProductService.json} +195 -171
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  149. package/artifacts/contracts/product/Product.sol/Product.json +1257 -0
  150. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  152. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +591 -34
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1123 -0
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +821 -107
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  172. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1159 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  179. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  186. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  197. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  199. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +66 -52
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  207. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IService.sol/IService.json} +171 -150
  208. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  210. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  212. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  214. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +102 -165
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  218. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  224. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  227. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +255 -23
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  229. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  230. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  231. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  233. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  234. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  235. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  236. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  294. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  296. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  298. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  300. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  302. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  303. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  304. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  306. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  308. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  310. package/contracts/authorization/AccessAdmin.sol +591 -0
  311. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  312. package/contracts/authorization/Authorization.sol +218 -0
  313. package/contracts/authorization/IAccess.sol +48 -0
  314. package/contracts/authorization/IAccessAdmin.sol +136 -0
  315. package/contracts/authorization/IAuthorization.sol +54 -0
  316. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  317. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  318. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  319. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  320. package/contracts/distribution/BasicDistribution.sol +149 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  322. package/contracts/distribution/Distribution.sol +283 -0
  323. package/contracts/distribution/DistributionService.sol +302 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  325. package/contracts/distribution/IDistributionComponent.sol +48 -0
  326. package/contracts/distribution/IDistributionService.sol +85 -0
  327. package/contracts/instance/BundleManager.sol +126 -0
  328. package/contracts/instance/IInstance.sol +79 -46
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +239 -59
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +44 -0
  336. package/contracts/instance/InstanceStore.sol +276 -0
  337. package/contracts/instance/base/BalanceStore.sol +123 -0
  338. package/contracts/instance/base/Cloneable.sol +28 -0
  339. package/contracts/instance/base/ObjectCounter.sol +21 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  341. package/contracts/instance/base/ObjectManager.sol +79 -0
  342. package/contracts/instance/module/IAccess.sol +46 -0
  343. package/contracts/instance/module/IBundle.sol +20 -0
  344. package/contracts/instance/module/IComponents.sol +52 -0
  345. package/contracts/instance/module/IDistribution.sol +42 -0
  346. package/contracts/instance/module/IPolicy.sol +84 -0
  347. package/contracts/instance/module/IRisk.sol +11 -0
  348. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +36 -0
  352. package/contracts/oracle/IOracleComponent.sol +32 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +157 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +42 -0
  357. package/contracts/pool/BasicPool.sol +164 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  359. package/contracts/pool/BundleService.sol +296 -0
  360. package/contracts/pool/BundleServiceManager.sol +42 -0
  361. package/contracts/pool/IBundleService.sol +106 -0
  362. package/contracts/pool/IPoolComponent.sol +52 -0
  363. package/contracts/pool/IPoolService.sol +150 -0
  364. package/contracts/pool/Pool.sol +311 -0
  365. package/contracts/pool/PoolService.sol +452 -0
  366. package/contracts/pool/PoolServiceManager.sol +42 -0
  367. package/contracts/product/ApplicationService.sol +254 -0
  368. package/contracts/product/ApplicationServiceManager.sol +38 -0
  369. package/contracts/product/BasicProduct.sol +82 -0
  370. package/contracts/product/BasicProductAuthorization.sol +40 -0
  371. package/contracts/product/ClaimService.sol +442 -0
  372. package/contracts/product/ClaimServiceManager.sol +38 -0
  373. package/contracts/product/IApplicationService.sol +62 -0
  374. package/contracts/product/IClaimService.sol +99 -0
  375. package/contracts/product/IPolicyService.sol +78 -0
  376. package/contracts/product/IPricingService.sol +39 -0
  377. package/contracts/product/IProductComponent.sol +39 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +475 -0
  380. package/contracts/product/PolicyServiceManager.sol +42 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +42 -0
  383. package/contracts/product/Product.sol +392 -0
  384. package/contracts/product/ProductService.sol +124 -0
  385. package/contracts/product/ProductServiceManager.sol +42 -0
  386. package/contracts/registry/ChainNft.sol +95 -37
  387. package/contracts/registry/IRegistry.sol +93 -29
  388. package/contracts/registry/IRegistryService.sol +69 -0
  389. package/contracts/registry/ITransferInterceptor.sol +7 -0
  390. package/contracts/registry/Registry.sol +478 -281
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +266 -0
  393. package/contracts/registry/RegistryServiceManager.sol +53 -0
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseManager.sol +487 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  397. package/contracts/registry/TokenRegistry.sol +315 -0
  398. package/contracts/shared/Component.sol +281 -0
  399. package/contracts/shared/ComponentService.sol +581 -0
  400. package/contracts/shared/ComponentServiceManager.sol +35 -0
  401. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  402. package/contracts/shared/ERC165.sol +15 -9
  403. package/contracts/shared/IComponent.sol +70 -0
  404. package/contracts/shared/IComponentService.sol +102 -0
  405. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  406. package/contracts/shared/IKeyValueStore.sol +54 -0
  407. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  408. package/contracts/shared/INftOwnable.sol +23 -0
  409. package/contracts/shared/IPolicyHolder.sol +45 -0
  410. package/contracts/shared/IRegisterable.sol +10 -19
  411. package/contracts/shared/IRegistryLinked.sol +11 -0
  412. package/contracts/shared/IService.sol +25 -0
  413. package/contracts/shared/IVersionable.sol +38 -37
  414. package/contracts/shared/InitializableCustom.sol +177 -0
  415. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  416. package/contracts/shared/KeyValueStore.sol +131 -0
  417. package/contracts/shared/Lifecycle.sol +77 -0
  418. package/contracts/shared/NftIdSetManager.sol +65 -0
  419. package/contracts/shared/NftOwnable.sol +107 -0
  420. package/contracts/shared/PolicyHolder.sol +102 -0
  421. package/contracts/shared/ProxyManager.sol +199 -0
  422. package/contracts/shared/Registerable.sol +54 -65
  423. package/contracts/shared/RegistryLinked.sol +43 -0
  424. package/contracts/shared/Service.sol +83 -0
  425. package/contracts/shared/TokenHandler.sol +58 -0
  426. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  427. package/contracts/shared/Versionable.sol +38 -68
  428. package/contracts/staking/IStaking.sol +168 -0
  429. package/contracts/staking/IStakingService.sol +153 -0
  430. package/contracts/staking/StakeManagerLib.sol +231 -0
  431. package/contracts/staking/Staking.sol +513 -0
  432. package/contracts/staking/StakingLifecycle.sol +23 -0
  433. package/contracts/staking/StakingManager.sol +54 -0
  434. package/contracts/staking/StakingReader.sol +187 -0
  435. package/contracts/staking/StakingService.sol +411 -0
  436. package/contracts/staking/StakingServiceManager.sol +44 -0
  437. package/contracts/staking/StakingStore.sol +615 -0
  438. package/contracts/staking/TargetManagerLib.sol +207 -0
  439. package/contracts/{types → type}/AddressSet.sol +1 -1
  440. package/contracts/type/Amount.sol +128 -0
  441. package/contracts/{types → type}/Blocknumber.sol +21 -3
  442. package/contracts/type/ClaimId.sol +75 -0
  443. package/contracts/type/DistributorType.sol +55 -0
  444. package/contracts/type/Fee.sol +66 -0
  445. package/contracts/{types → type}/Key32.sol +8 -3
  446. package/contracts/{types → type}/NftId.sol +21 -15
  447. package/contracts/type/NftIdSet.sol +62 -0
  448. package/contracts/type/ObjectType.sol +275 -0
  449. package/contracts/type/PayoutId.sol +82 -0
  450. package/contracts/type/Referral.sol +89 -0
  451. package/contracts/type/RequestId.sol +75 -0
  452. package/contracts/{types → type}/RiskId.sol +1 -1
  453. package/contracts/type/RoleId.sol +174 -0
  454. package/contracts/type/Seconds.sol +81 -0
  455. package/contracts/type/Selector.sol +102 -0
  456. package/contracts/{types → type}/StateId.sol +39 -5
  457. package/contracts/type/String.sol +53 -0
  458. package/contracts/{types → type}/Timestamp.sol +27 -14
  459. package/contracts/type/UFixed.sol +332 -0
  460. package/contracts/{types → type}/Version.sol +15 -2
  461. package/package.json +11 -7
  462. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  464. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  465. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -405
  466. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
  468. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -340
  470. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  471. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -487
  472. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  473. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -370
  474. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  475. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -578
  476. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  477. package/artifacts/contracts/components/Product.sol/Product.json +0 -444
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  480. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  482. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  484. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  486. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  488. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  492. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  494. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  496. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  498. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  500. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  503. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  505. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  507. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  509. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  511. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  512. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  513. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  515. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  516. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  517. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  519. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  521. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  524. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  526. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  529. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  531. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  532. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  534. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  536. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  537. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  538. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  539. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  540. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  541. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  542. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  543. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  544. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  546. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  549. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  550. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  552. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  554. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  556. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  558. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  560. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  561. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  563. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  564. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  565. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  567. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  569. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  570. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  571. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  572. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  573. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  575. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -420
  577. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  578. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  579. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -440
  582. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  584. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -543
  585. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -858
  587. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  588. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  589. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  590. package/artifacts/contracts/registry/RegistryUpgradeable.sol/Registry.dbg.json +0 -4
  591. package/artifacts/contracts/registry/RegistryUpgradeable.sol/Registry.json +0 -495
  592. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  593. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  594. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  595. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
  596. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  597. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  598. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -187
  599. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  600. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  601. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  602. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  603. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  604. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  605. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  606. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  607. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  608. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  609. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  610. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  611. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  612. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  613. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  614. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  615. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  616. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  617. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  619. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  620. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  621. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  622. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  624. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  627. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  628. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  629. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  631. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  632. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  633. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  634. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  635. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  636. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  637. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  638. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  640. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  643. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  645. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  647. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  649. package/contracts/components/BaseComponent.sol +0 -94
  650. package/contracts/components/Distribution.sol +0 -132
  651. package/contracts/components/IBaseComponent.sol +0 -19
  652. package/contracts/components/IDistributionComponent.sol +0 -47
  653. package/contracts/components/IPoolComponent.sol +0 -71
  654. package/contracts/components/IProductComponent.sol +0 -38
  655. package/contracts/components/Pool.sol +0 -235
  656. package/contracts/components/Product.sol +0 -227
  657. package/contracts/experiment/errors/Require.sol +0 -38
  658. package/contracts/experiment/errors/Revert.sol +0 -44
  659. package/contracts/experiment/inheritance/A.sol +0 -53
  660. package/contracts/experiment/inheritance/B.sol +0 -28
  661. package/contracts/experiment/inheritance/C.sol +0 -34
  662. package/contracts/experiment/inheritance/IA.sol +0 -13
  663. package/contracts/experiment/inheritance/IB.sol +0 -10
  664. package/contracts/experiment/inheritance/IC.sol +0 -12
  665. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  666. package/contracts/experiment/statemachine/ISM.sol +0 -25
  667. package/contracts/experiment/statemachine/README.md +0 -112
  668. package/contracts/experiment/statemachine/SM.sol +0 -57
  669. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  670. package/contracts/experiment/types/TypeA.sol +0 -47
  671. package/contracts/experiment/types/TypeB.sol +0 -29
  672. package/contracts/instance/IInstanceLinked.sol +0 -8
  673. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  674. package/contracts/instance/base/IInstanceBase.sol +0 -22
  675. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  676. package/contracts/instance/base/IService.sol +0 -15
  677. package/contracts/instance/base/InstanceBase.sol +0 -91
  678. package/contracts/instance/base/KeyValueStore.sol +0 -161
  679. package/contracts/instance/base/Lifecycle.sol +0 -100
  680. package/contracts/instance/base/ModuleBase.sol +0 -57
  681. package/contracts/instance/base/ServiceBase.sol +0 -37
  682. package/contracts/instance/module/access/Access.sol +0 -149
  683. package/contracts/instance/module/access/IAccess.sol +0 -53
  684. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  685. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  686. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  687. package/contracts/instance/module/component/IComponent.sol +0 -28
  688. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  689. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  690. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  691. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  692. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  693. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  694. package/contracts/instance/module/risk/IRisk.sol +0 -26
  695. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  696. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  697. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  698. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  699. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  700. package/contracts/instance/service/DistributionService.sol +0 -59
  701. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  702. package/contracts/instance/service/IDistributionService.sol +0 -12
  703. package/contracts/instance/service/IPoolService.sol +0 -37
  704. package/contracts/instance/service/IProductService.sol +0 -107
  705. package/contracts/instance/service/PoolService.sol +0 -149
  706. package/contracts/instance/service/ProductService.sol +0 -509
  707. package/contracts/registry/IChainNft.sol +0 -21
  708. package/contracts/registry/IRegistryLinked.sol +0 -8
  709. package/contracts/registry/RegistryUpgradeable.sol +0 -415
  710. package/contracts/shared/IOwnable.sol +0 -6
  711. package/contracts/shared/Proxy.sol +0 -83
  712. package/contracts/shared/VersionableUpgradeable.sol +0 -108
  713. package/contracts/test/TestDistribution.sol +0 -21
  714. package/contracts/test/TestFee.sol +0 -25
  715. package/contracts/test/TestPool.sol +0 -25
  716. package/contracts/test/TestProduct.sol +0 -72
  717. package/contracts/test/TestRegisterable.sol +0 -19
  718. package/contracts/test/TestRoleId.sol +0 -14
  719. package/contracts/test/TestService.sol +0 -32
  720. package/contracts/test/TestToken.sol +0 -26
  721. package/contracts/test/TestVersion.sol +0 -44
  722. package/contracts/test/TestVersionable.sol +0 -17
  723. package/contracts/types/ChainId.sol +0 -38
  724. package/contracts/types/Fee.sol +0 -56
  725. package/contracts/types/NftIdSet.sol +0 -60
  726. package/contracts/types/ObjectType.sol +0 -131
  727. package/contracts/types/ReferralId.sol +0 -48
  728. package/contracts/types/RoleId.sol +0 -38
  729. package/contracts/types/UFixed.sol +0 -209
@@ -1,381 +1,578 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {IRegisterable} from "../shared/IRegisterable.sol";
5
- import {IService} from "../instance/base/IService.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
8
+
9
+ import {NftId, NftIdLib} from "../type/NftId.sol";
10
+ import {VersionPart} from "../type/Version.sol";
11
+ import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
6
12
 
7
- import {IChainNft} from "./IChainNft.sol";
8
13
  import {ChainNft} from "./ChainNft.sol";
9
14
  import {IRegistry} from "./IRegistry.sol";
10
- import {NftId, toNftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
11
- import {VersionPart} from "../types/Version.sol";
12
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
15
+ import {IRegisterable} from "../shared/IRegisterable.sol";
16
+ import {ReleaseManager} from "./ReleaseManager.sol";
17
+ import {TokenRegistry} from "./TokenRegistry.sol";
18
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
19
+
20
+ // IMPORTANT
21
+ // Each NFT minted by registry is accosiated with:
22
+ // 1) NFT owner
23
+ // 2) registred contract OR object stored in registered (parent) contract
24
+ // Four registration flows:
25
+ // 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
26
+ // 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
27
+ // 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
28
+ // 4) state object by regular service (POLICY, BUNDLE, STAKE)
13
29
 
14
- // TODO make registry upgradable
15
30
  contract Registry is
16
- IRegisterable,
31
+ InitializableCustom,
17
32
  IRegistry
18
33
  {
19
- using NftIdLib for NftId;
20
-
34
+ address public NFT_LOCK_ADDRESS = address(0x1);
35
+ uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
36
+ uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
21
37
  string public constant EMPTY_URI = "";
22
38
 
23
39
  mapping(NftId nftId => ObjectInfo info) private _info;
24
40
  mapping(address object => NftId nftId) private _nftIdByAddress;
25
- mapping(ObjectType objectType => bool) private _isValidType;
26
- mapping(ObjectType objectType => mapping(ObjectType objectParentType => bool)) private _isValidParentType;
27
41
 
28
- mapping(NftId nftId => string stringValue) private _string;
29
- mapping(bytes32 serviceNameHash => mapping(VersionPart majorVersion => address service)) _service;
42
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
30
43
 
31
- NftId private _nftId;
32
- IChainNft private _chainNft;
33
- ChainNft private _chainNftInternal;
34
- address private _initialOwner;
44
+ mapping(ObjectType objectType => bool) private _coreTypes;
35
45
 
36
- // @dev will own protocol nft and registry nft(s) minted during initialize
37
- address private _protocolOwner;
46
+ mapping(ObjectType objectType => mapping(
47
+ ObjectType parentType => bool)) private _coreContractCombinations;
38
48
 
39
- // TODO refactor once registry becomes upgradable
40
- // @Dev the protocol owner will get ownership of the
41
- // protocol nft and the global registry nft minted in this
42
- // initializer function
43
- function initialize(
44
- address chainNft,
45
- address protocolOwner
46
- )
47
- public
48
- {
49
- require(
50
- address(_chainNft) == address(0),
51
- "ERROR:REG-001:ALREADY_INITIALIZED"
52
- );
49
+ mapping(ObjectType objectType => mapping(
50
+ ObjectType parentType => bool)) private _coreObjectCombinations;
51
+
52
+ RegistryAdmin public immutable _admin;
53
+ ChainNft public immutable _chainNft;
54
+
55
+ NftId public immutable _protocolNftId;
56
+ NftId public immutable _registryNftId;
57
+ NftId public _stakingNftId;
58
+
59
+ address public _tokenRegistryAddress;
60
+ address public _stakingAddress;
61
+ ReleaseManager public _releaseManager;
62
+
63
+ // TODO
64
+ // 1). Registry and ReleaseManager must be treated as whole single entity.
65
+ // But current limitations of EVM does not allow it -> require it to be splitted
66
+ // 2). Keep onlyReleaseManager modifier
67
+ // 3). Delete onlyRegistryService in favor of restricted
68
+ // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
69
+ modifier onlyRegistryService() {
70
+ if(!_releaseManager.isActiveRegistryService(msg.sender)) {
71
+ revert ErrorRegistryCallerNotRegistryService();
72
+ }
73
+ _;
74
+ }
53
75
 
54
- _initialOwner = msg.sender;
55
- _protocolOwner = protocolOwner;
56
76
 
57
- _chainNft = IChainNft(chainNft);
58
- _chainNftInternal = ChainNft(chainNft);
77
+ modifier onlyReleaseManager() {
78
+ if(msg.sender != address(_releaseManager)) {
79
+ revert ErrorRegistryCallerNotReleaseManager();
80
+ }
81
+ _;
82
+ }
83
+
84
+
85
+ constructor(RegistryAdmin admin)
86
+ InitializableCustom()
87
+ {
88
+ _admin = admin;
89
+ // deploy NFT
90
+ _chainNft = new ChainNft(address(this));
59
91
 
60
92
  // initial registry setup
61
- _registerProtocol();
62
- _nftId = _registerRegistry();
93
+ _protocolNftId = _registerProtocol();
94
+ _registryNftId = _registerRegistry();
63
95
 
64
- // setup rules for further registrations
65
- _setupValidTypes();
66
- _setupValidParentTypes();
96
+ // set object types and object parent relations
97
+ _setupValidCoreTypesAndCombinations();
67
98
  }
68
99
 
69
100
 
70
- function register(
71
- address objectAddress
101
+ /// @dev wires release manager and token to registry (this contract).
102
+ /// MUST be called by release manager.
103
+ function initialize(
104
+ address releaseManager,
105
+ address tokenRegistry,
106
+ address staking
72
107
  )
73
- // TODO add authz (only services may register components etc)
74
- // we have to check how we do authz for registring services (just restrict to protocol owner/registry owner)
75
- external override returns (NftId nftId) {
76
- require(
77
- _nftIdByAddress[objectAddress].eqz(),
78
- "ERROR:REG-002:ALREADY_REGISTERED"
79
- );
80
-
81
- IRegisterable registerable = IRegisterable(objectAddress);
82
- require(
83
- registerable.supportsInterface(type(IRegisterable).interfaceId),
84
- "ERROR:REG-003:NOT_REGISTERABLE"
85
- );
86
-
87
- ObjectType objectType = registerable.getType();
88
- require(
89
- _isValidType[objectType],
90
- "ERROR:REG-004:TYPE_INVALID"
91
- );
92
-
93
- NftId parentNftId = registerable.getParentNftId();
94
- require(
95
- isRegistered(parentNftId),
96
- "ERROR:REG-005:PARENT_NOT_REGISTERED"
97
- );
98
-
99
- require(
100
- _isValidParentType[objectType][_info[parentNftId].objectType],
101
- "ERROR:REG-006:PARENT_TYPE_INVALID"
102
- );
103
-
104
- // also check that nftId and parentNFtId are on the same chain if applicable
105
-
106
- // nft minting
107
- uint256 mintedTokenId = _chainNft.mint(
108
- registerable.getOwner(),
109
- EMPTY_URI
110
- );
111
-
112
- nftId = toNftId(mintedTokenId);
113
-
114
- // special case services
115
- if(registerable.getType() == SERVICE()) {
116
- IService service = IService(objectAddress);
117
- require(
118
- service.supportsInterface(type(IService).interfaceId),
119
- "ERROR:REG-007:NOT_SERVICE"
120
- );
121
-
122
- string memory serviceName = service.getName();
123
- VersionPart majorVersion = service.getMajorVersion();
124
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
125
-
126
- // service specific state
127
- _string[nftId] = serviceName;
128
-
129
- require(
130
- _service[serviceNameHash][majorVersion] == address(0),
131
- "ERROR:REG-008:ALREADY_REGISTERED"
132
- );
133
- _service[serviceNameHash][majorVersion] = objectAddress;
108
+ external
109
+ initializer()
110
+ {
111
+ _releaseManager = ReleaseManager(releaseManager);
112
+ _tokenRegistryAddress = tokenRegistry;
113
+ _stakingAddress = staking;
114
+
115
+ _stakingNftId = _registerStaking();
116
+ }
117
+
118
+ function registerService(
119
+ ObjectInfo memory info,
120
+ VersionPart version,
121
+ ObjectType domain
122
+ )
123
+ external
124
+ onlyReleaseManager
125
+ returns(NftId nftId)
126
+ {
127
+ address service = info.objectAddress;
128
+ /* must be guaranteed by release manager
129
+ if(service == address(0)) {
130
+ revert();
131
+ }
132
+
133
+ if(version.eqz()) {
134
+ revert();
135
+ }
136
+
137
+ if(info.objectType != SERVICE()) {
138
+ revert();
139
+ }
140
+ if(info.parentType != REGISTRY()) {
141
+ revert();
142
+ }
143
+ info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
144
+ */
145
+
146
+ if(domain.eqz()) {
147
+ revert ErrorRegistryDomainZero(service);
148
+ }
149
+
150
+ if(_service[version][domain] > address(0)) {
151
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
134
152
  }
153
+
154
+ _service[version][domain] = service;
155
+
156
+ nftId = _register(info);
135
157
 
136
- // create object info and link nft id with it
137
- _registerObjectInfo(registerable, nftId);
158
+ emit LogServiceRegistration(version, domain);
138
159
  }
139
160
 
161
+ function register(ObjectInfo memory info)
162
+ external
163
+ onlyRegistryService
164
+ returns(NftId nftId)
165
+ {
166
+ ObjectType objectType = info.objectType;
167
+ ObjectType parentType = _info[info.parentNftId].objectType;
168
+
169
+ // only valid core types combinations
170
+ if(info.objectAddress == address(0))
171
+ {
172
+ if(_coreObjectCombinations[objectType][parentType] == false) {
173
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
174
+ }
175
+ }
176
+ else
177
+ {
178
+ if(_coreContractCombinations[objectType][parentType] == false) {
179
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
180
+ }
181
+ }
140
182
 
141
- function registerObjectForInstance(
142
- NftId parentNftId,
143
- ObjectType objectType,
144
- address initialOwner,
145
- bytes memory data
146
- )
183
+ nftId = _register(info);
184
+ }
185
+
186
+ function registerWithCustomType(ObjectInfo memory info)
147
187
  external
148
- override
149
- returns (
150
- // TODO add onlyRegisteredInstance
151
- NftId nftId
152
- )
188
+ onlyRegistryService
189
+ returns(NftId nftId)
153
190
  {
154
- // TODO add more validation
155
- require(
156
- objectType == POLICY() || objectType == BUNDLE(),
157
- "ERROR:REG-010:TYPE_INVALID"
158
- );
159
-
160
- uint256 mintedTokenId = _chainNft.mint(initialOwner, EMPTY_URI);
161
- nftId = toNftId(mintedTokenId);
162
-
163
- ObjectInfo memory info = ObjectInfo(
164
- nftId,
165
- parentNftId,
166
- objectType,
167
- address(0),
168
- initialOwner,
169
- data
170
- );
191
+ ObjectType objectType = info.objectType;
192
+ ObjectType parentType = _info[info.parentNftId].objectType;
171
193
 
172
- _info[nftId] = info;
194
+ if(_coreTypes[objectType]) {
195
+ revert ErrorRegistryCoreTypeRegistration();
196
+ }
197
+
198
+ if(
199
+ parentType == PROTOCOL() ||
200
+ parentType == REGISTRY() ||
201
+ parentType == SERVICE()
202
+ ) {
203
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
204
+ }
205
+
206
+ _register(info);
207
+ }
208
+
209
+
210
+ /// @dev earliest GIF major version
211
+ function getInitialVersion() external view returns (VersionPart) {
212
+ return _releaseManager.getInitialVersion();
213
+ }
214
+
215
+ /// @dev next GIF release version to be released
216
+ function getNextVersion() external view returns (VersionPart) {
217
+ return _releaseManager.getNextVersion();
218
+ }
173
219
 
174
- // add logging
220
+ /// @dev latest active GIF release version
221
+ function getLatestVersion() external view returns (VersionPart) {
222
+ return _releaseManager.getLatestVersion();
175
223
  }
176
224
 
177
- function getObjectCount() external view override returns (uint256) {
225
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
226
+ return _releaseManager.getReleaseInfo(version);
227
+ }
228
+
229
+ function getObjectCount() external view returns (uint256) {
178
230
  return _chainNft.totalSupply();
179
231
  }
180
232
 
181
- function getNftId(
182
- address object
183
- ) external view override returns (NftId id) {
233
+ function getNftId() external view returns (NftId nftId) {
234
+ return _registryNftId;
235
+ }
236
+
237
+ function getProtocolNftId() external view returns (NftId nftId) {
238
+ return _protocolNftId;
239
+ }
240
+
241
+ function getNftId(address object) external view returns (NftId id) {
184
242
  return _nftIdByAddress[object];
185
243
  }
186
244
 
187
- function isRegistered(
188
- NftId nftId
189
- ) public view override returns (bool) {
190
- return _info[nftId].objectType.gtz();
245
+ function ownerOf(NftId nftId) public view returns (address) {
246
+ return _chainNft.ownerOf(nftId.toInt());
191
247
  }
192
248
 
193
- function isRegistered(
194
- address object
195
- ) external view override returns (bool) {
196
- return _nftIdByAddress[object].gtz();
249
+ function ownerOf(address contractAddress) public view returns (address) {
250
+ return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
197
251
  }
198
252
 
199
- function getObjectInfo(
200
- NftId nftId
201
- ) external view override returns (ObjectInfo memory info) {
253
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
202
254
  return _info[nftId];
203
255
  }
204
256
 
205
- function getName(
206
- NftId nftId
207
- ) external view returns (string memory name) {
208
- return _string[nftId];
257
+ function getObjectInfo(address object) external view returns (ObjectInfo memory) {
258
+ return _info[_nftIdByAddress[object]];
209
259
  }
210
260
 
211
- function getOwner(NftId nftId) external view override returns (address) {
212
- return _chainNft.ownerOf(nftId.toInt());
261
+ function isRegistered(NftId nftId) public view returns (bool) {
262
+ return _info[nftId].objectType.gtz();
213
263
  }
214
264
 
215
- function getChainNft() external view override returns (IChainNft) {
216
- return _chainNft;
265
+ function isRegistered(address object) external view returns (bool) {
266
+ return _nftIdByAddress[object].gtz();
217
267
  }
218
268
 
219
- // special case to retrive a gif service
220
- function getServiceAddress(string memory serviceName, VersionPart majorVersion) external view override returns (address serviceAddress) {
221
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
222
- return _service[serviceNameHash][majorVersion];
269
+ function isRegisteredService(address object) external view returns (bool) {
270
+ return _info[_nftIdByAddress[object]].objectType == SERVICE();
223
271
  }
224
272
 
225
- // from IERC165
226
- function supportsInterface(bytes4 interfaceId) external pure override returns (bool) {
227
- return interfaceId == type(IRegistry).interfaceId;
273
+ function isRegisteredComponent(address object) external view returns (bool) {
274
+ NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
275
+ return _info[objectParentNftId].objectType == INSTANCE();
228
276
  }
229
277
 
230
- // from IRegistryLinked
231
- function getRegistry() external view override returns (IRegistry registry) {
232
- return this;
278
+ function isActiveRelease(VersionPart version) external view returns (bool)
279
+ {
280
+ return _releaseManager.isActiveRelease(version);
233
281
  }
234
282
 
235
- // from IRegisterable
236
- function register() external pure override returns (NftId nftId) {
237
- return zeroNftId();
283
+ function getStakingAddress() external view returns (address staking) {
284
+ //return getObjectInfo(_stakingNftId).objectAddress;
285
+ //return _info[_stakingNftId].objectAddress;
286
+ return _stakingAddress;
238
287
  }
239
288
 
240
- function getType() external pure override returns (ObjectType objectType) {
241
- return REGISTRY();
289
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
290
+ return _tokenRegistryAddress;
242
291
  }
243
292
 
293
+ function getServiceAddress(
294
+ ObjectType serviceDomain,
295
+ VersionPart releaseVersion
296
+ ) external view returns (address service)
297
+ {
298
+ service = _service[releaseVersion][serviceDomain];
299
+ }
244
300
 
245
- function getOwner() public view override returns (address owner) {
246
- return _nftId.gtz() ? this.getOwner(_nftId) : _initialOwner;
301
+ function getReleaseManagerAddress() external view returns (address) {
302
+ return address(_releaseManager);
247
303
  }
248
304
 
249
- function getNftId() external view override (IRegisterable, IRegistry) returns (NftId nftId) {
250
- return _nftId;
305
+ function getChainNftAddress() external view override returns (address) {
306
+ return address(_chainNft);
251
307
  }
252
308
 
253
- function getParentNftId() external view returns (NftId nftId) {
254
- // we're the global registry
255
- if(block.chainid == 1) {
256
- return toNftId(_chainNftInternal.PROTOCOL_NFT_ID());
257
- }
258
- else {
259
- return toNftId(_chainNftInternal.GLOBAL_REGISTRY_ID());
260
- }
309
+ function getRegistryAdminAddress() external view returns (address) {
310
+ return address(_admin);
261
311
  }
262
312
 
263
- function getData() external pure returns (bytes memory data) {
264
- return "";
313
+ function getAuthority() external view returns (address) {
314
+ return _admin.authority();
265
315
  }
266
316
 
267
- // registry specific functions
268
- function getProtocolOwner() external view override returns (address) {
269
- return _protocolOwner;
317
+ function getOwner() public view returns (address owner) {
318
+ return ownerOf(address(this));
270
319
  }
271
320
 
272
- /// @dev defines which types are allowed to register
273
- function _setupValidTypes() internal {
274
- _isValidType[REGISTRY()] = true; // only for global registry
275
- _isValidType[TOKEN()] = true;
276
- _isValidType[SERVICE()] = true;
277
- _isValidType[INSTANCE()] = true;
278
- _isValidType[STAKE()] = true;
279
- _isValidType[PRODUCT()] = true;
280
- _isValidType[ORACLE()] = true;
281
- _isValidType[POOL()] = true;
282
- _isValidType[DISTRIBUTION()] = true;
283
- _isValidType[POLICY()] = true;
284
- _isValidType[BUNDLE()] = true;
321
+ // IERC165
322
+
323
+ function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
324
+ if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
325
+ return true;
326
+ }
327
+
328
+ return false;
285
329
  }
286
330
 
287
- /// @dev defines which types - parent type relations are allowed to register
288
- function _setupValidParentTypes() internal {
289
- // registry as parent
290
- _isValidParentType[TOKEN()][REGISTRY()] = true;
291
- _isValidParentType[SERVICE()][REGISTRY()] = true;
292
- _isValidParentType[INSTANCE()][REGISTRY()] = true;
331
+ // Internals
332
+
333
+ /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
334
+ // TODO registration of precompile addresses
335
+ function _register(ObjectInfo memory info)
336
+ internal
337
+ returns(NftId nftId)
338
+ {
339
+ ObjectType objectType = info.objectType;
340
+ bool isInterceptor = info.isInterceptor;
341
+ address objectAddress = info.objectAddress;
342
+ address owner = info.initialOwner;
343
+
344
+ NftId parentNftId = info.parentNftId;
345
+ ObjectInfo memory parentInfo = _info[parentNftId];
346
+ ObjectType parentType = parentInfo.objectType; // see function header
347
+ address parentAddress = parentInfo.objectAddress;
348
+
349
+ // parent is contract -> need to check? -> check before minting
350
+ // special case: staking: to protocol possible as well
351
+ // special case: global registry nft as parent when not on mainnet -> global registry address is 0
352
+ // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
353
+ // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
354
+ if(objectType != STAKE()) {
355
+ if(parentAddress == address(0)) {
356
+ revert ErrorRegistryParentAddressZero();
357
+ }
358
+ }
293
359
 
294
- // instance as parent
295
- _isValidParentType[PRODUCT()][INSTANCE()] = true;
296
- _isValidParentType[DISTRIBUTION()][INSTANCE()] = true;
297
- _isValidParentType[ORACLE()][INSTANCE()] = true;
298
- _isValidParentType[POOL()][INSTANCE()] = true;
360
+ address interceptorAddress = _getInterceptor(
361
+ isInterceptor,
362
+ objectType,
363
+ objectAddress,
364
+ parentInfo.isInterceptor,
365
+ parentAddress);
366
+
367
+ uint256 tokenId = _chainNft.getNextTokenId();
368
+ nftId = NftIdLib.toNftId(tokenId);
369
+ info.nftId = nftId;
370
+ _info[nftId] = info;
371
+
372
+ if(objectAddress > address(0)) {
373
+ if(_nftIdByAddress[objectAddress].gtz()) {
374
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
375
+ }
376
+
377
+ _nftIdByAddress[objectAddress] = nftId;
378
+ }
299
379
 
300
- // product as parent
301
- _isValidParentType[POLICY()][PRODUCT()] = true;
380
+ emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
302
381
 
303
- // pool as parent
304
- _isValidParentType[BUNDLE()][POOL()] = true;
305
- _isValidParentType[STAKE()][POOL()] = true;
382
+ // calls nft receiver(1) and interceptor(2)
383
+ uint256 mintedTokenId = _chainNft.mint(
384
+ owner,
385
+ interceptorAddress,
386
+ EMPTY_URI);
387
+
388
+ assert(mintedTokenId == tokenId);
306
389
  }
307
390
 
308
- /// @dev protocol registration used to anchor the dip ecosystem relations
309
- function _registerProtocol() virtual internal {
310
- uint256 protocolId = _chainNftInternal.PROTOCOL_NFT_ID();
311
- _chainNftInternal.mint(_protocolOwner, protocolId);
391
+ /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
392
+ /// special case: STAKES (parent may be any type) -> no intercept call
393
+ /// default case:
394
+ function _getInterceptor(
395
+ bool isInterceptor,
396
+ ObjectType objectType,
397
+ address objectAddress,
398
+ bool parentIsInterceptor,
399
+ address parentObjectAddress
400
+ )
401
+ internal
402
+ pure
403
+ returns (address interceptor)
404
+ {
405
+ // no intercepting calls for stakes
406
+ if (objectType == STAKE()) {
407
+ return address(0);
408
+ }
312
409
 
313
- NftId protocolNftid = toNftId(protocolId);
314
- ObjectInfo memory protocolInfo = ObjectInfo(
315
- protocolNftid,
316
- zeroNftId(), // parent nft id
317
- PROTOCOL(),
318
- address(0), // contract address
319
- _protocolOwner,
320
- "" // data
321
- );
410
+ if (objectAddress == address(0)) {
411
+ if (parentIsInterceptor) {
412
+ return parentObjectAddress;
413
+ } else {
414
+ return address(0);
415
+ }
416
+ }
417
+
418
+ if (isInterceptor) {
419
+ return objectAddress;
420
+ }
322
421
 
323
- _info[protocolNftid] = protocolInfo;
422
+ return address(0);
423
+ }
424
+
425
+ // Internals called only in constructor
426
+
427
+ /// @dev protocol registration used to anchor the dip ecosystem relations
428
+ function _registerProtocol()
429
+ private
430
+ returns (NftId protocolNftId)
431
+ {
432
+ uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
433
+ protocolNftId = NftIdLib.toNftId(protocolId);
434
+
435
+ _info[protocolNftId] = ObjectInfo({
436
+ nftId: protocolNftId,
437
+ parentNftId: NftIdLib.zero(),
438
+ objectType: PROTOCOL(),
439
+ isInterceptor: false,
440
+ objectAddress: address(0),
441
+ initialOwner: NFT_LOCK_ADDRESS,
442
+ data: ""
443
+ });
444
+
445
+ _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
324
446
  }
325
447
 
326
448
  /// @dev registry registration
327
449
  /// might also register the global registry when not on mainnet
328
- function _registerRegistry() virtual internal returns (NftId registryNftId) {
329
- uint256 registryId = _chainNftInternal.calculateTokenId(2);
330
- registryNftId = toNftId(registryId);
450
+ function _registerRegistry()
451
+ private
452
+ returns (NftId registryNftId)
453
+ {
454
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
455
+ registryNftId = NftIdLib.toNftId(registryId);
456
+ NftId parentNftId;
331
457
 
332
- // we're not the global registry
333
- if(registryId != _chainNftInternal.GLOBAL_REGISTRY_ID()) {
458
+ if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
459
+ {// we're not the global registry
334
460
  _registerGlobalRegistry();
461
+ parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
462
+ }
463
+ else
464
+ {// we are global registry
465
+ parentNftId = _protocolNftId;
335
466
  }
336
467
 
337
- _chainNftInternal.mint(_protocolOwner, registryId);
338
- _registerObjectInfo(this, registryNftId);
468
+ _info[registryNftId] = ObjectInfo({
469
+ nftId: registryNftId,
470
+ parentNftId: parentNftId,
471
+ objectType: REGISTRY(),
472
+ isInterceptor: false,
473
+ objectAddress: address(this),
474
+ initialOwner: NFT_LOCK_ADDRESS,
475
+ data: ""
476
+ });
477
+
478
+ _nftIdByAddress[address(this)] = registryNftId;
479
+ _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
339
480
  }
340
481
 
341
-
342
482
  /// @dev global registry registration for non mainnet registries
343
- function _registerGlobalRegistry() virtual internal {
344
- uint256 globalRegistryId = _chainNftInternal.GLOBAL_REGISTRY_ID();
345
- _chainNftInternal.mint(_protocolOwner, globalRegistryId);
346
-
347
- NftId globalRegistryNftId = toNftId(globalRegistryId);
348
- ObjectInfo memory globalRegistryInfo = ObjectInfo(
349
- globalRegistryNftId,
350
- toNftId(_chainNftInternal.PROTOCOL_NFT_ID()),
351
- REGISTRY(),
352
- address(0), // contract address
353
- _protocolOwner,
354
- "" // data
355
- );
356
-
357
- _info[globalRegistryNftId] = globalRegistryInfo;
358
- }
359
-
360
-
361
- function _registerObjectInfo(
362
- IRegisterable registerable,
363
- NftId nftId
364
- ) internal virtual {
365
- address objectAddress = address(registerable);
366
- ObjectInfo memory info = ObjectInfo(
367
- nftId,
368
- registerable.getParentNftId(),
369
- registerable.getType(),
370
- objectAddress,
371
- registerable.getOwner(),
372
- registerable.getData()
373
- );
374
-
375
- _info[nftId] = info;
376
- _nftIdByAddress[objectAddress] = nftId;
377
-
378
- // add logging
483
+ function _registerGlobalRegistry()
484
+ private
485
+ {
486
+ uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
487
+ NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
488
+
489
+ _info[globalRegistryNftId] = ObjectInfo({
490
+ nftId: globalRegistryNftId,
491
+ parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
492
+ objectType: REGISTRY(),
493
+ isInterceptor: false,
494
+ objectAddress: address(0),
495
+ initialOwner: NFT_LOCK_ADDRESS,
496
+ data: ""
497
+ });
498
+
499
+ _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
500
+ }
501
+ // depends on _registryNftId and _stakingAddress
502
+ function _registerStaking()
503
+ private
504
+ returns (NftId stakingNftId)
505
+ {
506
+ address stakingOwner = IRegisterable(_stakingAddress).getOwner();
507
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
508
+ stakingNftId = NftIdLib.toNftId(stakingId);
509
+
510
+ _info[stakingNftId] = ObjectInfo({
511
+ nftId: stakingNftId,
512
+ parentNftId: _registryNftId,
513
+ objectType: STAKING(),
514
+ isInterceptor: false,
515
+ objectAddress: _stakingAddress,
516
+ initialOwner: stakingOwner,
517
+ data: ""
518
+ });
519
+
520
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
521
+ // reverts if nftId was already minted
522
+ _chainNft.mint(stakingOwner, stakingId);
379
523
  }
380
524
 
525
+ /// @dev defines which object - parent types relations are allowed to register
526
+ // IMPORTANT:
527
+ // 1) EACH object type MUST have only one parent type across ALL mappings
528
+ // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
529
+ // 3) DO NOT use REGISTRY as object type
530
+ // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
531
+ function _setupValidCoreTypesAndCombinations()
532
+ private
533
+ {
534
+ _coreTypes[REGISTRY()] = true;
535
+ _coreTypes[SERVICE()] = true;
536
+ _coreTypes[TOKEN()] = true;
537
+ _coreTypes[INSTANCE()] = true;
538
+ _coreTypes[PRODUCT()] = true;
539
+ _coreTypes[POOL()] = true;
540
+ _coreTypes[DISTRIBUTION()] = true;
541
+ _coreTypes[DISTRIBUTOR()] = true;
542
+ _coreTypes[ORACLE()] = true;
543
+ _coreTypes[POLICY()] = true;
544
+ _coreTypes[BUNDLE()] = true;
545
+ _coreTypes[STAKING()] = true;
546
+ _coreTypes[STAKE()] = true;
547
+
548
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
549
+ if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
550
+ // we are global registry
551
+ // object is registry from different chain
552
+ // parent is global registry, this contract
553
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
554
+ //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
555
+ } else {
556
+ // we are not global registry
557
+ // object is local registry, this contract
558
+ // parent is global registry, object with 0 address or registry from mainnet???
559
+ }
560
+ _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
561
+ _coreContractCombinations[TOKEN()][REGISTRY()] = true;
562
+ //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
563
+ _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
564
+
565
+ _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
566
+ _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
567
+ _coreContractCombinations[ORACLE()][INSTANCE()] = true;
568
+ _coreContractCombinations[POOL()][INSTANCE()] = true;
569
+
570
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
571
+ _coreObjectCombinations[POLICY()][PRODUCT()] = true;
572
+ _coreObjectCombinations[BUNDLE()][POOL()] = true;
573
+
574
+ // staking
575
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
576
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
577
+ }
381
578
  }