@etherisc/gif-next 0.0.2-a0d749a → 0.0.2-a105567-464

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 (514) hide show
  1. package/README.md +348 -20
  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 +294 -514
  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 +490 -585
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +692 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1570 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1045 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +730 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -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/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  41. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1097 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +742 -0
  56. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +690 -0
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  60. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1050 -0
  62. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1417 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +826 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +718 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1270 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +806 -0
  76. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +499 -0
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.json +387 -0
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1138 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +750 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +975 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +774 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +707 -67
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +1028 -114
  112. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  120. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  121. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +643 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  134. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  135. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  136. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  137. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  138. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  140. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  141. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
  142. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  143. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  144. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  146. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  148. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  150. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  152. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  154. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +478 -0
  156. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +115 -0
  158. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  159. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  160. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  162. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
  164. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  166. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IService.sol/IService.json +333 -0
  168. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  170. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  171. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  172. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  173. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  174. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  175. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  176. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  177. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  178. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  180. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  181. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  182. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  184. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  186. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  187. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  188. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  189. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  190. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  191. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +260 -218
  192. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  193. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  194. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  196. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  197. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  198. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  199. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1441 -0
  200. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  201. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  202. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  203. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +890 -0
  204. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  205. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  206. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  208. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  209. package/artifacts/contracts/staking/Staking.sol/Staking.json +2008 -0
  210. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  211. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  212. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +390 -0
  214. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1213 -0
  216. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +722 -0
  218. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1682 -0
  220. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  221. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  222. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  223. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  224. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  226. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  228. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  230. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  231. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  232. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  234. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  235. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  236. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  238. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  239. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  240. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +92 -0
  242. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  244. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  246. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  248. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  250. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  252. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  254. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  256. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  258. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  260. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  262. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  264. package/contracts/distribution/Distribution.sol +261 -0
  265. package/contracts/distribution/DistributionService.sol +298 -0
  266. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  267. package/contracts/distribution/IDistributionComponent.sol +66 -0
  268. package/contracts/distribution/IDistributionService.sol +81 -0
  269. package/contracts/instance/BundleManager.sol +126 -0
  270. package/contracts/instance/IInstance.sol +78 -17
  271. package/contracts/instance/IInstanceService.sol +81 -0
  272. package/contracts/instance/Instance.sol +227 -56
  273. package/contracts/instance/InstanceAdmin.sol +331 -0
  274. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  275. package/contracts/instance/InstanceReader.sol +365 -0
  276. package/contracts/instance/InstanceService.sol +362 -0
  277. package/contracts/instance/InstanceServiceManager.sol +44 -0
  278. package/contracts/instance/InstanceStore.sol +260 -0
  279. package/contracts/instance/base/BalanceStore.sol +118 -0
  280. package/contracts/instance/base/Cloneable.sol +51 -0
  281. package/contracts/instance/base/ObjectManager.sol +82 -0
  282. package/contracts/instance/module/IAccess.sol +46 -0
  283. package/contracts/instance/module/IBundle.sol +20 -0
  284. package/contracts/instance/module/IComponents.sol +52 -0
  285. package/contracts/instance/module/IDistribution.sol +42 -0
  286. package/contracts/instance/module/IPolicy.sol +84 -0
  287. package/contracts/instance/module/IRisk.sol +11 -0
  288. package/contracts/mock/Dip.sol +26 -0
  289. package/contracts/pool/BundleService.sol +296 -0
  290. package/contracts/pool/BundleServiceManager.sol +42 -0
  291. package/contracts/pool/IBundleService.sol +106 -0
  292. package/contracts/pool/IPoolComponent.sol +112 -0
  293. package/contracts/pool/IPoolService.sol +147 -0
  294. package/contracts/pool/Pool.sol +299 -0
  295. package/contracts/pool/PoolService.sol +424 -0
  296. package/contracts/pool/PoolServiceManager.sol +42 -0
  297. package/contracts/product/ApplicationService.sol +254 -0
  298. package/contracts/product/ApplicationServiceManager.sol +38 -0
  299. package/contracts/product/ClaimService.sol +437 -0
  300. package/contracts/product/ClaimServiceManager.sol +38 -0
  301. package/contracts/product/IApplicationService.sol +62 -0
  302. package/contracts/product/IClaimService.sol +93 -0
  303. package/contracts/product/IPolicyService.sol +78 -0
  304. package/contracts/product/IPricingService.sol +39 -0
  305. package/contracts/product/IProductComponent.sol +42 -0
  306. package/contracts/product/IProductService.sol +33 -0
  307. package/contracts/product/PolicyService.sol +473 -0
  308. package/contracts/product/PolicyServiceManager.sol +42 -0
  309. package/contracts/product/PricingService.sol +301 -0
  310. package/contracts/product/PricingServiceManager.sol +42 -0
  311. package/contracts/product/Product.sol +377 -0
  312. package/contracts/product/ProductService.sol +124 -0
  313. package/contracts/product/ProductServiceManager.sol +42 -0
  314. package/contracts/registry/ChainNft.sol +143 -62
  315. package/contracts/registry/IRegistry.sol +95 -49
  316. package/contracts/registry/IRegistryService.sol +69 -0
  317. package/contracts/registry/ITransferInterceptor.sol +7 -0
  318. package/contracts/registry/Registry.sol +518 -142
  319. package/contracts/registry/RegistryAdmin.sol +237 -0
  320. package/contracts/registry/RegistryService.sol +266 -0
  321. package/contracts/registry/RegistryServiceManager.sol +58 -0
  322. package/contracts/registry/ReleaseManager.sol +599 -0
  323. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  324. package/contracts/registry/TokenRegistry.sol +358 -0
  325. package/contracts/shared/AccessManagerCustom.sol +736 -0
  326. package/contracts/shared/AccessManagerExtended.sol +470 -0
  327. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  328. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  329. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  330. package/contracts/shared/Component.sol +286 -0
  331. package/contracts/shared/ComponentService.sol +596 -0
  332. package/contracts/shared/ComponentServiceManager.sol +35 -0
  333. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  334. package/contracts/shared/ERC165.sol +27 -0
  335. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  336. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  337. package/contracts/shared/IComponent.sol +74 -0
  338. package/contracts/shared/IComponentService.sol +91 -0
  339. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  340. package/contracts/shared/IKeyValueStore.sol +53 -0
  341. package/contracts/shared/ILifecycle.sol +30 -0
  342. package/contracts/shared/INftOwnable.sol +23 -0
  343. package/contracts/shared/IPolicyHolder.sol +45 -0
  344. package/contracts/shared/IRegisterable.sol +15 -0
  345. package/contracts/shared/IRegistryLinked.sol +11 -0
  346. package/contracts/shared/IService.sol +18 -0
  347. package/contracts/shared/IVersionable.sol +53 -0
  348. package/contracts/shared/InitializableCustom.sol +177 -0
  349. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  350. package/contracts/shared/KeyValueStore.sol +130 -0
  351. package/contracts/shared/Lifecycle.sol +121 -0
  352. package/contracts/shared/NftIdSetManager.sol +65 -0
  353. package/contracts/shared/NftOwnable.sol +107 -0
  354. package/contracts/shared/PolicyHolder.sol +102 -0
  355. package/contracts/shared/ProxyManager.sol +199 -0
  356. package/contracts/shared/Registerable.sol +75 -0
  357. package/contracts/shared/RegistryLinked.sol +43 -0
  358. package/contracts/shared/Service.sol +77 -0
  359. package/contracts/shared/TokenHandler.sol +58 -0
  360. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  361. package/contracts/shared/Versionable.sol +59 -0
  362. package/contracts/staking/IStaking.sol +152 -0
  363. package/contracts/staking/IStakingManager.sol +15 -0
  364. package/contracts/staking/IStakingService.sol +162 -0
  365. package/contracts/staking/IStakingStore.sol +130 -0
  366. package/contracts/staking/StakeManagerLib.sol +156 -0
  367. package/contracts/staking/Staking.sol +496 -0
  368. package/contracts/staking/StakingManager.sol +54 -0
  369. package/contracts/staking/StakingReader.sol +146 -0
  370. package/contracts/staking/StakingService.sol +376 -0
  371. package/contracts/staking/StakingServiceManager.sol +45 -0
  372. package/contracts/staking/StakingStore.sol +331 -0
  373. package/contracts/staking/TargetManagerLib.sol +179 -0
  374. package/contracts/type/AddressSet.sol +58 -0
  375. package/contracts/type/Amount.sol +114 -0
  376. package/contracts/{types → type}/Blocknumber.sol +21 -3
  377. package/contracts/type/ClaimId.sol +75 -0
  378. package/contracts/type/DistributorType.sol +55 -0
  379. package/contracts/type/Fee.sol +66 -0
  380. package/contracts/type/Key32.sol +50 -0
  381. package/contracts/{types → type}/NftId.sol +40 -13
  382. package/contracts/type/NftIdSet.sol +62 -0
  383. package/contracts/type/ObjectType.sol +169 -0
  384. package/contracts/type/PayoutId.sol +82 -0
  385. package/contracts/type/Referral.sol +89 -0
  386. package/contracts/type/RiskId.sol +43 -0
  387. package/contracts/type/RoleId.sol +143 -0
  388. package/contracts/type/Seconds.sol +71 -0
  389. package/contracts/type/StateId.sol +123 -0
  390. package/contracts/{types → type}/Timestamp.sol +36 -6
  391. package/contracts/type/UFixed.sol +326 -0
  392. package/contracts/type/Version.sol +108 -0
  393. package/package.json +16 -6
  394. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  395. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  396. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  397. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  398. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  399. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  400. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  401. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  402. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  403. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  404. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  405. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  406. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  407. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  408. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  409. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  410. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  411. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  412. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  413. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  414. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  415. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  416. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  417. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  418. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  419. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  420. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  421. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  422. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  423. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  424. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  425. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  426. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  427. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  428. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  429. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  430. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  431. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  432. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  433. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  434. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  435. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  436. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  437. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  438. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  439. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  440. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  441. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  442. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  443. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  444. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  445. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  446. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  448. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  449. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  450. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  451. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  452. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  453. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  454. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  455. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  456. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  457. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  458. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  459. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  460. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  461. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  462. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  463. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  464. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  465. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  467. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  468. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  469. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  470. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  471. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  472. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  473. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  474. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  475. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  476. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  477. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  478. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  479. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  480. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  481. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  482. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  483. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  484. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  485. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  486. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  487. package/contracts/components/Component.sol +0 -60
  488. package/contracts/components/IPool.sol +0 -9
  489. package/contracts/components/IProduct.sol +0 -9
  490. package/contracts/components/Pool.sol +0 -22
  491. package/contracts/components/Product.sol +0 -55
  492. package/contracts/experiment/errors/Require.sol +0 -38
  493. package/contracts/experiment/errors/Revert.sol +0 -44
  494. package/contracts/experiment/inheritance/A.sol +0 -53
  495. package/contracts/experiment/inheritance/B.sol +0 -28
  496. package/contracts/experiment/inheritance/C.sol +0 -34
  497. package/contracts/experiment/inheritance/IA.sol +0 -13
  498. package/contracts/experiment/inheritance/IB.sol +0 -10
  499. package/contracts/experiment/inheritance/IC.sol +0 -12
  500. package/contracts/experiment/types/TypeA.sol +0 -47
  501. package/contracts/experiment/types/TypeB.sol +0 -29
  502. package/contracts/instance/access/Access.sol +0 -165
  503. package/contracts/instance/access/IAccess.sol +0 -63
  504. package/contracts/instance/component/ComponentModule.sol +0 -213
  505. package/contracts/instance/component/IComponent.sol +0 -73
  506. package/contracts/instance/policy/IPolicy.sol +0 -51
  507. package/contracts/instance/policy/PolicyModule.sol +0 -91
  508. package/contracts/instance/pool/IPoolModule.sol +0 -29
  509. package/contracts/instance/pool/PoolModule.sol +0 -73
  510. package/contracts/instance/product/IProductService.sol +0 -36
  511. package/contracts/instance/product/ProductService.sol +0 -112
  512. package/contracts/registry/IChainNft.sol +0 -21
  513. package/contracts/types/ChainId.sol +0 -38
  514. package/contracts/types/UFixed.sol +0 -205
