@etherisc/gif-next 0.0.2-743affe-003 → 0.0.2-76249b0-812

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 (663) hide show
  1. package/README.md +179 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +814 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +297 -1797
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +437 -2044
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1701 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1053 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3642 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +190 -0
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  43. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  44. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  46. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  51. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  52. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  53. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  54. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  55. package/artifacts/contracts/{instance/base/ModuleBase.sol/ModuleBase.json → oracle/IOracle.sol/IOracle.json} +2 -2
  56. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  58. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
  60. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  62. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  64. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
  66. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  67. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  68. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  70. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  71. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +330 -314
  72. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  74. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  76. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  77. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  78. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  79. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  80. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  82. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  84. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  86. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  88. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  89. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  90. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +292 -182
  92. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  94. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  95. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  96. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  97. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +313 -261
  98. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  99. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  100. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → product/IProductService.sol/IProductService.json} +168 -161
  102. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  104. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  106. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  107. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  108. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  110. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  111. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  112. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  114. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +396 -61
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +610 -168
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  124. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/Registry.sol/Registry.json +630 -235
  126. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  127. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +871 -317
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
  132. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  134. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  148. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  149. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1490 -0
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +290 -157
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  158. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  162. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  164. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
  166. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  168. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +77 -169
  170. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  172. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +66 -52
  174. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  176. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +65 -8
  178. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  179. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  180. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +143 -154
  182. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  184. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  185. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  186. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  188. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  190. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  192. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  193. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  194. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  195. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  196. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  197. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  198. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  199. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +369 -62
  200. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +205 -12
  202. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  203. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  204. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +233 -195
  206. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  207. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  208. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  209. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  210. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  212. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  213. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  214. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  215. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  216. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  218. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  219. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  220. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  222. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  224. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  226. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  228. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  230. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  232. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  233. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  234. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  236. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  238. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  240. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  242. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  244. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  246. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  248. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  250. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +105 -0
  252. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  254. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  256. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  258. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  260. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  262. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  264. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  266. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  268. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  269. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  270. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  271. package/artifacts/contracts/{types/UFixed.sol/UFixedMathLib.json → type/UFixed.sol/UFixedLib.json} +4 -4
  272. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  273. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  276. package/contracts/distribution/Distribution.sol +261 -0
  277. package/contracts/distribution/DistributionService.sol +298 -0
  278. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  279. package/contracts/distribution/IDistributionComponent.sol +66 -0
  280. package/contracts/distribution/IDistributionService.sol +81 -0
  281. package/contracts/instance/BundleManager.sol +126 -0
  282. package/contracts/instance/IInstance.sol +74 -46
  283. package/contracts/instance/IInstanceService.sol +81 -0
  284. package/contracts/instance/Instance.sol +220 -69
  285. package/contracts/instance/InstanceAdmin.sol +331 -0
  286. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  287. package/contracts/instance/InstanceReader.sol +390 -0
  288. package/contracts/instance/InstanceService.sol +362 -0
  289. package/contracts/instance/InstanceServiceManager.sol +44 -0
  290. package/contracts/instance/InstanceStore.sol +281 -0
  291. package/contracts/instance/base/BalanceStore.sol +118 -0
  292. package/contracts/instance/base/Cloneable.sol +51 -0
  293. package/contracts/instance/base/ObjectCounter.sol +21 -0
  294. package/contracts/instance/base/ObjectManager.sol +82 -0
  295. package/contracts/instance/module/IAccess.sol +46 -0
  296. package/contracts/instance/module/IBundle.sol +20 -0
  297. package/contracts/instance/module/IComponents.sol +52 -0
  298. package/contracts/instance/module/IDistribution.sol +42 -0
  299. package/contracts/instance/module/IPolicy.sol +84 -0
  300. package/contracts/instance/module/IRisk.sol +11 -0
  301. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  302. package/contracts/oracle/IOracle.sol +20 -0
  303. package/contracts/oracle/IOracleComponent.sol +32 -0
  304. package/contracts/oracle/IOracleService.sol +65 -0
  305. package/contracts/oracle/Oracle.sol +145 -0
  306. package/contracts/oracle/OracleService.sol +277 -0
  307. package/contracts/oracle/OracleServiceManager.sol +42 -0
  308. package/contracts/pool/BundleService.sol +296 -0
  309. package/contracts/pool/BundleServiceManager.sol +42 -0
  310. package/contracts/pool/IBundleService.sol +106 -0
  311. package/contracts/pool/IPoolComponent.sol +112 -0
  312. package/contracts/pool/IPoolService.sol +150 -0
  313. package/contracts/pool/Pool.sol +299 -0
  314. package/contracts/pool/PoolService.sol +453 -0
  315. package/contracts/pool/PoolServiceManager.sol +42 -0
  316. package/contracts/product/ApplicationService.sol +254 -0
  317. package/contracts/product/ApplicationServiceManager.sol +38 -0
  318. package/contracts/product/ClaimService.sol +442 -0
  319. package/contracts/product/ClaimServiceManager.sol +38 -0
  320. package/contracts/product/IApplicationService.sol +62 -0
  321. package/contracts/product/IClaimService.sol +99 -0
  322. package/contracts/product/IPolicyService.sol +78 -0
  323. package/contracts/product/IPricingService.sol +39 -0
  324. package/contracts/product/IProductComponent.sol +42 -0
  325. package/contracts/product/IProductService.sol +33 -0
  326. package/contracts/product/PolicyService.sol +475 -0
  327. package/contracts/product/PolicyServiceManager.sol +42 -0
  328. package/contracts/product/PricingService.sol +301 -0
  329. package/contracts/product/PricingServiceManager.sol +42 -0
  330. package/contracts/product/Product.sol +377 -0
  331. package/contracts/product/ProductService.sol +124 -0
  332. package/contracts/product/ProductServiceManager.sol +42 -0
  333. package/contracts/registry/ChainNft.sol +55 -25
  334. package/contracts/registry/IRegistry.sol +84 -35
  335. package/contracts/registry/IRegistryService.sol +56 -16
  336. package/contracts/registry/ITransferInterceptor.sol +1 -0
  337. package/contracts/registry/Registry.sol +405 -334
  338. package/contracts/registry/RegistryAdmin.sol +237 -0
  339. package/contracts/registry/RegistryService.sol +158 -275
  340. package/contracts/registry/RegistryServiceManager.sol +58 -0
  341. package/contracts/registry/ReleaseManager.sol +600 -0
  342. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  343. package/contracts/registry/TokenRegistry.sol +315 -0
  344. package/contracts/shared/AccessManagerCustom.sol +736 -0
  345. package/contracts/shared/AccessManagerExtended.sol +470 -0
  346. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  347. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  348. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  349. package/contracts/shared/Component.sol +281 -0
  350. package/contracts/shared/ComponentService.sol +618 -0
  351. package/contracts/shared/ComponentServiceManager.sol +35 -0
  352. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  353. package/contracts/shared/ERC165.sol +16 -10
  354. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  355. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  356. package/contracts/shared/IComponent.sol +70 -0
  357. package/contracts/shared/IComponentService.sol +102 -0
  358. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  359. package/contracts/shared/IKeyValueStore.sol +53 -0
  360. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -4
  361. package/contracts/shared/INftOwnable.sol +23 -0
  362. package/contracts/shared/IPolicyHolder.sol +45 -0
  363. package/contracts/shared/IRegisterable.sol +5 -12
  364. package/contracts/shared/IRegistryLinked.sol +11 -0
  365. package/contracts/shared/IService.sol +18 -0
  366. package/contracts/shared/IVersionable.sol +5 -48
  367. package/contracts/shared/InitializableCustom.sol +177 -0
  368. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  369. package/contracts/shared/KeyValueStore.sol +127 -0
  370. package/contracts/{instance/base → shared}/Lifecycle.sol +38 -8
  371. package/contracts/shared/NftIdSetManager.sol +65 -0
  372. package/contracts/shared/NftOwnable.sol +107 -0
  373. package/contracts/shared/PolicyHolder.sol +102 -0
  374. package/contracts/shared/ProxyManager.sol +127 -43
  375. package/contracts/shared/Registerable.sol +33 -75
  376. package/contracts/shared/RegistryLinked.sol +43 -0
  377. package/contracts/shared/Service.sol +77 -0
  378. package/contracts/shared/TokenHandler.sol +58 -0
  379. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  380. package/contracts/shared/Versionable.sol +5 -93
  381. package/contracts/staking/IStaking.sol +168 -0
  382. package/contracts/staking/IStakingService.sol +149 -0
  383. package/contracts/staking/StakeManagerLib.sol +179 -0
  384. package/contracts/staking/Staking.sol +551 -0
  385. package/contracts/staking/StakingManager.sol +54 -0
  386. package/contracts/staking/StakingReader.sol +187 -0
  387. package/contracts/staking/StakingService.sol +406 -0
  388. package/contracts/staking/StakingServiceManager.sol +45 -0
  389. package/contracts/staking/StakingStore.sol +572 -0
  390. package/contracts/staking/TargetManagerLib.sol +207 -0
  391. package/contracts/{types → type}/AddressSet.sol +1 -1
  392. package/contracts/type/Amount.sol +128 -0
  393. package/contracts/{types → type}/Blocknumber.sol +21 -3
  394. package/contracts/type/ClaimId.sol +75 -0
  395. package/contracts/type/DistributorType.sol +55 -0
  396. package/contracts/type/Fee.sol +66 -0
  397. package/contracts/{types → type}/Key32.sol +8 -3
  398. package/contracts/{types → type}/NftId.sol +21 -15
  399. package/contracts/type/NftIdSet.sol +62 -0
  400. package/contracts/{types → type}/ObjectType.sol +57 -20
  401. package/contracts/type/PayoutId.sol +82 -0
  402. package/contracts/type/Referral.sol +89 -0
  403. package/contracts/type/RequestId.sol +75 -0
  404. package/contracts/{types → type}/RiskId.sol +1 -1
  405. package/contracts/type/RoleId.sol +146 -0
  406. package/contracts/type/Seconds.sol +81 -0
  407. package/contracts/{types → type}/StateId.sol +39 -5
  408. package/contracts/{types → type}/Timestamp.sol +27 -14
  409. package/contracts/{types → type}/UFixed.sol +129 -12
  410. package/contracts/{types → type}/Version.sol +6 -2
  411. package/package.json +8 -7
  412. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  413. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -213
  414. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  415. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -445
  416. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  417. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -177
  418. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  419. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -343
  420. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  421. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -474
  422. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  423. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -373
  424. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  425. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -602
  426. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  427. package/artifacts/contracts/components/Product.sol/Product.json +0 -502
  428. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  429. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  430. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  431. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  432. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  433. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  434. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  435. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  436. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  438. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  439. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  440. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  441. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  442. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  444. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  446. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  448. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  450. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  452. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  454. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  456. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  458. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  460. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  462. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  463. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  464. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  465. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  466. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  467. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  468. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  469. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  470. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  472. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  473. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  474. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  475. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  476. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  479. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  480. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  481. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  482. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  483. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  484. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  485. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  486. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  487. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  488. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  489. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  490. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  491. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  492. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  493. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  494. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  495. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  496. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  497. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  498. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  499. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  500. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  501. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  502. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  503. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  504. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  505. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  506. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  507. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  508. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  509. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  510. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  511. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  512. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  513. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  514. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  515. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  516. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  517. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  518. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  519. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  520. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  521. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  522. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -690
  523. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  524. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -526
  525. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  526. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -369
  528. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -649
  532. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
  534. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  535. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  536. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  537. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.dbg.json +0 -4
  538. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.json +0 -344
  539. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  540. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  541. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  542. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
  543. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  544. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  545. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  546. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
  547. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  548. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
  549. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  550. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -191
  551. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  552. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  553. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  554. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -472
  555. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  556. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  557. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  558. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  559. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  560. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -270
  561. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  562. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  563. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  564. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  566. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  569. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  570. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  571. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  572. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  573. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  574. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  575. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  576. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  577. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  579. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  582. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  585. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  589. package/contracts/components/BaseComponent.sol +0 -79
  590. package/contracts/components/Distribution.sol +0 -155
  591. package/contracts/components/IBaseComponent.sol +0 -19
  592. package/contracts/components/IDistributionComponent.sol +0 -47
  593. package/contracts/components/IPoolComponent.sol +0 -65
  594. package/contracts/components/IProductComponent.sol +0 -39
  595. package/contracts/components/Pool.sol +0 -246
  596. package/contracts/components/Product.sol +0 -299
  597. package/contracts/experiment/errors/Require.sol +0 -38
  598. package/contracts/experiment/errors/Revert.sol +0 -44
  599. package/contracts/experiment/inheritance/A.sol +0 -53
  600. package/contracts/experiment/inheritance/B.sol +0 -28
  601. package/contracts/experiment/inheritance/C.sol +0 -34
  602. package/contracts/experiment/inheritance/IA.sol +0 -13
  603. package/contracts/experiment/inheritance/IB.sol +0 -10
  604. package/contracts/experiment/inheritance/IC.sol +0 -12
  605. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  606. package/contracts/experiment/statemachine/ISM.sol +0 -25
  607. package/contracts/experiment/statemachine/SM.sol +0 -57
  608. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  609. package/contracts/experiment/types/TypeA.sol +0 -47
  610. package/contracts/experiment/types/TypeB.sol +0 -29
  611. package/contracts/instance/IInstanceLinked.sol +0 -8
  612. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  613. package/contracts/instance/base/IInstanceBase.sol +0 -23
  614. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  615. package/contracts/instance/base/IService.sol +0 -15
  616. package/contracts/instance/base/InstanceBase.sol +0 -89
  617. package/contracts/instance/base/KeyValueStore.sol +0 -161
  618. package/contracts/instance/base/ModuleBase.sol +0 -57
  619. package/contracts/instance/base/ServiceBase.sol +0 -43
  620. package/contracts/instance/module/access/Access.sol +0 -149
  621. package/contracts/instance/module/access/IAccess.sol +0 -53
  622. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  623. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  624. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  625. package/contracts/instance/module/component/IComponent.sol +0 -28
  626. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  627. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  628. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  629. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  630. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  631. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  632. package/contracts/instance/module/risk/IRisk.sol +0 -26
  633. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  634. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  635. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  636. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  637. package/contracts/instance/service/ComponentOwnerService.sol +0 -272
  638. package/contracts/instance/service/DistributionService.sol +0 -54
  639. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  640. package/contracts/instance/service/IDistributionService.sol +0 -12
  641. package/contracts/instance/service/IPoolService.sol +0 -37
  642. package/contracts/instance/service/IProductService.sol +0 -107
  643. package/contracts/instance/service/PoolService.sol +0 -149
  644. package/contracts/instance/service/ProductService.sol +0 -509
  645. package/contracts/registry/IChainNft.sol +0 -22
  646. package/contracts/registry/IRegistryLinked.sol +0 -8
  647. package/contracts/registry/RegistryInstaller.sol +0 -100
  648. package/contracts/shared/IOwnable.sol +0 -6
  649. package/contracts/test/TestDistribution.sol +0 -22
  650. package/contracts/test/TestFee.sol +0 -25
  651. package/contracts/test/TestPool.sol +0 -27
  652. package/contracts/test/TestProduct.sol +0 -74
  653. package/contracts/test/TestRegisterable.sol +0 -18
  654. package/contracts/test/TestRoleId.sol +0 -14
  655. package/contracts/test/TestService.sol +0 -26
  656. package/contracts/test/TestToken.sol +0 -26
  657. package/contracts/test/TestVersion.sol +0 -44
  658. package/contracts/test/TestVersionable.sol +0 -17
  659. package/contracts/types/ChainId.sol +0 -38
  660. package/contracts/types/Fee.sol +0 -56
  661. package/contracts/types/NftIdSet.sol +0 -60
  662. package/contracts/types/ReferralId.sol +0 -48
  663. package/contracts/types/RoleId.sol +0 -38
