@etherisc/gif-next 0.0.2-00080dc-272

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