@etherisc/gif-next 0.0.2-96b5b72-170 → 0.0.2-97aac30-275

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 (401) hide show
  1. package/README.md +2 -1
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +193 -164
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +114 -321
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +120 -82
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +72 -108
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +22 -48
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -6
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +56 -22
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +53 -18
  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 +1 -1
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -28
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +458 -331
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +133 -59
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +110 -32
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1103 -308
  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 +1 -1
  35. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -2
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  41. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  49. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  50. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  51. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  52. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  53. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
  54. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  56. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  58. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
  60. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +69 -252
  62. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +105 -55
  64. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +8 -53
  66. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  67. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +134 -86
  68. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  69. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +121 -133
  70. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  71. package/artifacts/contracts/pool/Pool.sol/Pool.json +239 -92
  72. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  73. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +170 -368
  74. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -72
  76. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +69 -153
  78. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +105 -31
  80. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +95 -203
  82. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +118 -56
  84. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +7 -1
  86. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +7 -1
  88. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +81 -25
  90. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -1
  92. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  93. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +230 -107
  94. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -55
  96. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +164 -299
  98. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +106 -92
  100. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -160
  102. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +130 -40
  104. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  105. package/artifacts/contracts/product/Product.sol/Product.json +334 -146
  106. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ProductService.sol/ProductService.json +29 -214
  108. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +88 -34
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +163 -61
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +256 -65
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/Registry.sol/Registry.json +378 -67
  119. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  120. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +272 -68
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +87 -35
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +799 -127
  127. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  128. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  129. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  130. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
  131. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  132. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  133. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  134. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  135. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  136. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  137. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  138. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  139. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  140. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  141. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Component.sol/Component.json +184 -11
  143. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  144. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +908 -49
  145. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  146. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
  147. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  148. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
  149. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  151. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  152. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  153. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  154. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  155. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  156. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +172 -4
  157. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  158. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
  159. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  160. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +80 -22
  161. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  162. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +1 -11
  163. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  164. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  165. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  166. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  167. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  168. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
  169. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  171. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IService.sol/IService.json +7 -1
  174. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  175. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  176. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  177. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  178. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +176 -24
  179. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  180. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  181. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  182. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  183. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  184. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  185. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  186. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  187. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  188. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
  189. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +64 -16
  191. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
  193. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  194. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  195. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  196. package/artifacts/contracts/shared/Service.sol/Service.json +7 -1
  197. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  198. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  199. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  200. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  201. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  202. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  203. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1103 -172
  204. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  205. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +497 -49
  206. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  208. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  209. package/artifacts/contracts/staking/Staking.sol/Staking.json +1247 -56
  210. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  211. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +167 -30
  212. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  214. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  215. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +605 -78
  216. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +122 -28
  218. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  220. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  221. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  222. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  223. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  224. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  225. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  226. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  227. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  228. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  229. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  230. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  232. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/Fee.sol/FeeLib.json +34 -34
  234. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  235. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  236. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  238. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  239. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  240. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  241. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +15 -2
  242. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  244. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  246. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  248. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  250. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  252. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +76 -2
  254. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  256. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  258. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  262. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  264. package/contracts/distribution/Distribution.sol +27 -51
  265. package/contracts/distribution/DistributionService.sol +55 -106
  266. package/contracts/distribution/DistributionServiceManager.sol +9 -18
  267. package/contracts/distribution/IDistributionComponent.sol +3 -8
  268. package/contracts/distribution/IDistributionService.sol +2 -8
  269. package/contracts/instance/IInstance.sol +12 -7
  270. package/contracts/instance/IInstanceService.sol +13 -5
  271. package/contracts/instance/Instance.sol +30 -23
  272. package/contracts/instance/InstanceAdmin.sol +331 -0
  273. package/contracts/instance/InstanceAuthorizationsLib.sol +210 -141
  274. package/contracts/instance/InstanceReader.sol +64 -42
  275. package/contracts/instance/InstanceService.sol +141 -87
  276. package/contracts/instance/InstanceServiceManager.sol +10 -20
  277. package/contracts/instance/InstanceStore.sol +125 -55
  278. package/contracts/instance/base/BalanceStore.sol +118 -0
  279. package/contracts/instance/base/ObjectCounter.sol +21 -0
  280. package/contracts/instance/module/IAccess.sol +2 -10
  281. package/contracts/instance/module/IBundle.sol +1 -4
  282. package/contracts/instance/module/IComponents.sol +15 -4
  283. package/contracts/instance/module/IPolicy.sol +8 -2
  284. package/contracts/mock/Dip.sol +26 -0
  285. package/contracts/oracle/IOracle.sol +20 -0
  286. package/contracts/oracle/IOracleComponent.sol +32 -0
  287. package/contracts/oracle/IOracleService.sol +65 -0
  288. package/contracts/oracle/Oracle.sol +145 -0
  289. package/contracts/oracle/OracleService.sol +277 -0
  290. package/contracts/oracle/OracleServiceManager.sol +42 -0
  291. package/contracts/pool/BundleService.sol +63 -149
  292. package/contracts/pool/BundleServiceManager.sol +9 -18
  293. package/contracts/pool/IBundleService.sol +4 -16
  294. package/contracts/pool/IPoolComponent.sol +2 -4
  295. package/contracts/pool/IPoolService.sol +45 -9
  296. package/contracts/pool/Pool.sol +37 -40
  297. package/contracts/pool/PoolService.sol +195 -145
  298. package/contracts/pool/PoolServiceManager.sol +9 -18
  299. package/contracts/product/ApplicationService.sol +111 -43
  300. package/contracts/product/ApplicationServiceManager.sol +9 -6
  301. package/contracts/product/ClaimService.sol +21 -21
  302. package/contracts/product/ClaimServiceManager.sol +9 -6
  303. package/contracts/product/IApplicationService.sol +1 -1
  304. package/contracts/product/IClaimService.sol +7 -1
  305. package/contracts/product/IPolicyService.sol +6 -8
  306. package/contracts/product/IPricingService.sol +3 -1
  307. package/contracts/product/IProductComponent.sol +5 -4
  308. package/contracts/product/IProductService.sol +1 -8
  309. package/contracts/product/PolicyService.sol +226 -127
  310. package/contracts/product/PolicyServiceManager.sol +9 -21
  311. package/contracts/product/PricingService.sol +74 -48
  312. package/contracts/product/PricingServiceManager.sol +9 -18
  313. package/contracts/product/Product.sol +45 -47
  314. package/contracts/product/ProductService.sol +26 -112
  315. package/contracts/product/ProductServiceManager.sol +9 -21
  316. package/contracts/registry/ChainNft.sol +1 -0
  317. package/contracts/registry/IRegistry.sol +38 -24
  318. package/contracts/registry/IRegistryService.sol +31 -31
  319. package/contracts/registry/Registry.sol +176 -105
  320. package/contracts/registry/RegistryAdmin.sol +237 -0
  321. package/contracts/registry/RegistryService.sol +44 -82
  322. package/contracts/registry/RegistryServiceManager.sol +21 -23
  323. package/contracts/registry/ReleaseManager.sol +450 -210
  324. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  325. package/contracts/registry/TokenRegistry.sol +261 -62
  326. package/contracts/shared/AccessManagerCustom.sol +736 -0
  327. package/contracts/shared/AccessManagerExtended.sol +470 -0
  328. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  329. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  330. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  331. package/contracts/shared/Component.sol +153 -49
  332. package/contracts/shared/ComponentService.sol +561 -93
  333. package/contracts/shared/ComponentServiceManager.sol +35 -0
  334. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  335. package/contracts/shared/ERC165.sol +1 -1
  336. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  337. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  338. package/contracts/shared/IComponent.sol +20 -8
  339. package/contracts/shared/IComponentService.sol +102 -0
  340. package/contracts/shared/IInstanceLinkedComponent.sol +5 -11
  341. package/contracts/{instance/base → shared}/IKeyValueStore.sol +6 -6
  342. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  343. package/contracts/shared/INftOwnable.sol +1 -1
  344. package/contracts/shared/IPolicyHolder.sol +6 -1
  345. package/contracts/shared/IService.sol +1 -1
  346. package/contracts/shared/InitializableCustom.sol +177 -0
  347. package/contracts/shared/InstanceLinkedComponent.sol +51 -178
  348. package/contracts/{instance/base → shared}/KeyValueStore.sol +30 -72
  349. package/contracts/{instance/base → shared}/Lifecycle.sol +12 -3
  350. package/contracts/shared/NftIdSetManager.sol +65 -0
  351. package/contracts/shared/NftOwnable.sol +2 -13
  352. package/contracts/shared/PolicyHolder.sol +21 -13
  353. package/contracts/shared/ProxyManager.sol +31 -1
  354. package/contracts/shared/Registerable.sol +2 -2
  355. package/contracts/shared/Service.sol +7 -2
  356. package/contracts/staking/IStaking.sol +146 -8
  357. package/contracts/staking/IStakingService.sol +83 -39
  358. package/contracts/staking/StakeManagerLib.sol +179 -0
  359. package/contracts/staking/Staking.sol +503 -17
  360. package/contracts/staking/StakingManager.sol +22 -14
  361. package/contracts/staking/StakingReader.sol +187 -0
  362. package/contracts/staking/StakingService.sol +246 -44
  363. package/contracts/staking/StakingServiceManager.sol +8 -4
  364. package/contracts/staking/StakingStore.sol +572 -0
  365. package/contracts/staking/TargetManagerLib.sol +207 -0
  366. package/contracts/type/AddressSet.sol +1 -1
  367. package/contracts/type/Amount.sol +20 -1
  368. package/contracts/type/Blocknumber.sol +20 -3
  369. package/contracts/type/Fee.sol +17 -16
  370. package/contracts/type/NftId.sol +14 -16
  371. package/contracts/type/NftIdSet.sol +1 -1
  372. package/contracts/type/ObjectType.sol +12 -10
  373. package/contracts/type/Referral.sol +1 -1
  374. package/contracts/type/RequestId.sol +75 -0
  375. package/contracts/type/RiskId.sol +1 -1
  376. package/contracts/type/RoleId.sol +18 -4
  377. package/contracts/type/Seconds.sol +27 -0
  378. package/contracts/type/StateId.sol +27 -2
  379. package/contracts/type/Timestamp.sol +6 -2
  380. package/contracts/type/Version.sol +1 -1
  381. package/package.json +4 -3
  382. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  383. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  384. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  385. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  386. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  387. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  388. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  389. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  390. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  393. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  394. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  395. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  396. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  397. package/contracts/instance/InstanceAccessManager.sol +0 -543
  398. package/contracts/instance/module/ISetup.sol +0 -33
  399. package/contracts/instance/module/ITreasury.sol +0 -23
  400. package/contracts/registry/RegistryAccessManager.sol +0 -207
  401. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -2,14 +2,20 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