@@ -1,463 +1,410 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
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
6
 
7
- import {IChainNft} from "./IChainNft.sol";
8
- import {ChainNft} from "./ChainNft.sol";
9
- import {IRegistry} from "./IRegistry.sol";
10
- import {NftId, toNftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
11
- import {Version, VersionPart, VersionLib} from "../types/Version.sol";
12
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
13
- import {ITransferInterceptor} from "./ITransferInterceptor.sol";
7
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
14
8
 
15
- import {IOwnable} from "../shared/IOwnable.sol";
16
- import {ERC165} from "../shared/ERC165.sol";
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";
17
12
 
13
+ import {ChainNft} from "./ChainNft.sol";
14
+ import {IRegistry} from "./IRegistry.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";
18
19
 
19
20
  // IMPORTANT
20
21
  // Each NFT minted by registry is accosiated with:
21
22
  // 1) NFT owner
22
23
  // 2) registred contract OR object stored in registered (parent) contract
23
24
  // Four registration flows:
24
- // 1) non IRegisterable address by registryOwner (TOKEN)
25
- // 2) IRegisterable address by registryOwner (SERVICE)
26
- // 3) IRegisterable address by approved service (INSTANCE, COMPONENT)
27
- // 4) state object by approved service (POLICY, BUNDLE, STAKE)
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)
28
29
 