@@ -1,209 +1,585 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
+
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";
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";
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)
29
+
30
+ contract Registry is
31
+ InitializableCustom,
32
+ IRegistry
33
+ {
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;
37
+ string public constant EMPTY_URI = "";
38
+
39
+ mapping(NftId nftId => ObjectInfo info) private _info;
40
+ mapping(address object => NftId nftId) private _nftIdByAddress;
41
+
42
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
43
+
44
+ mapping(ObjectType objectType => bool) private _coreTypes;
45
+
46
+ mapping(ObjectType objectType => mapping(
47
+ ObjectType parentType => bool)) private _coreContractCombinations;
48
+
49
+ mapping(ObjectType objectType => mapping(
50
+ ObjectType parentType => bool)) private _coreObjectCombinations;
51
+
52
+ RegistryAdmin public immutable _admin;
53
+ IERC20Metadata public immutable _dipToken;
54
+ ChainNft public immutable _chainNft;
3
55
 
4
- import {IChainNft} from "./IChainNft.sol";
5
- import {IRegistry, IRegistryLinked, IRegisterable} from "./IRegistry.sol";
6
- import {NftId, toNftId} from "../types/NftId.sol";
7
- import {NftIdLib} from "../types/NftId.sol";
56
+ NftId public immutable _protocolNftId;
57
+ NftId public immutable _registryNftId;
58
+ NftId public _stakingNftId;
8
59
 
9
- contract RegistryLinked is IRegistryLinked {
10
- IRegistry internal _registry;
60
+ address public _tokenRegistryAddress;
61
+ address public _stakingAddress;
62
+ ReleaseManager public _releaseManager;
11
63
 
12
- constructor(address registry) {
13
- _registry = IRegistry(registry);
64
+ modifier onlyRegistryService() {
65
+ if(!_releaseManager.isActiveRegistryService(msg.sender)) {
66
+ revert ErrorRegistryCallerNotRegistryService();
67
+ }
68
+ _;
14
69
  }
15
70
 
16
- function getRegistry() external view override returns (IRegistry registry) {
17
- return _registry;
71
+
72
+ modifier onlyReleaseManager() {
73
+ if(msg.sender != address(_releaseManager)) {
74
+ revert ErrorRegistryCallerNotReleaseManager();
75
+ }
76
+ _;
18
77
  }
19
- }
20
78
 
21
- abstract contract Registerable is RegistryLinked, IRegisterable {
22
- using NftIdLib for NftId;
23
79
 
24
- address private _initialOwner;
80
+ constructor(
81
+ RegistryAdmin admin,
82
+ IERC20Metadata dipToken
83
+ )
84
+ InitializableCustom()
85
+ {
86
+ _admin = admin;
87
+ _dipToken = dipToken;
88
+ // deploy NFT
89
+ _chainNft = new ChainNft(address(this));
90
+
91
+ // initial registry setup
92
+ _protocolNftId = _registerProtocol();
93
+ _registryNftId = _registerRegistry();
94
+
95
+ // set object types and object parent relations
96
+ _setupValidCoreTypesAndCombinations();
97
+ }
98
+
99
+
100
+ /// @dev wires release manager and token to registry (this contract).
101
+ /// MUST be called by release manager.
102
+ function initialize(
103
+ address releaseManager,
104
+ address tokenRegistry,
105
+ address staking
106
+ )
107
+ external
108
+ initializer()
109
+ {
110
+ _releaseManager = ReleaseManager(releaseManager);
111
+ _tokenRegistryAddress = tokenRegistry;
112
+ _stakingAddress = staking;
113
+
114
+ _stakingNftId = _registerStaking();
115
+ }
116
+
117
+ function registerService(
118
+ ObjectInfo memory info,
119
+ VersionPart version,
120
+ ObjectType domain
121
+ )
122
+ external
123
+ onlyReleaseManager
124
+ returns(NftId nftId)
125
+ {
126
+ address service = info.objectAddress;
127
+ /* must be guaranteed by release manager
128
+ if(service == address(0)) {
129
+ revert();
130
+ }
131
+
132
+ if(version.eqz()) {
133
+ revert();
134
+ }
135
+
136
+ if(info.objectType != SERVICE()) {
137
+ revert();
138
+ }
139
+ if(info.parentType != REGISTRY()) {
140
+ revert();
141
+ }
142
+ info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
143
+ */
144
+
145
+ if(domain.eqz()) {
146
+ revert ErrorRegistryDomainZero(service);
147
+ }
148
+
149
+ if(_service[version][domain] > address(0)) {
150
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
151
+ }
152
+
153
+ _service[version][domain] = service;
154
+
155
+ nftId = _register(info);
25
156
 
26
- constructor(address registry) RegistryLinked(registry) {
27
- _initialOwner = msg.sender;
157
+ emit LogServiceRegistration(version, domain);
28
158
  }
29
159
 
30
- // getType, getData and register need to be implemented by concrete contract
160
+ function register(ObjectInfo memory info)
161
+ external
162
+ onlyRegistryService
163
+ returns(NftId nftId)
164
+ {
165
+ ObjectType objectType = info.objectType;
166
+ ObjectType parentType = _info[info.parentNftId].objectType;
167
+
168
+ // only valid core types combinations
169
+ if(info.objectAddress == address(0))
170
+ {
171
+ if(_coreObjectCombinations[objectType][parentType] == false) {
172
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
173
+ }
174
+ }
175
+ else
176
+ {
177
+ if(_coreContractCombinations[objectType][parentType] == false) {
178
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
179
+ }
180
+ }
31
181
 
32
- function isRegisterable() external pure override returns (bool) {
33
- return true;
182
+ nftId = _register(info);
34
183
  }
35
184
 
36
- function getInitialOwner() public view override returns (address deployer) {
37
- return _initialOwner;
185
+ function registerWithCustomType(ObjectInfo memory info)
186
+ external
187
+ onlyRegistryService
188
+ returns(NftId nftId)
189
+ {
190
+ ObjectType objectType = info.objectType;
191
+ ObjectType parentType = _info[info.parentNftId].objectType;
192
+
193
+ if(_coreTypes[objectType]) {
194
+ revert ErrorRegistryCoreTypeRegistration();
195
+ }
196
+
197
+ if(
198
+ parentType == PROTOCOL() ||
199
+ parentType == REGISTRY() ||
200
+ parentType == SERVICE()
201
+ ) {
202
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
203
+ }
204
+
205
+ _register(info);
38
206
  }
39
207
 
40
- function isRegistered() public view override returns (bool) {
41
- NftId nftId = _registry.getNftId(address(this));
42
- return nftId.gtz();
208
+
209
+ /// @dev earliest GIF major version
210
+ function getInitialVersion() external view returns (VersionPart) {
211
+ return _releaseManager.getInitialVersion();
43
212
  }
44
213
 
45
- function getNftId() public view override returns (NftId nftId) {
46
- return _registry.getNftId(address(this));
214
+ /// @dev next GIF release version to be released
215
+ function getNextVersion() external view returns (VersionPart) {
216
+ return _releaseManager.getNextVersion();
47
217
  }
48
218
 
49
- function getOwner() public view override returns (address owner) {
50
- NftId id = _registry.getNftId(address(this));
51
- owner = _registry.getOwner(id);
52
- return owner != address(0) ? owner : _initialOwner;
219
+ /// @dev latest active GIF release version
220
+ function getLatestVersion() external view returns (VersionPart) {
221
+ return _releaseManager.getLatestVersion();
53
222
  }
54
- }
55
223
 
56
- contract Registry is IRegistry {
57
- using NftIdLib for NftId;
58
- string public constant EMPTY_URI = "";
224
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
225
+ return _releaseManager.getReleaseInfo(version);
226
+ }
59
227
 
60
- mapping(NftId nftId => RegistryInfo info) private _info;
61
- mapping(NftId nftId => address owner) private _owner;
62
- mapping(address object => NftId nftId) private _nftIdByAddress;
228
+ function getObjectCount() external view returns (uint256) {
229
+ return _chainNft.totalSupply();
230
+ }
63
231
 
64
- IChainNft private _chainNft;
232
+ function getNftId() external view returns (NftId nftId) {
233
+ return _registryNftId;
234
+ }
65
235
 
66
- function initialize(address chainNft) external {
67
- require(
68
- address(_chainNft) == address(0),
69
- "ERROR:REG-001:ALREADY_INITIALIZED"
70
- );
71
- _chainNft = IChainNft(chainNft);
236
+ function getProtocolNftId() external view returns (NftId nftId) {
237
+ return _protocolNftId;
72
238
  }
73
239
 
74
- function TOKEN() public pure override returns (uint256) {
75
- return 30;
240
+ function getNftId(address object) external view returns (NftId id) {
241
+ return _nftIdByAddress[object];
76
242
  }
77
243
 
78
- function INSTANCE() public pure override returns (uint256) {
79
- return 40;
244
+ function ownerOf(NftId nftId) public view returns (address) {
245
+ return _chainNft.ownerOf(nftId.toInt());
80
246
  }
81
247
 
82
- function PRODUCT() public pure override returns (uint256) {
83
- return 50;
248
+ function ownerOf(address contractAddress) public view returns (address) {
249
+ return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
84
250
  }
85
251
 
86
- function ORACLE() public pure override returns (uint256) {
87
- return 60;
252
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
253
+ return _info[nftId];
88
254
  }
89
255
 
90
- function POOL() public pure override returns (uint256) {
91
- return 70;
256
+ function getObjectInfo(address object) external view returns (ObjectInfo memory) {
257
+ return _info[_nftIdByAddress[object]];
92
258
  }
93
259
 
94
- function POLICY() public pure override returns (uint256) {
95
- return 80;
260
+ function isRegistered(NftId nftId) public view returns (bool) {
261
+ return _info[nftId].objectType.gtz();
96
262
  }
97
263
 
98
- function BUNDLE() public pure override returns (uint256) {
99
- return 90;
264
+ function isRegistered(address object) external view returns (bool) {
265
+ return _nftIdByAddress[object].gtz();
100
266
  }
101
267
 
102
- function register(
103
- address objectAddress
104
- ) external override returns (NftId nftId) {
105
- require(
106
- _nftIdByAddress[objectAddress].eqz(),
107
- "ERROR:REG-002:ALREADY_REGISTERED"
108
- );
268
+ function isRegisteredService(address object) external view returns (bool) {
269
+ return _info[_nftIdByAddress[object]].objectType == SERVICE();
270
+ }
109
271
 
110
- IRegisterable registerable = IRegisterable(objectAddress);
111
- require(
112
- registerable.isRegisterable(),
113
- "ERROR:REG-003:NOT_REGISTERABLE"
114
- );
272
+ function isRegisteredComponent(address object) external view returns (bool) {
273
+ NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
274
+ return _info[objectParentNftId].objectType == INSTANCE();
275
+ }
115
276
 
116
- // check parent exists (for objects not instances)
117
- if (registerable.getType() != INSTANCE()) {
118
- RegistryInfo memory parentInfo = _info[
119
- registerable.getParentNftId()
120
- ];
121
- require(parentInfo.nftId.gtz(), "ERROR:REG-004:PARENT_NOT_FOUND");
122
- // check validity of parent relation, valid relations are
123
- // policy -> product, bundle -> pool, product -> instance, pool -> instance
277
+ function isActiveRelease(VersionPart version) external view returns (bool)
278
+ {
279
+ return _releaseManager.isActiveRelease(version);
280
+ }
281
+
282
+ function getStakingAddress() external view returns (address staking) {
283
+ //return getObjectInfo(_stakingNftId).objectAddress;
284
+ //return _info[_stakingNftId].objectAddress;
285
+ return _stakingAddress;
286
+ }
287
+
288
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
289
+ return _tokenRegistryAddress;
290
+ }
291
+
292
+ function getServiceAddress(
293
+ ObjectType serviceDomain,
294
+ VersionPart releaseVersion
295
+ ) external view returns (address service)
296
+ {
297
+ service = _service[releaseVersion][serviceDomain];
298
+ }
299
+
300
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
301
+ return address(_releaseManager.getReleaseAccessManager(version));
302
+ }
303
+
304
+ function getReleaseManagerAddress() external view returns (address) {
305
+ return address(_releaseManager);
306
+ }
307
+
308
+ function getChainNftAddress() external view override returns (address) {
309
+ return address(_chainNft);
310
+ }
311
+
312
+ function getDipTokenAddress() external view override returns (address) {
313
+ return address(_dipToken);
314
+ }
315
+
316
+ function getRegistryAdminAddress() external view returns (address) {
317
+ return address(_admin);
318
+ }
319
+
320
+ function getAuthority() external view returns (address) {
321
+ return _admin.authority();
322
+ }
323
+
324
+ function getOwner() public view returns (address owner) {
325
+ return ownerOf(address(this));
326
+ }
327
+
328
+ // IERC165
329
+
330
+ function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
331
+ if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
332
+ return true;
124
333
  }
125
334
 
126
- uint256 mintedTokenId = _chainNft.mint(
127
- registerable.getInitialOwner(),
128
- EMPTY_URI
129
- );
130
- nftId = toNftId(mintedTokenId);
131
-
132
- RegistryInfo memory info = RegistryInfo(
133
- nftId,
134
- registerable.getParentNftId(),
135
- registerable.getType(),
136
- objectAddress,
137
- registerable.getInitialOwner()
138
- );
335
+ return false;
336
+ }
337
+
338
+ // Internals
339
+
340
+ /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
341
+ // TODO registration of precompile addresses
342
+ function _register(ObjectInfo memory info)
343
+ internal
344
+ returns(NftId nftId)
345
+ {
346
+ ObjectType objectType = info.objectType;
347
+ bool isInterceptor = info.isInterceptor;
348
+ address objectAddress = info.objectAddress;
349
+ address owner = info.initialOwner;
350
+
351
+ NftId parentNftId = info.parentNftId;
352
+ ObjectInfo memory parentInfo = _info[parentNftId];
353
+ ObjectType parentType = parentInfo.objectType; // see function header
354
+ address parentAddress = parentInfo.objectAddress;
355
+
356
+ // parent is contract -> need to check? -> check before minting
357
+ // special case: staking: to protocol possible as well
358
+ // special case: global registry nft as parent when not on mainnet -> global registry address is 0
359
+ // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
360
+ // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
361
+ if(objectType != STAKE()) {
362
+ if(parentAddress == address(0)) {
363
+ revert ErrorRegistryParentAddressZero();
364
+ }
365
+ }
139
366
 
367
+ address interceptorAddress = _getInterceptor(
368
+ isInterceptor,
369
+ objectType,
370
+ objectAddress,
371
+ parentInfo.isInterceptor,
372
+ parentAddress);
373
+
374
+ uint256 tokenId = _chainNft.getNextTokenId();
375
+ nftId = NftIdLib.toNftId(tokenId);
376
+ info.nftId = nftId;
140
377
  _info[nftId] = info;
141
- _nftIdByAddress[objectAddress] = nftId;
142
378
 
143
- // add logging
379
+ if(objectAddress > address(0)) {
380
+ if(_nftIdByAddress[objectAddress].gtz()) {
381
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
382
+ }
383
+
384
+ _nftIdByAddress[objectAddress] = nftId;
385
+ }
386
+
387
+ emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
388
+
389
+ // calls nft receiver(1) and interceptor(2)
390
+ uint256 mintedTokenId = _chainNft.mint(
391
+ owner,
392
+ interceptorAddress,
393
+ EMPTY_URI);
394
+
395
+ assert(mintedTokenId == tokenId);
144
396
  }
145
397
 
146
- function registerObjectForInstance(
147
- NftId parentNftId,
148
- uint256 objectType,
149
- address initialOwner
398
+ /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
399
+ /// special case: STAKES (parent may be any type) -> no intercept call
400
+ /// default case:
401
+ function _getInterceptor(
402
+ bool isInterceptor,
403
+ ObjectType objectType,
404
+ address objectAddress,
405
+ bool parentIsInterceptor,
406
+ address parentObjectAddress
150
407
  )
151
- external
152
- override
153
- returns (
154
- // TODO add onlyRegisteredInstance
155
- NftId nftId
156
- )
408
+ internal
409
+ pure
410
+ returns (address interceptor)
157
411
  {
158
- // TODO add more validation
159
- require(
160
- objectType == POLICY() || objectType == BUNDLE(),
161
- "ERROR:REG-005:TYPE_INVALID"
162
- );
163
-
164
- uint256 mintedTokenId = _chainNft.mint(initialOwner, EMPTY_URI);
165
- nftId = toNftId(mintedTokenId);
166
-
167
- RegistryInfo memory info = RegistryInfo(
168
- nftId,
169
- parentNftId,
170
- objectType,
171
- address(0),
172
- initialOwner
173
- );
412
+ // no intercepting calls for stakes
413
+ if (objectType == STAKE()) {
414
+ return address(0);
415
+ }
174
416
 
175
- _info[nftId] = info;
417
+ if (objectAddress == address(0)) {
418
+ if (parentIsInterceptor) {
419
+ return parentObjectAddress;
420
+ } else {
421
+ return address(0);
422
+ }
423
+ }
176
424
 
177
- // add logging
178
- }
425
+ if (isInterceptor) {
426
+ return objectAddress;
427
+ }
179
428
 
180
- function getObjectCount() external view override returns (uint256) {
181
- return _chainNft.totalSupply();
429
+ return address(0);
182
430
  }
183
431
 
184
- function getNftId(
185
- address object
186
- ) external view override returns (NftId id) {
187
- return _nftIdByAddress[object];
188
- }
432
+ // Internals called only in constructor
189
433
 
190
- function isRegistered(
191
- address object
192
- ) external view override returns (bool) {
193
- return _nftIdByAddress[object].gtz();
434
+ /// @dev protocol registration used to anchor the dip ecosystem relations
435
+ function _registerProtocol()
436
+ private
437
+ returns (NftId protocolNftId)
438
+ {
439
+ uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
440
+ protocolNftId = NftIdLib.toNftId(protocolId);
441
+
442
+ _info[protocolNftId] = ObjectInfo({
443
+ nftId: protocolNftId,
444
+ parentNftId: NftIdLib.zero(),
445
+ objectType: PROTOCOL(),
446
+ isInterceptor: false,
447
+ objectAddress: address(0),
448
+ initialOwner: NFT_LOCK_ADDRESS,
449
+ data: ""
450
+ });
451
+
452
+ _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
194
453
  }
195
454
 
196
- function getInfo(
197
- NftId nftId
198
- ) external view override returns (RegistryInfo memory info) {
199
- return _info[nftId];
455
+ /// @dev registry registration
456
+ /// might also register the global registry when not on mainnet
457
+ function _registerRegistry()
458
+ private
459
+ returns (NftId registryNftId)
460
+ {
461
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
462
+ registryNftId = NftIdLib.toNftId(registryId);
463
+ NftId parentNftId;
464
+
465
+ if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
466
+ {// we're not the global registry
467
+ _registerGlobalRegistry();
468
+ parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
469
+ }
470
+ else
471
+ {// we are global registry
472
+ parentNftId = _protocolNftId;
473
+ }
474
+
475
+ _info[registryNftId] = ObjectInfo({
476
+ nftId: registryNftId,
477
+ parentNftId: parentNftId,
478
+ objectType: REGISTRY(),
479
+ isInterceptor: false,
480
+ objectAddress: address(this),
481
+ initialOwner: NFT_LOCK_ADDRESS,
482
+ data: ""
483
+ });
484
+
485
+ _nftIdByAddress[address(this)] = registryNftId;
486
+ _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
200
487
  }
201
488
 
202
- function getOwner(NftId nftId) external view override returns (address) {
203
- return _chainNft.ownerOf(nftId.toInt());
489
+ /// @dev global registry registration for non mainnet registries
490
+ function _registerGlobalRegistry()
491
+ private
492
+ {
493
+ uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
494
+ NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
495
+
496
+ _info[globalRegistryNftId] = ObjectInfo({
497
+ nftId: globalRegistryNftId,
498
+ parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
499
+ objectType: REGISTRY(),
500
+ isInterceptor: false,
501
+ objectAddress: address(0),
502
+ initialOwner: NFT_LOCK_ADDRESS,
503
+ data: ""
504
+ });
505
+
506
+ _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
507
+ }
508
+ // depends on _registryNftId and _stakingAddress
509
+ function _registerStaking()
510
+ private
511
+ returns (NftId stakingNftId)
512
+ {
513
+ address stakingOwner = IRegisterable(_stakingAddress).getOwner();
514
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
515
+ stakingNftId = NftIdLib.toNftId(stakingId);
516
+
517
+ _info[stakingNftId] = ObjectInfo({
518
+ nftId: stakingNftId,
519
+ parentNftId: _registryNftId,
520
+ objectType: STAKING(),
521
+ isInterceptor: false,
522
+ objectAddress: _stakingAddress,
523
+ initialOwner: stakingOwner,
524
+ data: ""
525
+ });
526
+
527
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
528
+ // reverts if nftId was already minted
529
+ _chainNft.mint(stakingOwner, stakingId);
204
530
  }
205
531
 
206
- function getNftAddress() external view override returns (address nft) {
207
- return address(_chainNft);
532
+ /// @dev defines which object - parent types relations are allowed to register
533
+ // IMPORTANT:
534
+ // 1) EACH object type MUST have only one parent type across ALL mappings
535
+ // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
536
+ // 3) DO NOT use REGISTRY as object type
537
+ // 2) DO NOT use PROTOCOL and "zeroObjectType"
538
+ function _setupValidCoreTypesAndCombinations()
539
+ private
540
+ {
541
+ _coreTypes[REGISTRY()] = true;
542
+ _coreTypes[SERVICE()] = true;
543
+ _coreTypes[TOKEN()] = true;
544
+ _coreTypes[INSTANCE()] = true;
545
+ _coreTypes[PRODUCT()] = true;
546
+ _coreTypes[POOL()] = true;
547
+ _coreTypes[DISTRIBUTION()] = true;
548
+ _coreTypes[DISTRIBUTOR()] = true;
549
+ _coreTypes[ORACLE()] = true;
550
+ _coreTypes[POLICY()] = true;
551
+ _coreTypes[BUNDLE()] = true;
552
+ _coreTypes[STAKING()] = true;
553
+ _coreTypes[STAKE()] = true;
554
+
555
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
556
+ if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
557
+ // we are global registry
558
+ // object is registry from different chain
559
+ // parent is global registry, this contract
560
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
561
+ //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
562
+ } else {
563
+ // we are not global registry
564
+ // object is local registry, this contract
565
+ // parent is global registry, object with 0 address or registry from mainnet???
566
+ }
567
+ _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
568
+ _coreContractCombinations[TOKEN()][REGISTRY()] = true;
569
+ //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
570
+ _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
571
+
572
+ _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
573
+ _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
574
+ _coreContractCombinations[ORACLE()][INSTANCE()] = true;
575
+ _coreContractCombinations[POOL()][INSTANCE()] = true;
576
+
577
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
578
+ _coreObjectCombinations[POLICY()][PRODUCT()] = true;
579
+ _coreObjectCombinations[BUNDLE()][POOL()] = true;
580
+
581
+ // staking
582
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
583
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
208
584
  }
209
585
  }