6
 
6
- import {NftId, toNftId, zeroNftId} from "../type/NftId.sol";
7
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
8
+
9
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
10
  import {VersionPart} from "../type/Version.sol";
8
11
  import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
9
12
 
10
13
  import {ChainNft} from "./ChainNft.sol";
11
14
  import {IRegistry} from "./IRegistry.sol";
15
+ import {IRegisterable} from "../shared/IRegisterable.sol";
12
16
  import {ReleaseManager} from "./ReleaseManager.sol";
17
+ import {TokenRegistry} from "./TokenRegistry.sol";
18
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
13
19
 
14
20
  // IMPORTANT
15
21
  // Each NFT minted by registry is accosiated with:
@@ -22,9 +28,10 @@ import {ReleaseManager} from "./ReleaseManager.sol";
22
28
  // 4) state object by regular service (POLICY, BUNDLE, STAKE)
23
29
 
24
30
  contract Registry is
31
+ InitializableCustom,
25
32
  IRegistry
26
33
  {
27
- address public constant NFT_LOCK_ADDRESS = address(0x1);
34
+ address public NFT_LOCK_ADDRESS = address(0x1);
28
35
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
29
36
  uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
30
37
  string public constant EMPTY_URI = "";
@@ -42,70 +49,64 @@ contract Registry is
42
49
  mapping(ObjectType objectType => mapping(
43
50
  ObjectType parentType => bool)) private _coreObjectCombinations;
44
51
 
45
- NftId private _registryNftId;
46
- ChainNft private _chainNft;
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;
47
58
 
48
- ReleaseManager private _releaseManager;
49
- address private _stakingAddress;
59
+ address public _tokenRegistryAddress;
60
+ address public _stakingAddress;
61
+ ReleaseManager public _releaseManager;
50
62
 
51
63
  modifier onlyRegistryService() {
52
64
  if(!_releaseManager.isActiveRegistryService(msg.sender)) {
53
- revert CallerNotRegistryService();
65
+ revert ErrorRegistryCallerNotRegistryService();
54
66
  }
55
67
  _;
56
68
  }
57
69
 
70
+
58
71
  modifier onlyReleaseManager() {
59
72
  if(msg.sender != address(_releaseManager)) {
60
- revert CallerNotReleaseManager();
73
+ revert ErrorRegistryCallerNotReleaseManager();
61
74
  }
62
75
  _;
63
76
  }
64
77
 
65
- constructor() {
66
- _releaseManager = ReleaseManager(msg.sender);
67
78
 
79
+ constructor(RegistryAdmin admin)
80
+ InitializableCustom()
81
+ {
82
+ _admin = admin;
68
83
  // deploy NFT
69
84
  _chainNft = new ChainNft(address(this));
70
85
 
71
86
  // initial registry setup
72
- _registerProtocol();
73
- _registerRegistry();
87
+ _protocolNftId = _registerProtocol();
88
+ _registryNftId = _registerRegistry();
74
89
 
75
90
  // set object types and object parent relations
76
91
  _setupValidCoreTypesAndCombinations();
77
92
  }
78
93
 
79
94
 
80
- function registerStaking(
81
- address stakingAddress,
82
- address stakingOwner
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
83
101
  )
84
102
  external
85
- onlyReleaseManager
86
- returns(NftId stakingNftId)
103
+ initializer()
87
104
  {
88
- // staking contract for same chain may only be registered once
89
- if (_stakingAddress != address(0)) {
90
- revert StakingAlreadyRegistered(_stakingAddress);
91
- }
92
-
93
- _stakingAddress = stakingAddress;
94
- uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
95
- stakingNftId = toNftId(stakingId);
96
-
97
- _nftIdByAddress[_stakingAddress] = stakingNftId;
98
- _info[stakingNftId] = ObjectInfo({
99
- nftId: stakingNftId,
100
- parentNftId: _registryNftId,
101
- objectType: STAKING(),
102
- isInterceptor: false,
103
- objectAddress: _stakingAddress,
104
- initialOwner: stakingOwner,
105
- data: ""
106
- });
105
+ _releaseManager = ReleaseManager(releaseManager);
106
+ _tokenRegistryAddress = tokenRegistry;
107
+ _stakingAddress = staking;
107
108
 
108
- _chainNft.mint(stakingOwner, stakingId);
109
+ _stakingNftId = _registerStaking();
109
110
  }
110
111
 
111
112
  function registerService(
@@ -117,7 +118,16 @@ contract Registry is
117
118
  onlyReleaseManager
118
119
  returns(NftId nftId)
119
120
  {
121
+ address service = info.objectAddress;
120
122
  /* must be guaranteed by release manager
123
+ if(service == address(0)) {
124
+ revert();
125
+ }
126
+
127
+ if(version.eqz()) {
128
+ revert();
129
+ }
130
+
121
131
  if(info.objectType != SERVICE()) {
122
132
  revert();
123
133
  }
@@ -127,11 +137,15 @@ contract Registry is
127
137
  info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
128
138
  */
129
139
 
130
- if(_service[version][domain] > address(0)) {
131
- revert ServiceAlreadyRegistered(info.objectAddress);
140
+ if(domain.eqz()) {
141
+ revert ErrorRegistryDomainZero(service);
132
142
  }
133
143
 
134
- _service[version][domain] = info.objectAddress; // nftId;
144
+ if(_service[version][domain] > address(0)) {
145
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
146
+ }
147
+
148
+ _service[version][domain] = service;
135
149
 
136
150
  nftId = _register(info);
137
151
 
@@ -146,23 +160,17 @@ contract Registry is
146
160
  ObjectType objectType = info.objectType;
147
161
  ObjectType parentType = _info[info.parentNftId].objectType;
148
162
 
149
- // TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
150
- // no service registrations
151
- if(objectType == SERVICE()) {
152
- revert ServiceRegistration();
153
- }
154
-
155
163
  // only valid core types combinations
156
164
  if(info.objectAddress == address(0))
157
165
  {
158
166
  if(_coreObjectCombinations[objectType][parentType] == false) {
159
- revert InvalidTypesCombination(objectType, parentType);
167
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
160
168
  }
161
169
  }
162
170
  else
163
171
  {
164
172
  if(_coreContractCombinations[objectType][parentType] == false) {
165
- revert InvalidTypesCombination(objectType, parentType);
173
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
166
174
  }
167
175
  }
168
176
 
@@ -178,7 +186,7 @@ contract Registry is
178
186
  ObjectType parentType = _info[info.parentNftId].objectType;
179
187
 
180
188
  if(_coreTypes[objectType]) {
181
- revert CoreTypeRegistration();
189
+ revert ErrorRegistryCoreTypeRegistration();
182
190
  }
183
191
 
184
192
  if(
@@ -186,7 +194,7 @@ contract Registry is
186
194
  parentType == REGISTRY() ||
187
195
  parentType == SERVICE()
188
196
  ) {
189
- revert InvalidTypesCombination(objectType, parentType);
197
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
190
198
  }
191
199
 
192
200
  _register(info);
@@ -198,13 +206,7 @@ contract Registry is
198
206
  return _releaseManager.getInitialVersion();
199
207
  }
200
208
 
201
- // TODO make distinction between active an not yet active version
202
- // need to be thought trough, not yet clear if necessary
203
- // need to answer question: what is the latest version during the upgrade process?
204
- // likely setting up a new gif version does not fit into a single tx
205
- // in this case we might want to have a period where the latest version is
206
- // in the process of being set up while the latest active version is 1 major release smaller
207
- /// @dev latest GIF major version (might not yet be active)
209
+ /// @dev next GIF release version to be released
208
210
  function getNextVersion() external view returns (VersionPart) {
209
211
  return _releaseManager.getNextVersion();
210
212
  }
@@ -222,14 +224,14 @@ contract Registry is
222
224
  return _chainNft.totalSupply();
223
225
  }
224
226
 
225
- function getReleaseManagerAddress() external view returns (address) {
226
- return address(_releaseManager);
227
- }
228
-
229
227
  function getNftId() external view returns (NftId nftId) {
230
228
  return _registryNftId;
231
229
  }
232
230
 
231
+ function getProtocolNftId() external view returns (NftId nftId) {
232
+ return _protocolNftId;
233
+ }
234
+
233
235
  function getNftId(address object) external view returns (NftId id) {
234
236
  return _nftIdByAddress[object];
235
237
  }
@@ -267,30 +269,49 @@ contract Registry is
267
269
  return _info[objectParentNftId].objectType == INSTANCE();
268
270
  }
269
271
 
270
- function isValidRelease(VersionPart version) external view returns (bool)
272
+ function isActiveRelease(VersionPart version) external view returns (bool)
271
273
  {
272
- return _releaseManager.isValidRelease(version);
274
+ return _releaseManager.isActiveRelease(version);
273
275
  }
274
276
 
275
277
  function getStakingAddress() external view returns (address staking) {
278
+ //return getObjectInfo(_stakingNftId).objectAddress;
279
+ //return _info[_stakingNftId].objectAddress;
276
280
  return _stakingAddress;
277
281
  }
278
282
 
283
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
284
+ return _tokenRegistryAddress;
285
+ }
286
+
279
287
  function getServiceAddress(
280
288
  ObjectType serviceDomain,
281
289
  VersionPart releaseVersion
282
290
  ) external view returns (address service)
283
291
  {
284
- // TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
285
- //if(_releaseManager.isValidRelease(releaseVersion)) {
286
- service = _service[releaseVersion][serviceDomain];
287
- //}
292
+ service = _service[releaseVersion][serviceDomain];
293
+ }
294
+
295
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
296
+ return address(_releaseManager.getReleaseAccessManager(version));
297
+ }
298
+
299
+ function getReleaseManagerAddress() external view returns (address) {
300
+ return address(_releaseManager);
288
301
  }