29
30
  contract Registry is
30
- ERC165,
31
+ InitializableCustom,
31
32
  IRegistry
32
33
  {
33
- // register
34
- error NotRegistryService();
35
- error ZeroParentAddress();
36
- error ContractAlreadyRegistered(address objectAddress);
37
- error InvalidServiceVersion(VersionPart majorVersion);
38
- error ServiceNameAlreadyRegistered(string name, VersionPart majorVersion);
39
-
40
- // approve
41
- error NotOwner();
42
- error NotRegisteredContract(NftId registrarNftId);
43
- error NotService(NftId registrarNftId);
44
- error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
45
-
46
- uint256 public constant MAJOR_VERSION_MIN = 3;
47
-
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;
48
37
  string public constant EMPTY_URI = "";
49
38
 
50
- address constant public NFT_LOCK_ADDRESS = address(0x1);
39
+ mapping(NftId nftId => ObjectInfo info) private _info;
40
+ mapping(address object => NftId nftId) private _nftIdByAddress;
51
41
 
52
- mapping(NftId nftId => ObjectInfo info) _info;
53
- mapping(address object => NftId nftId) _nftIdByAddress;
42
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
54
43
 
55
- mapping(NftId registrator => mapping(
56
- ObjectType objectType => bool)) _isApproved;
44
+ mapping(ObjectType objectType => bool) private _coreTypes;
57
45
 
58
46
  mapping(ObjectType objectType => mapping(
59
- ObjectType parentType => bool)) _isValidContractCombination;
47
+ ObjectType parentType => bool)) private _coreContractCombinations;
60
48
 
