@etherisc/gif-next 0.0.2-ad36bbd → 0.0.2-ada9a19-458

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