289
302
 
290
303
  function getChainNftAddress() external view override returns (address) {
291
304
  return address(_chainNft);
292
305
  }
293
306
 
307
+ function getRegistryAdminAddress() external view returns (address) {
308
+ return address(_admin);
309
+ }
310
+
311
+ function getAuthority() external view returns (address) {
312
+ return _admin.authority();
313
+ }
314
+
294
315
  function getOwner() public view returns (address owner) {
295
316
  return ownerOf(address(this));
296
317
  }
@@ -314,59 +335,76 @@ contract Registry is
314
335
  returns(NftId nftId)
315
336
  {
316
337
  ObjectType objectType = info.objectType;
338
+ bool isInterceptor = info.isInterceptor;
339
+ address objectAddress = info.objectAddress;
340
+ address owner = info.initialOwner;
341
+
317
342
  NftId parentNftId = info.parentNftId;
318
343
  ObjectInfo memory parentInfo = _info[parentNftId];
319
344
  ObjectType parentType = parentInfo.objectType; // see function header
320
345
  address parentAddress = parentInfo.objectAddress;
321
346
 
322
347
  // parent is contract -> need to check? -> check before minting
348
+ // special case: staking: to protocol possible as well
323
349
  // special case: global registry nft as parent when not on mainnet -> global registry address is 0
324
350
  // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
325
351
  // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
326
- if(parentAddress == address(0)) {
327
- revert ZeroParentAddress();
352
+ if(objectType != STAKE()) {
353
+ if(parentAddress == address(0)) {
354
+ revert ErrorRegistryParentAddressZero();
355
+ }
328
356
  }
329
357
 
330
- address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
331
- uint256 tokenId = _chainNft.getNextTokenId();
332
- nftId = toNftId(tokenId);
358
+ address interceptorAddress = _getInterceptor(
359
+ isInterceptor,
360
+ objectType,
361
+ objectAddress,
362
+ parentInfo.isInterceptor,
363
+ parentAddress);
333
364
 
365
+ uint256 tokenId = _chainNft.getNextTokenId();
366
+ nftId = NftIdLib.toNftId(tokenId);
334
367
  info.nftId = nftId;
335
368
  _info[nftId] = info;
336
369
 
337
- if(info.objectAddress > address(0))
338
- {
339
- address contractAddress = info.objectAddress;
340
-
341
- if(_nftIdByAddress[contractAddress].gtz()) {
342
- revert ContractAlreadyRegistered(contractAddress);
370
+ if(objectAddress > address(0)) {
371
+ if(_nftIdByAddress[objectAddress].gtz()) {
372
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
343
373
  }
344
374
 
345
- _nftIdByAddress[contractAddress] = nftId;
375
+ _nftIdByAddress[objectAddress] = nftId;
346
376
  }
347
377
 
348
- emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
378
+ emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
349
379
 
350
380
  // calls nft receiver(1) and interceptor(2)
351
381
  uint256 mintedTokenId = _chainNft.mint(
352
- info.initialOwner,
353
- interceptor,
382
+ owner,
383
+ interceptorAddress,
354
384
  EMPTY_URI);
355
- assert(mintedTokenId == tokenId);
356
-
385
+
386
+ assert(mintedTokenId == tokenId);
357
387
  }
358
388
 
359
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:
360
392
  function _getInterceptor(
361
393
  bool isInterceptor,
394
+ ObjectType objectType,
362
395
  address objectAddress,
363
396
  bool parentIsInterceptor,
364
397
  address parentObjectAddress
365
398
  )
366
399
  internal
367
- view
400
+ pure
368
401
  returns (address interceptor)
369
402
  {
403
+ // no intercepting calls for stakes
404
+ if (objectType == STAKE()) {
405
+ return address(0);
406
+ }
407
+
370
408
  if (objectAddress == address(0)) {
371
409
  if (parentIsInterceptor) {
372
410
  return parentObjectAddress;
@@ -387,13 +425,14 @@ contract Registry is
387
425
  /// @dev protocol registration used to anchor the dip ecosystem relations
388
426
  function _registerProtocol()
389
427
  private
428
+ returns (NftId protocolNftId)
390
429
  {
391
430
  uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
392
- NftId protocolNftId = toNftId(protocolId);
431
+ protocolNftId = NftIdLib.toNftId(protocolId);
393
432
 
394
433
  _info[protocolNftId] = ObjectInfo({
395
434
  nftId: protocolNftId,
396
- parentNftId: zeroNftId(),
435
+ parentNftId: NftIdLib.zero(),
397
436
  objectType: PROTOCOL(),
398
437
  isInterceptor: false,
399
438
  objectAddress: address(0),
@@ -408,19 +447,20 @@ contract Registry is
408
447
  /// might also register the global registry when not on mainnet
409
448
  function _registerRegistry()
410
449
  private
450
+ returns (NftId registryNftId)
411
451
  {
412
452
  uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
413
- NftId registryNftId = toNftId(registryId);
453
+ registryNftId = NftIdLib.toNftId(registryId);
414
454
  NftId parentNftId;
415
455
 
416
456
  if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
417
457
  {// we're not the global registry
418
458
  _registerGlobalRegistry();
419
- parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
459
+ parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
420
460
  }
421
461
  else
422
462
  {// we are global registry
423
- parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
463
+ parentNftId = _protocolNftId;
424
464
  }
425
465
 
426
466
  _info[registryNftId] = ObjectInfo({
@@ -432,9 +472,8 @@ contract Registry is
432
472
  initialOwner: NFT_LOCK_ADDRESS,
433
473
  data: ""
434
474
  });
435
- _nftIdByAddress[address(this)] = registryNftId;
436
- _registryNftId = registryNftId;
437
475
 
476
+ _nftIdByAddress[address(this)] = registryNftId;
438
477
  _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
439
478
  }
440
479
 
@@ -443,11 +482,11 @@ contract Registry is
443
482
  private
444
483
  {
445
484
  uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
446
- NftId globalRegistryNftId = toNftId(globalRegistryId);
485
+ NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
447
486
 
448
487
  _info[globalRegistryNftId] = ObjectInfo({
449
488
  nftId: globalRegistryNftId,
450
- parentNftId: toNftId(_chainNft.PROTOCOL_NFT_ID()),
489
+ parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
451
490
  objectType: REGISTRY(),
452
491
  isInterceptor: false,
453
492
  objectAddress: address(0),
@@ -457,13 +496,36 @@ contract Registry is
457
496
 
458
497
  _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
459
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
+ }
460
522
 
461
523
  /// @dev defines which object - parent types relations are allowed to register
462
524
  // IMPORTANT:
463
525
  // 1) EACH object type MUST have only one parent type across ALL mappings
464
526
  // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
465
527
  // 3) DO NOT use REGISTRY as object type
466
- // 2) DO NOT use PROTOCOL and "zeroObjectType"
528
+ // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
467
529
  function _setupValidCoreTypesAndCombinations()
468
530
  private
469
531
  {
@@ -474,32 +536,41 @@ contract Registry is
474
536
  _coreTypes[PRODUCT()] = true;
475
537
  _coreTypes[POOL()] = true;
476
538
  _coreTypes[DISTRIBUTION()] = true;
539
+ _coreTypes[DISTRIBUTOR()] = true;
540
+ _coreTypes[ORACLE()] = true;
477
541
  _coreTypes[POLICY()] = true;
478
542
  _coreTypes[BUNDLE()] = true;
479
543
  _coreTypes[STAKING()] = true;
480
544
  _coreTypes[STAKE()] = true;
481
-
482
- _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
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
+ }
483
558
  _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
484
559
  _coreContractCombinations[TOKEN()][REGISTRY()] = true;
485
560
  //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
486
-
487
- // registry as parent, ONLY approved
488
561
  _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
489
562
 
490
- // instance as parent, ONLY approved
491
563
  _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
492
564
  _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
493
565
  _coreContractCombinations[ORACLE()][INSTANCE()] = true;
494
566
  _coreContractCombinations[POOL()][INSTANCE()] = true;
495
567
 
496
568
  _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
497
-
498
- // product as parent, ONLY approved
499
569
  _coreObjectCombinations[POLICY()][PRODUCT()] = true;
500
-
501
- // pool as parent, ONLY approved
502
570
  _coreObjectCombinations[BUNDLE()][POOL()] = true;
503
- _coreObjectCombinations[STAKE()][POOL()] = true;
571
+
572
+ // staking
573
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
574
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
504
575
  }
505
576
  }