61
49
  mapping(ObjectType objectType => mapping(
62
- ObjectType parentType => bool)) _isValidObjectCombination;
50
+ ObjectType parentType => bool)) private _coreObjectCombinations;
63
51
 
64
- mapping(NftId nftId => string name) _string;
65
- mapping(bytes32 serviceNameHash => mapping(
66
- VersionPart majorVersion => address service)) _service;
52
+ RegistryAdmin public immutable _admin;
53
+ ChainNft public immutable _chainNft;
67
54
 
68
- NftId _registryNftId;
69
- NftId _serviceNftId; // set in stone upon registry creation
70
- IChainNft _chainNft;
71
- ChainNft _chainNftInternal;
55
+ NftId public immutable _protocolNftId;
56
+ NftId public immutable _registryNftId;
57
+ NftId public _stakingNftId;
72
58
 
73
- /// @dev will own protocol, global registry, registry and registry service nfts minted during creation
74
- // TODO registry nft can be transfered while protocol, global registry and registry service nfts are not transferable
75
- // TODO get owner from one place -> nft contract
76
- address _protocolOwner;
59
+ address public _tokenRegistryAddress;
60
+ address public _stakingAddress;
61
+ ReleaseManager public _releaseManager;
77
62
 
78
- /*
79
- modifier onlyInitialOwner() {
80
- if(
81
- msg.sender != getOwner() ||
82
- msg.sender != _info[_registryNftId].initialOwner) {
83
- revert NotInitialOwner();
84
- }
85
- }*/
86
-
87
- modifier onlyOwner() {
88
- if(msg.sender != getOwner()) {
89
- revert NotOwner();
63
+ modifier onlyRegistryService() {
64
+ if(!_releaseManager.isActiveRegistryService(msg.sender)) {
65
+ revert ErrorRegistryCallerNotRegistryService();
90
66
  }
91
67
  _;
92
68
  }
93
69
 
94
- modifier onlyRegistryService() {
95
-
96
- if(msg.sender != _info[_serviceNftId].objectAddress) {
97
- revert NotRegistryService();
70
+
71
+ modifier onlyReleaseManager() {
72
+ if(msg.sender != address(_releaseManager)) {
73
+ revert ErrorRegistryCallerNotReleaseManager();
98
74
  }
99
75
  _;
100
76
  }
101
77
 
102
- constructor(address protocolOwner, VersionPart majorVersion)
103
- {
104
- require(protocolOwner > address(0), "Registry: protocol owner is 0");
105
- require(majorVersion.toInt() == MAJOR_VERSION_MIN, "Registry: initial major version of registry service is not MAJOR_VERSION_MIN");
106
-
107
- // TODO registry owner can change, while protocol is not?
108
- _protocolOwner = protocolOwner;
109
78
 
79
+ constructor(RegistryAdmin admin)
80
+ InitializableCustom()
81
+ {
82
+ _admin = admin;
110
83
  // deploy NFT
111
- _chainNftInternal = new ChainNft(address(this));// adds 10kb to deployment size
112
- _chainNft = IChainNft(_chainNftInternal);
84
+ _chainNft = new ChainNft(address(this));
113
85
 
114
86
  // initial registry setup
115
- _registerProtocol();
87
+ _protocolNftId = _registerProtocol();
88
+ _registryNftId = _registerRegistry();
116
89
 
117
- _registerRegistry();
90
+ // set object types and object parent relations
91
+ _setupValidCoreTypesAndCombinations();
92
+ }
118
93
 
119
- _registerRegistryService();
120
94
 
121
- // set object parent relations
122
- _setupValidObjectParentCombinations();
95
+ /// @dev wires release manager and token to registry (this contract).
96
+ /// MUST be called by release manager.
97
+ function initialize(
98
+ address releaseManager,
99
+ address tokenRegistry,
100
+ address staking
101
+ )
102
+ external
103
+ initializer()
104
+ {
105
+ _releaseManager = ReleaseManager(releaseManager);
106
+ _tokenRegistryAddress = tokenRegistry;
107
+ _stakingAddress = staking;
123
108
 
124
- _registerInterface(type(IRegistry).interfaceId);
125
- _registerInterface(type(IOwnable).interfaceId);
109
+ _stakingNftId = _registerStaking();
126
110
  }
127
111
 
128
- /// @dev registry protects only from tampering existing records and invalid types pairs
129
- // IMPORTANT: rare case when parentNftId is not registered and == next nftId -> technincally this is ZeroParentAddress error
130
- // to catch this check parent address before minting !!!!
131
- // TODO service registration means its approval for some type?
132
- function register(ObjectInfo memory info)
112
+ function registerService(
113
+ ObjectInfo memory info,
114
+ VersionPart version,
115
+ ObjectType domain
116
+ )
133
117
  external
134
- onlyRegistryService
118
+ onlyReleaseManager
135
119
  returns(NftId nftId)
136
120
  {
137
- ObjectType objectType = info.objectType;
138
- NftId parentNftId = info.parentNftId;
139
- ObjectInfo memory parentInfo = _info[parentNftId];
140
- ObjectType parentType = parentInfo.objectType; // see function header
141
- address parentAddress = parentInfo.objectAddress;
142
-
143
- // parent is contract -> need to check? -> check before minting
144
- // special case: global registry nft as parent when not on mainnet -> global registry address is 0
145
- // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
146
- // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
147
- if(parentAddress == address(0)) {
148
- revert ZeroParentAddress();
121
+ address service = info.objectAddress;
122
+ /* must be guaranteed by release manager
123
+ if(service == address(0)) {
124
+ revert();
149
125
  }
150
126
 
151
- address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
127
+ if(version.eqz()) {
128
+ revert();
129
+ }
152
130
 
153
- uint256 mintedTokenId = _chainNft.mint(
154
- info.initialOwner,
155
- interceptor,
156
- EMPTY_URI);
157
- nftId = toNftId(mintedTokenId);
131
+ if(info.objectType != SERVICE()) {
132
+ revert();
133
+ }
134
+ if(info.parentType != REGISTRY()) {
135
+ revert();
136
+ }
137
+ info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
138
+ */
139
+
140
+ if(domain.eqz()) {
141
+ revert ErrorRegistryDomainZero(service);
142
+ }
158
143
 
159
- // TODO move nftId out of info struct
160
- // getters by nftId -> return struct without nftId
161
- // getters by address -> return nftId AND struct
162
- info.nftId = nftId;
163
- _info[nftId] = info;
144
+ if(_service[version][domain] > address(0)) {
145
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
146
+ }
147
+
148
+ _service[version][domain] = service;
164
149
 
165
- if(info.objectAddress > address(0))
166
- {
167
- // TODO if need to add types latter -> at least call this check from registry service
168
- // parent is registered + object-parent types are valid
169
- if(_isValidContractCombination[objectType][parentType] == false) {
170
- revert InvalidTypesCombination(objectType, parentType);
171
- }
150
+ nftId = _register(info);
172
151
 
173
- address contractAddress = info.objectAddress;
152
+ emit LogServiceRegistration(version, domain);
153
+ }
174
154
 
175
- if(_nftIdByAddress[contractAddress].gtz()) {
176
- revert ContractAlreadyRegistered(contractAddress);
177
- }
155
+ function register(ObjectInfo memory info)
156
+ external
157
+ onlyRegistryService
158
+ returns(NftId nftId)
159
+ {
160
+ ObjectType objectType = info.objectType;
161
+ ObjectType parentType = _info[info.parentNftId].objectType;
178
162
 
179
- _nftIdByAddress[contractAddress] = nftId;
180
-
181
- // special case
182
- if(objectType == SERVICE())
183
- {
184
- (
185
- string memory serviceName,
186
- VersionPart majorVersion
187
- ) = abi.decode(info.data, (string, VersionPart));
188
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
189
-
190
- // TODO MUST guarantee consistency of registerable.getVersion() and majorVersion here
191
- // TODO update _serviceNftId when registryService with new major version is registered? -> it is fixed in current setup
192
- // TODO do not use names -> each object type is registered by corresponding service -> conflicting with approve()
193
- if(
194
- majorVersion.toInt() < MAJOR_VERSION_MIN ||
195
- (majorVersion.toInt() > MAJOR_VERSION_MIN &&
196
- _service[serviceNameHash][VersionLib.toVersionPart(majorVersion.toInt() - 1)] == address(0) )
197
- ) {
198
- revert InvalidServiceVersion(majorVersion);
199
- }
200
-
201
- if(_service[serviceNameHash][majorVersion] != address(0)) {
202
- revert ServiceNameAlreadyRegistered(serviceName, majorVersion);
203
- }
204
-
205
- _string[nftId] = serviceName;
206
- _service[serviceNameHash][majorVersion] = contractAddress;
207
-
208
- emit LogServiceNameRegistration(serviceName, majorVersion);
163
+ // only valid core types combinations
164
+ if(info.objectAddress == address(0))
165
+ {
166
+ if(_coreObjectCombinations[objectType][parentType] == false) {
167
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
209
168
  }
210
169
  }
211
170
  else
212
171
  {
213
- if(_isValidObjectCombination[objectType][parentType] == false) {
214
- revert InvalidTypesCombination(objectType, parentType);
172
+ if(_coreContractCombinations[objectType][parentType] == false) {
173
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
215
174
  }
216
175
  }
217
176
 
218
- emit LogRegistration(nftId, info.parentNftId, info.objectType, info.objectAddress, info.initialOwner);
177
+ nftId = _register(info);
219
178
  }
220
179
 
221
- function registerFrom(
222
- address from,
223
- ObjectInfo memory info
224
- ) external returns (NftId nftId)
225
- {
226
- revert();
227
- }
228
-
229
-
230
- /// @dev
231
- // msg.sender - registry owner
232
- // CAN approve only registered service contract
233
- // CAN approve any combination specified in _isValidCombination
234
- // CAN NOT approve itself
235
- // TODO in case where exists exactly one registered service per objectType (and major version):
236
- // - registration and approve is a single operation, no need for separate approve() function
237
- // - then approve can be used to adding new valid object-parent combinations???
238
- function approve(
239
- NftId serviceNftId,
240
- ObjectType objectType,
241
- ObjectType parentType
242
- )
243
- public
244
- onlyOwner()
180
+ function registerWithCustomType(ObjectInfo memory info)
181
+ external
182
+ onlyRegistryService
183
+ returns(NftId nftId)
245
184
  {
246
- address serviceAddress = _info[serviceNftId].objectAddress;
247
-
248
- if(_nftIdByAddress[serviceAddress].eqz()) {
249
- revert NotRegisteredContract(serviceNftId);
250
- }
185
+ ObjectType objectType = info.objectType;
186
+ ObjectType parentType = _info[info.parentNftId].objectType;
251
187
 
252
- if(_info[serviceNftId].objectType != SERVICE()) {
253
- revert NotService(serviceNftId);
188
+ if(_coreTypes[objectType]) {
189
+ revert ErrorRegistryCoreTypeRegistration();
254
190
  }
255
191
 
256
192
  if(
257
- _isValidContractCombination[objectType][parentType] == false &&
258
- _isValidObjectCombination[objectType][parentType] == false) {
259
- revert InvalidTypesCombination(objectType, parentType);
193
+ parentType == PROTOCOL() ||
194
+ parentType == REGISTRY() ||
195
+ parentType == SERVICE()
196
+ ) {
197
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
260
198
  }
261
199
 
262
- _isApproved[serviceNftId][objectType] = true;
200
+ _register(info);
201
+ }
263
202
 
264
- emit LogApproval(serviceNftId, objectType);
203
+
204
+ /// @dev earliest GIF major version
205
+ function getInitialVersion() external view returns (VersionPart) {
206
+ return _releaseManager.getInitialVersion();
265
207
  }
266
208
 
267
- /// @dev returns false for registry owner nft
268
- // TODO allowance by address?
269
- // TODO checked by registry service -> but registry owner can upgrade registry service not to check allowance....
270
- function allowance(
271
- NftId nftId,
272
- ObjectType object
273
- )
274
- public
275
- view
276
- returns (bool)
277
- {
278
- return _isApproved[nftId][object];
209
+ /// @dev next GIF release version to be released
210
+ function getNextVersion() external view returns (VersionPart) {
211
+ return _releaseManager.getNextVersion();
279
212
  }
280
213
 
281
- // from IRegistry
282
- function getObjectCount() external view override returns (uint256) {
283
-
214
+ /// @dev latest active GIF release version
215
+ function getLatestVersion() external view returns (VersionPart) {
216
+ return _releaseManager.getLatestVersion();
217
+ }
218
+
219
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
220
+ return _releaseManager.getReleaseInfo(version);
221
+ }
222
+
223
+ function getObjectCount() external view returns (uint256) {
284
224
  return _chainNft.totalSupply();
285
225
  }
286
226
 
287
- function getNftId(address object) external view override returns (NftId id) {
227
+ function getNftId() external view returns (NftId nftId) {
228
+ return _registryNftId;
229
+ }
230
+
231
+ function getProtocolNftId() external view returns (NftId nftId) {
232
+ return _protocolNftId;
233
+ }
234
+
235
+ function getNftId(address object) external view returns (NftId id) {
288
236
  return _nftIdByAddress[object];
289
237
  }
290
238
 
291
- function ownerOf(NftId nftId) public view override returns (address) {
239
+ function ownerOf(NftId nftId) public view returns (address) {
292
240
  return _chainNft.ownerOf(nftId.toInt());
293
241
  }
294
242
 
295
243
  function ownerOf(address contractAddress) public view returns (address) {
296
-
297
244
  return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
298
245
  }
299
246
 
300
- function getObjectInfo(NftId nftId) external view override returns (ObjectInfo memory) {
247
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
301
248
  return _info[nftId];
302
249
  }
303
250
 
304
- function getObjectInfo(address object) external view override returns (ObjectInfo memory) {
305
-
251
+ function getObjectInfo(address object) external view returns (ObjectInfo memory) {
306
252
  return _info[_nftIdByAddress[object]];
307
253
  }
308
254
 
309
- function isRegistered(NftId nftId) public view override returns (bool) {
255
+ function isRegistered(NftId nftId) public view returns (bool) {
310
256
  return _info[nftId].objectType.gtz();
311
257
  }
312
258
 
313
- function isRegistered(address object) external view override returns (bool) {
259
+ function isRegistered(address object) external view returns (bool) {
314
260
  return _nftIdByAddress[object].gtz();
315
261
  }
316
262
 
317
- function getServiceName(NftId nftId) external view returns (string memory) {
318
- return _string[nftId];
263
+ function isRegisteredService(address object) external view returns (bool) {
264
+ return _info[_nftIdByAddress[object]].objectType == SERVICE();
319
265
  }
320
266
 
321
- // special case to retrive a gif service
322
- function getServiceAddress(
323
- string memory serviceName,
324
- VersionPart majorVersion
325
- ) external view returns (address)
267
+ function isRegisteredComponent(address object) external view returns (bool) {
268
+ NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
269
+ return _info[objectParentNftId].objectType == INSTANCE();
270
+ }
271
+
272
+ function isActiveRelease(VersionPart version) external view returns (bool)
326
273
  {
327
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
328
- return _service[serviceNameHash][majorVersion];
274
+ return _releaseManager.isActiveRelease(version);
329
275
  }
330
276
 
331
- function getProtocolOwner() external view override returns (address) {
332
- return _protocolOwner;
277
+ function getStakingAddress() external view returns (address staking) {
278
+ //return getObjectInfo(_stakingNftId).objectAddress;
279
+ //return _info[_stakingNftId].objectAddress;
280
+ return _stakingAddress;
333
281
  }
334
282
 
335
- function getChainNft() external view override returns (IChainNft) {
336
- return _chainNft;
283
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
284
+ return _tokenRegistryAddress;
337
285
  }
338
286
 
339
- // from IOwnable
340
- function getOwner() public view returns (address owner) {
341
- return ownerOf(address(this));
287
+ function getServiceAddress(
288
+ ObjectType serviceDomain,
289
+ VersionPart releaseVersion
290
+ ) external view returns (address service)
291
+ {
292
+ service = _service[releaseVersion][serviceDomain];
342
293
  }
343
294
 
344
- // Internals, called only in constructor
295
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
296
+ return address(_releaseManager.getReleaseAccessManager(version));
297
+ }
345
298
 
346
- /// @dev protocol registration used to anchor the dip ecosystem relations
347
- function _registerProtocol()
348
- internal
349
- {
350
- uint256 protocolId = _chainNftInternal.PROTOCOL_NFT_ID();
351
- NftId protocolNftId = toNftId(protocolId);
299
+ function getReleaseManagerAddress() external view returns (address) {
300
+ return address(_releaseManager);
301
+ }
352
302
 
353
- _chainNftInternal.mint(NFT_LOCK_ADDRESS, protocolId);
303
+ function getChainNftAddress() external view override returns (address) {
304
+ return address(_chainNft);
305
+ }
354
306
 
355
- _info[protocolNftId] = ObjectInfo(
356
- protocolNftId,
357
- zeroNftId(), // parent
358
- PROTOCOL(),
359
- false, // isInterceptor
360
- address(0), // objectAddress
361
- NFT_LOCK_ADDRESS,// initialOwner
362
- ""
363
- );
307
+ function getRegistryAdminAddress() external view returns (address) {
308
+ return address(_admin);
364
309
  }
365
310
 
366
- /// @dev registry registration
367
- /// might also register the global registry when not on mainnet
368
- function _registerRegistry()
369
- internal
370
- {
371
- uint256 registryId = _chainNftInternal.calculateTokenId(2);
372
- NftId registryNftId = toNftId(registryId);
311
+ function getAuthority() external view returns (address) {
312
+ return _admin.authority();
313
+ }
373
314
 
374
- NftId parentNftId;
315
+ function getOwner() public view returns (address owner) {
316
+ return ownerOf(address(this));
317
+ }
375
318
 
376
- if(registryId != _chainNftInternal.GLOBAL_REGISTRY_ID())
377
- {// we're not the global registry
378
- _registerGlobalRegistry();
379
- parentNftId = toNftId(_chainNftInternal.GLOBAL_REGISTRY_ID());
380
- }
381
- else
382
- {// we are global registry
383
- parentNftId = toNftId(_chainNftInternal.PROTOCOL_NFT_ID());
319
+ // IERC165
320
+
321
+ function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
322
+ if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
323
+ return true;
384
324
  }
385
325
 
386
- _chainNftInternal.mint(_protocolOwner, registryId);
387
-
388
- _info[registryNftId] = ObjectInfo(
389
- registryNftId,
390
- parentNftId,
391
- REGISTRY(),
392
- false, // isInterceptor
393
- address(this),
394
- _protocolOwner,
395
- ""
396
- );
397
- _nftIdByAddress[address(this)] = registryNftId;
398
- _registryNftId = registryNftId;
326
+ return false;
399
327
  }
400
328
 
329
+ // Internals
401
330
 
402
- /// @dev global registry registration for non mainnet registries
403
- function _registerGlobalRegistry()
331
+ /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
332
+ // TODO registration of precompile addresses
333
+ function _register(ObjectInfo memory info)
404
334
  internal
335
+ returns(NftId nftId)
405
336
  {
406
- uint256 globalRegistryId = _chainNftInternal.GLOBAL_REGISTRY_ID();
337
+ ObjectType objectType = info.objectType;
338
+ bool isInterceptor = info.isInterceptor;
339
+ address objectAddress = info.objectAddress;
340
+ address owner = info.initialOwner;
407
341
 
408
- _chainNftInternal.mint(NFT_LOCK_ADDRESS, globalRegistryId);
342
+ NftId parentNftId = info.parentNftId;
343
+ ObjectInfo memory parentInfo = _info[parentNftId];
344
+ ObjectType parentType = parentInfo.objectType; // see function header
345
+ address parentAddress = parentInfo.objectAddress;
409
346
 
410
- NftId globalRegistryNftId = toNftId(globalRegistryId);
347
+ // parent is contract -> need to check? -> check before minting
348
+ // special case: staking: to protocol possible as well
349
+ // special case: global registry nft as parent when not on mainnet -> global registry address is 0
350
+ // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
351
+ // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
352
+ if(objectType != STAKE()) {
353
+ if(parentAddress == address(0)) {
354
+ revert ErrorRegistryParentAddressZero();
355
+ }
356
+ }
411
357
 
412
- _info[globalRegistryNftId] = ObjectInfo(
413
- globalRegistryNftId,
414
- toNftId(_chainNftInternal.PROTOCOL_NFT_ID()), // parent
415
- REGISTRY(),
416
- false, // isInterceptor
417
- address(0), // objectAddress
418
- NFT_LOCK_ADDRESS, // initialOwner
419
- "" // data
420
- );
421
- }
358
+ address interceptorAddress = _getInterceptor(
359
+ isInterceptor,
360
+ objectType,
361
+ objectAddress,
362
+ parentInfo.isInterceptor,
363
+ parentAddress);
422
364
 
423
- function _registerRegistryService()
424
- internal
425
- {
426
- uint256 serviceId = _chainNftInternal.calculateTokenId(3);
427
- NftId serviceNftId = toNftId(serviceId);
365
+ uint256 tokenId = _chainNft.getNextTokenId();
366
+ nftId = NftIdLib.toNftId(tokenId);
367
+ info.nftId = nftId;
368
+ _info[nftId] = info;
369
+
370
+ if(objectAddress > address(0)) {
371
+ if(_nftIdByAddress[objectAddress].gtz()) {
372
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
373
+ }
428
374
 
429
- _chainNftInternal.mint(NFT_LOCK_ADDRESS, serviceId);
375
+ _nftIdByAddress[objectAddress] = nftId;
376
+ }
430
377
 
431
- _info[serviceNftId] = ObjectInfo(
432
- serviceNftId,
433
- _registryNftId,
434
- SERVICE(),
435
- false, // isInterceptor
436
- msg.sender, // service deploys registry
437
- NFT_LOCK_ADDRESS, // initialOwner,
438
- ""
439
- );
378
+ emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
440
379
 
441
- _nftIdByAddress[msg.sender] = serviceNftId;
380
+ // calls nft receiver(1) and interceptor(2)
381
+ uint256 mintedTokenId = _chainNft.mint(
382
+ owner,
383
+ interceptorAddress,
384
+ EMPTY_URI);
442
385
 
443
- string memory serviceName = "RegistryService";
444
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
445
- _service[serviceNameHash][VersionLib.toVersionPart(MAJOR_VERSION_MIN)] = msg.sender;
446
- _string[serviceNftId] = serviceName;
447
- _serviceNftId = serviceNftId;
386
+ assert(mintedTokenId == tokenId);
448
387
  }
449
388
 
450
389
  /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
390
+ /// special case: STAKES (parent may be any type) -> no intercept call
391
+ /// default case:
451
392
  function _getInterceptor(
452
393
  bool isInterceptor,
394
+ ObjectType objectType,
453
395
  address objectAddress,
454
396
  bool parentIsInterceptor,
455
397
  address parentObjectAddress
456
398
  )
457
399
  internal
458
- view
400
+ pure
459
401
  returns (address interceptor)
460
402
  {
403
+ // no intercepting calls for stakes
404
+ if (objectType == STAKE()) {
405
+ return address(0);
406
+ }
407
+
461
408
  if (objectAddress == address(0)) {
462
409
  if (parentIsInterceptor) {
463
410
  return parentObjectAddress;
@@ -473,33 +420,157 @@ contract Registry is
473
420
  return address(0);
474
421
  }
475
422
 
423
+ // Internals called only in constructor
424
+
425
+ /// @dev protocol registration used to anchor the dip ecosystem relations
426
+ function _registerProtocol()
427
+ private
428
+ returns (NftId protocolNftId)
429
+ {
430
+ uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
431
+ protocolNftId = NftIdLib.toNftId(protocolId);
432
+
433
+ _info[protocolNftId] = ObjectInfo({
434
+ nftId: protocolNftId,
435
+ parentNftId: NftIdLib.zero(),
436
+ objectType: PROTOCOL(),
437
+ isInterceptor: false,
438
+ objectAddress: address(0),
439
+ initialOwner: NFT_LOCK_ADDRESS,
440
+ data: ""
441
+ });
442
+
443
+ _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
444
+ }
445
+
446
+ /// @dev registry registration
447
+ /// might also register the global registry when not on mainnet
448
+ function _registerRegistry()
449
+ private
450
+ returns (NftId registryNftId)
451
+ {
452
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
453
+ registryNftId = NftIdLib.toNftId(registryId);
454
+ NftId parentNftId;
455
+
456
+ if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
457
+ {// we're not the global registry
458
+ _registerGlobalRegistry();
459
+ parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
460
+ }
461
+ else
462
+ {// we are global registry
463
+ parentNftId = _protocolNftId;
464
+ }
465
+
466
+ _info[registryNftId] = ObjectInfo({
467
+ nftId: registryNftId,
468
+ parentNftId: parentNftId,
469
+ objectType: REGISTRY(),
470
+ isInterceptor: false,
471
+ objectAddress: address(this),
472
+ initialOwner: NFT_LOCK_ADDRESS,
473
+ data: ""
474
+ });
475
+
476
+ _nftIdByAddress[address(this)] = registryNftId;
477
+ _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
478
+ }
479
+
480
+ /// @dev global registry registration for non mainnet registries
481
+ function _registerGlobalRegistry()
482
+ private
483
+ {
484
+ uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
485
+ NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
486
+
487
+ _info[globalRegistryNftId] = ObjectInfo({
488
+ nftId: globalRegistryNftId,
489
+ parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
490
+ objectType: REGISTRY(),
491
+ isInterceptor: false,
492
+ objectAddress: address(0),
493
+ initialOwner: NFT_LOCK_ADDRESS,
494
+ data: ""
495
+ });
496
+
497
+ _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
498
+ }
499
+ // depends on _registryNftId and _stakingAddress
500
+ function _registerStaking()
501
+ private
502
+ returns (NftId stakingNftId)
503
+ {
504
+ address stakingOwner = IRegisterable(_stakingAddress).getOwner();
505
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
506
+ stakingNftId = NftIdLib.toNftId(stakingId);
507
+
508
+ _info[stakingNftId] = ObjectInfo({
509
+ nftId: stakingNftId,
510
+ parentNftId: _registryNftId,
511
+ objectType: STAKING(),
512
+ isInterceptor: false,
513
+ objectAddress: _stakingAddress,
514
+ initialOwner: stakingOwner,
515
+ data: ""
516
+ });
517
+
518
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
519
+ // reverts if nftId was already minted
520
+ _chainNft.mint(stakingOwner, stakingId);
521
+ }
522
+
476
523
  /// @dev defines which object - parent types relations are allowed to register
477
524
  // IMPORTANT:
478
525
  // 1) EACH object type MUST have only one parent type across ALL mappings
479
526
  // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
480
527
  // 3) DO NOT use REGISTRY as object type
481
- // 2) DO NOT use PROTOCOL and "zeroObjectType"
482
- function _setupValidObjectParentCombinations()
483
- internal
528
+ // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
529
+ function _setupValidCoreTypesAndCombinations()
530
+ private
484
531
  {
485
- // registry as parent, ONLY registry owner
486
- _isValidContractCombination[TOKEN()][REGISTRY()] = true;
487
- _isValidContractCombination[SERVICE()][REGISTRY()] = true;
488
-
489
- // registry as parent, ONLY approved
490
- _isValidContractCombination[INSTANCE()][REGISTRY()] = true;
491
-
492
- // instance as parent, ONLY approved
493
- _isValidContractCombination[PRODUCT()][INSTANCE()] = true;
494
- _isValidContractCombination[DISTRIBUTION()][INSTANCE()] = true;
495
- _isValidContractCombination[ORACLE()][INSTANCE()] = true;
496
- _isValidContractCombination[POOL()][INSTANCE()] = true;
497
-
498
- // product as parent, ONLY approved
499
- _isValidObjectCombination[POLICY()][PRODUCT()] = true;
500
-
501
- // pool as parent, ONLY approved
502
- _isValidObjectCombination[BUNDLE()][POOL()] = true;
503
- _isValidObjectCombination[STAKE()][POOL()] = true;
532
+ _coreTypes[REGISTRY()] = true;
533
+ _coreTypes[SERVICE()] = true;
534
+ _coreTypes[TOKEN()] = true;
535
+ _coreTypes[INSTANCE()] = true;
536
+ _coreTypes[PRODUCT()] = true;
537
+ _coreTypes[POOL()] = true;
538
+ _coreTypes[DISTRIBUTION()] = true;
539
+ _coreTypes[DISTRIBUTOR()] = true;
540
+ _coreTypes[ORACLE()] = true;
541
+ _coreTypes[POLICY()] = true;
542
+ _coreTypes[BUNDLE()] = true;
543
+ _coreTypes[STAKING()] = true;
544
+ _coreTypes[STAKE()] = true;
545
+
546
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
547
+ if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
548
+ // we are global registry
549
+ // object is registry from different chain
550
+ // parent is global registry, this contract
551
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
552
+ //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
553
+ } else {
554
+ // we are not global registry
555
+ // object is local registry, this contract
556
+ // parent is global registry, object with 0 address or registry from mainnet???
557
+ }
558
+ _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
559
+ _coreContractCombinations[TOKEN()][REGISTRY()] = true;
560
+ //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
561
+ _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
562
+
563
+ _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
564
+ _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
565
+ _coreContractCombinations[ORACLE()][INSTANCE()] = true;
566
+ _coreContractCombinations[POOL()][INSTANCE()] = true;
567
+
568
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
569
+ _coreObjectCombinations[POLICY()][PRODUCT()] = true;
570
+ _coreObjectCombinations[BUNDLE()][POOL()] = true;
571
+
572
+ // staking
573
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
574
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
504
575
  }
505
576
  }