@etherisc/gif-next 0.0.2-eb7261f-060 → 0.0.2-eb7c077-523

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 (435) hide show
  1. package/README.md +13 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +17 -242
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +106 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +55 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -16
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +110 -76
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -91
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
  81. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +55 -55
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +40 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
  99. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
  102. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
  104. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
  106. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  108. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  110. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  111. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  112. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  114. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  115. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  116. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  118. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  120. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  123. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
  124. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  125. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
  127. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  129. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PricingService.sol/PricingService.json +58 -58
  131. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  133. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  134. package/artifacts/contracts/product/Product.sol/Product.json +13 -153
  135. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  137. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  140. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +40 -16
  141. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +4 -0
  142. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +1503 -0
  143. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +4 -0
  144. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +1881 -0
  145. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +4 -0
  146. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +974 -0
  147. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  148. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +40 -47
  149. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  150. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  151. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  152. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/Registry.sol/Registry.json +224 -81
  154. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +348 -378
  156. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  157. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  158. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  160. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  162. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  163. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1140 -0
  164. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  165. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  166. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  167. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  168. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  169. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  170. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +62 -86
  171. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -61
  173. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  174. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  176. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
  180. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  182. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  184. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  193. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  194. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  195. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  196. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.dbg.json +4 -0
  197. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.json +34 -0
  198. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.dbg.json +4 -0
  199. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.json +24 -0
  200. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.dbg.json +4 -0
  201. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.json +34 -0
  202. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  203. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  204. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  206. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  207. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  208. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  210. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  211. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  212. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  213. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  214. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  215. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  216. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
  219. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  220. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  221. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  222. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  223. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  225. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  227. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  229. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  230. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  231. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +145 -169
  233. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  234. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
  235. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  236. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  237. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/Amount.sol/AmountLib.json +8 -8
  239. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  241. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  243. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  245. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  247. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  249. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  251. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  252. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  253. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  255. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  257. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  259. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  261. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  263. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  265. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  267. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  269. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  271. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  273. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  275. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  277. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  279. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  281. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  283. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  285. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  286. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  287. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  288. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  289. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  290. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  291. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  292. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  293. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -304
  294. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  295. package/contracts/authorization/Authorization.sol +218 -0
  296. package/contracts/authorization/IAccess.sol +48 -0
  297. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  298. package/contracts/authorization/IAuthorization.sol +54 -0
  299. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  300. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  301. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  302. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  303. package/contracts/distribution/BasicDistribution.sol +149 -0
  304. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  305. package/contracts/distribution/Distribution.sol +126 -104
  306. package/contracts/distribution/DistributionService.sol +12 -21
  307. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  308. package/contracts/distribution/IDistributionComponent.sol +17 -35
  309. package/contracts/distribution/IDistributionService.sol +5 -1
  310. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  311. package/contracts/instance/IInstance.sol +8 -9
  312. package/contracts/instance/IInstanceService.sol +13 -18
  313. package/contracts/instance/Instance.sol +61 -70
  314. package/contracts/instance/InstanceAdmin.sol +202 -267
  315. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  316. package/contracts/instance/InstanceReader.sol +22 -9
  317. package/contracts/instance/InstanceService.sol +74 -70
  318. package/contracts/instance/InstanceServiceManager.sol +2 -6
  319. package/contracts/instance/InstanceStore.sol +11 -4
  320. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  321. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  322. package/contracts/oracle/BasicOracle.sol +48 -0
  323. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  324. package/contracts/oracle/IOracle.sol +16 -0
  325. package/contracts/oracle/Oracle.sol +61 -49
  326. package/contracts/oracle/OracleServiceManager.sol +2 -5
  327. package/contracts/pool/BasicPool.sol +164 -0
  328. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  329. package/contracts/pool/BundleService.sol +14 -26
  330. package/contracts/pool/BundleServiceManager.sol +2 -5
  331. package/contracts/pool/IPoolComponent.sol +0 -60
  332. package/contracts/pool/Pool.sol +143 -131
  333. package/contracts/pool/PoolService.sol +11 -27
  334. package/contracts/pool/PoolServiceManager.sol +2 -5
  335. package/contracts/product/ApplicationService.sol +12 -36
  336. package/contracts/product/ApplicationServiceManager.sol +2 -2
  337. package/contracts/product/BasicProduct.sol +82 -0
  338. package/contracts/product/BasicProductAuthorization.sol +40 -0
  339. package/contracts/product/ClaimService.sol +5 -31
  340. package/contracts/product/ClaimServiceManager.sol +2 -2
  341. package/contracts/product/IProductComponent.sol +6 -9
  342. package/contracts/product/PolicyServiceManager.sol +2 -5
  343. package/contracts/product/PricingServiceManager.sol +2 -5
  344. package/contracts/product/Product.sol +103 -88
  345. package/contracts/product/ProductService.sol +7 -32
  346. package/contracts/product/ProductServiceManager.sol +2 -5
  347. package/contracts/registry/ChainNft.sol +28 -27
  348. package/contracts/registry/GlobalRegistry.sol +95 -0
  349. package/contracts/registry/GlobalRegistryAdmin.sol +38 -0
  350. package/contracts/registry/IGlobalRegistry.sol +17 -0
  351. package/contracts/registry/IRegistry.sol +25 -16
  352. package/contracts/registry/IRegistryService.sol +6 -6
  353. package/contracts/registry/Registry.sol +131 -146
  354. package/contracts/registry/RegistryAdmin.sol +244 -130
  355. package/contracts/registry/RegistryService.sol +4 -18
  356. package/contracts/registry/RegistryServiceManager.sol +2 -2
  357. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  358. package/contracts/registry/ReleaseRegistry.sol +533 -0
  359. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  360. package/contracts/registry/TokenRegistry.sol +2 -2
  361. package/contracts/shared/ComponentService.sol +20 -56
  362. package/contracts/shared/ComponentServiceManager.sol +2 -2
  363. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  364. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  365. package/contracts/shared/IKeyValueStore.sol +1 -0
  366. package/contracts/shared/ILifecycle.sol +1 -2
  367. package/contracts/shared/IService.sol +1 -1
  368. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  369. package/contracts/shared/KeyValueStore.sol +6 -2
  370. package/contracts/shared/Lifecycle.sol +16 -69
  371. package/contracts/shared/MainnetId.sol +29 -0
  372. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  373. package/contracts/shared/Service.sol +3 -4
  374. package/contracts/staking/IStaking.sol +1 -2
  375. package/contracts/staking/IStakingService.sol +12 -5
  376. package/contracts/staking/Staking.sol +11 -14
  377. package/contracts/staking/StakingLifecycle.sol +23 -0
  378. package/contracts/staking/StakingManager.sol +2 -6
  379. package/contracts/staking/StakingReader.sol +12 -16
  380. package/contracts/staking/StakingServiceManager.sol +2 -2
  381. package/contracts/staking/StakingStore.sol +15 -23
  382. package/contracts/type/ObjectType.sol +37 -7
  383. package/contracts/type/RoleId.sol +55 -82
  384. package/contracts/type/UFixed.sol +6 -0
  385. package/contracts/type/Version.sol +3 -1
  386. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  387. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  388. package/package.json +3 -3
  389. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  390. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  391. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  392. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  393. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  394. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  395. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  396. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  397. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  398. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  399. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  400. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  401. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  402. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  403. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  404. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  405. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  406. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  407. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  408. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  409. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  410. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  411. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  412. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  413. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  414. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  415. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  416. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  417. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  418. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  419. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  420. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  421. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  422. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  423. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  424. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  425. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  426. package/contracts/registry/ReleaseManager.sol +0 -527
  427. package/contracts/shared/AccessManagerCustom.sol +0 -741
  428. package/contracts/shared/AccessManagerExtended.sol +0 -481
  429. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  430. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  431. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  432. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  433. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  434. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  435. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -3,41 +3,51 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
-
7
- import {InitializableCustom} from "../shared/InitializableCustom.sol";
6
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
7
+ import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
8
8
 
9
9
  import {NftId, NftIdLib} from "../type/NftId.sol";
10
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";
11
+ import {ObjectType, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
12
12
 
13
13
  import {ChainNft} from "./ChainNft.sol";
14
14
  import {IRegistry} from "./IRegistry.sol";
15
15
  import {IRegisterable} from "../shared/IRegisterable.sol";
16
- import {ReleaseManager} from "./ReleaseManager.sol";
16
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
17
17
  import {TokenRegistry} from "./TokenRegistry.sol";
18
18
  import {RegistryAdmin} from "./RegistryAdmin.sol";
19
+ import {SidenetContract} from "../shared/MainnetId.sol";
19
20
 
20
- // IMPORTANT
21
+ /// @dev IMPORTANT
21
22
  // Each NFT minted by registry is accosiated with:
22
23
  // 1) NFT owner
23
24
  // 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)
25
+ // Three registration flows:
26
+ // 1) registerService() -> registers IService address by ReleaseRegistry (ReleaseRegistry is set at deployment time)
27
+ // 2) register() -> registers IRegisterable address by IService (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
28
+ // 3) -> registers object by IService (POLICY, BUNDLE, STAKE)
29
29
 
30
+ /// @title Chain Registry contract implementing IRegistry.
31
+ /// @notice See IRegistry for method details.
30
32
  contract Registry is
31
- InitializableCustom,
33
+ SidenetContract,
34
+ Initializable,
35
+ AccessManaged,
32
36
  IRegistry
33
37
  {
38
+ using NftIdLib for NftId;
39
+
34
40
  address public NFT_LOCK_ADDRESS = address(0x1);
35
41
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
36
42
  uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
37
43
  string public constant EMPTY_URI = "";
38
44
 
39
- mapping(NftId nftId => ObjectInfo info) private _info;
40
- mapping(address object => NftId nftId) private _nftIdByAddress;
45
+ /// @dev stores the deployer address and allows to create initializers
46
+ /// that are restricted to the deployer address.
47
+ address public immutable _deployer;
48
+
49
+ mapping(NftId nftId => ObjectInfo info) internal _info;
50
+ mapping(address object => NftId nftId) internal _nftIdByAddress;
41
51
 
42
52
  mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
43
53
 
@@ -53,44 +63,42 @@ contract Registry is
53
63
  ChainNft public immutable _chainNft;
54
64
 
55
65
  NftId public immutable _protocolNftId;
66
+ NftId public immutable _globalRegistryNftId;
56
67
  NftId public immutable _registryNftId;
57
68
  NftId public _stakingNftId;
58
69
 
59
70
  address public _tokenRegistryAddress;
60
71
  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
+ ReleaseRegistry public _releaseRegistry;
73
+
74
+ modifier onlyDeployer() {
75
+ if (msg.sender != _deployer) {
76
+ revert ErrorRegistryCallerNotDeployer();
72
77
  }
73
78
  _;
74
79
  }
75
80
 
76
-
77
- modifier onlyReleaseManager() {
78
- if(msg.sender != address(_releaseManager)) {
79
- revert ErrorRegistryCallerNotReleaseManager();
81
+ modifier onlyReleaseRegistry() {
82
+ if(msg.sender != address(_releaseRegistry)) {
83
+ revert ErrorRegistryCallerNotReleaseRegistry();
80
84
  }
81
85
  _;
82
86
  }
83
87
 
84
-
85
- constructor(RegistryAdmin admin)
86
- InitializableCustom()
88
+ /// @dev Creates the registry contract and populates it with the protocol and registry objects.
89
+ /// Internally deploys the ChainNft contract.
90
+ // TODO consider storing global registry address as constant
91
+ constructor(RegistryAdmin admin, address globalRegistry)
92
+ AccessManaged(admin.authority())
87
93
  {
94
+ _deployer = msg.sender;
88
95
  _admin = admin;
89
96
  // deploy NFT
90
97
  _chainNft = new ChainNft(address(this));
91
98
 
92
99
  // initial registry setup
93
100
  _protocolNftId = _registerProtocol();
101
+ _globalRegistryNftId = _registerGlobalRegistry(globalRegistry);
94
102
  _registryNftId = _registerRegistry();
95
103
 
96
104
  // set object types and object parent relations
@@ -98,94 +106,102 @@ contract Registry is
98
106
  }
99
107
 
100
108
 
101
- /// @dev wires release manager and token to registry (this contract).
102
- /// MUST be called by release manager.
109
+ /// @dev Wires release registry and token to registry (this contract).
110
+ /// MUST be called by release registry.
103
111
  function initialize(
104
- address releaseManager,
112
+ address releaseRegistry,
105
113
  address tokenRegistry,
106
114
  address staking
107
115
  )
108
116
  external
109
117
  initializer()
118
+ onlyDeployer()
110
119
  {
111
- _releaseManager = ReleaseManager(releaseManager);
120
+ _releaseRegistry = ReleaseRegistry(releaseRegistry);
112
121
  _tokenRegistryAddress = tokenRegistry;
113
122
  _stakingAddress = staking;
114
123
 
115
124
  _stakingNftId = _registerStaking();
116
125
  }
117
126
 
127
+ /// @inheritdoc IRegistry
128
+ function register(ObjectInfo memory info)
129
+ external
130
+ restricted
131
+ returns(NftId nftId)
132
+ {
133
+ ObjectType objectType = info.objectType;
134
+ ObjectType parentType = _info[info.parentNftId].objectType;
135
+
136
+ // check type combinations for core objects
137
+ if(info.objectAddress == address(0)) {
138
+ if(_coreObjectCombinations[objectType][parentType] == false) {
139
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
140
+ }
141
+ }
142
+ // check type combinations for contract objects
143
+ else {
144
+ if(_coreContractCombinations[objectType][parentType] == false) {
145
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
146
+ }
147
+ }
148
+
149
+ nftId = _register(info);
150
+ }
151
+
152
+
153
+ /// @inheritdoc IRegistry
118
154
  function registerService(
119
155
  ObjectInfo memory info,
120
156
  VersionPart version,
121
157
  ObjectType domain
122
158
  )
123
159
  external
124
- onlyReleaseManager
160
+ onlyReleaseRegistry
125
161
  returns(NftId nftId)
126
162
  {
163
+ // check service address is defined
127
164
  address service = info.objectAddress;
128
- /* must be guaranteed by release manager
129
165
  if(service == address(0)) {
130
- revert();
166
+ revert ErrorRegistryServiceAddressZero();
131
167
  }
132
168
 
169
+ // check version is defined
133
170
  if(version.eqz()) {
134
- revert();
135
- }
136
-
137
- if(info.objectType != SERVICE()) {
138
- revert();
171
+ revert ErrorRegistryServiceVersionZero();
139
172
  }
140
- if(info.parentType != REGISTRY()) {
141
- revert();
142
- }
143
- info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
144
- */
145
173
 
174
+ // check domain is defined
146
175
  if(domain.eqz()) {
147
176
  revert ErrorRegistryDomainZero(service);
148
177
  }
149
178
 
150
- if(_service[version][domain] > address(0)) {
179
+ // check contract has not already been registered
180
+ if(_service[version][domain] != address(0)) {
151
181
  revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
152
182
  }
153
-
154
- _service[version][domain] = service;
155
183
 
184
+ // check service has proper type
185
+ if(info.objectType != SERVICE()) {
186
+ revert ErrorRegistryNotService(service, info.objectType);
187
+ }
188
+
189
+ // check that parent has registry type
190
+ if(info.parentNftId != _registryNftId) {
191
+ revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
192
+ }
193
+
194
+ _service[version][domain] = service;
156
195
  nftId = _register(info);
157
196
 
158
197
  emit LogServiceRegistration(version, domain);
159
198
  }
160
199
 
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
200
 
201
+ /// @inheritdoc IRegistry
186
202
  function registerWithCustomType(ObjectInfo memory info)
187
203
  external
188
- onlyRegistryService
204
+ restricted
189
205
  returns(NftId nftId)
190
206
  {
191
207
  ObjectType objectType = info.objectType;
@@ -197,33 +213,32 @@ contract Registry is
197
213
 
198
214
  if(
199
215
  parentType == PROTOCOL() ||
200
- parentType == REGISTRY() ||
201
216
  parentType == SERVICE()
202
217
  ) {
203
218
  revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
204
219
  }
205
220
 
206
- _register(info);
221
+ nftId = _register(info);
207
222
  }
208
223
 
209
224
 
210
225
  /// @dev earliest GIF major version
211
226
  function getInitialVersion() external view returns (VersionPart) {
212
- return _releaseManager.getInitialVersion();
227
+ return _releaseRegistry.getInitialVersion();
213
228
  }
214
229
 
215
230
  /// @dev next GIF release version to be released
216
231
  function getNextVersion() external view returns (VersionPart) {
217
- return _releaseManager.getNextVersion();
232
+ return _releaseRegistry.getNextVersion();
218
233
  }
219
234
 
220
235
  /// @dev latest active GIF release version
221
236
  function getLatestVersion() external view returns (VersionPart) {
222
- return _releaseManager.getLatestVersion();
237
+ return _releaseRegistry.getLatestVersion();
223
238
  }
224
239
 
225
240
  function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
226
- return _releaseManager.getReleaseInfo(version);
241
+ return _releaseRegistry.getReleaseInfo(version);
227
242
  }
228
243
 
229
244
  function getObjectCount() external view returns (uint256) {
@@ -277,7 +292,7 @@ contract Registry is
277
292
 
278
293
  function isActiveRelease(VersionPart version) external view returns (bool)
279
294
  {
280
- return _releaseManager.isActiveRelease(version);
295
+ return _releaseRegistry.isActiveRelease(version);
281
296
  }
282
297
 
283
298
  function getStakingAddress() external view returns (address staking) {
@@ -298,12 +313,8 @@ contract Registry is
298
313
  service = _service[releaseVersion][serviceDomain];
299
314
  }
300
315
 
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);
316
+ function getReleaseRegistryAddress() external view returns (address) {
317
+ return address(_releaseRegistry);
307
318
  }
308
319
 
309
320
  function getChainNftAddress() external view override returns (address) {
@@ -335,7 +346,6 @@ contract Registry is
335
346
  // Internals
336
347
 
337
348
  /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
338
- // TODO registration of precompile addresses
339
349
  function _register(ObjectInfo memory info)
340
350
  internal
341
351
  returns(NftId nftId)
@@ -449,29 +459,40 @@ contract Registry is
449
459
  _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
450
460
  }
451
461
 
462
+ /// @dev global registry registration
463
+ function _registerGlobalRegistry(address globalRegistry)
464
+ internal
465
+ returns (NftId globalRegistryNftId)
466
+ {
467
+ uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
468
+ globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
469
+
470
+ _info[globalRegistryNftId] = ObjectInfo({
471
+ nftId: globalRegistryNftId,
472
+ parentNftId: _protocolNftId,
473
+ objectType: REGISTRY(),
474
+ isInterceptor: false,
475
+ objectAddress: globalRegistry,
476
+ initialOwner: NFT_LOCK_ADDRESS,
477
+ data: ""
478
+ });
479
+
480
+ _nftIdByAddress[address(this)] = globalRegistryNftId;
481
+ _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
482
+ }
483
+
452
484
  /// @dev registry registration
453
- /// might also register the global registry when not on mainnet
454
485
  function _registerRegistry()
455
- private
486
+ internal
487
+ virtual
456
488
  returns (NftId registryNftId)
457
489
  {
458
490
  uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
459
491
  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
492
 
472
493
  _info[registryNftId] = ObjectInfo({
473
494
  nftId: registryNftId,
474
- parentNftId: parentNftId,
495
+ parentNftId: _globalRegistryNftId,
475
496
  objectType: REGISTRY(),
476
497
  isInterceptor: false,
477
498
  objectAddress: address(this),
@@ -483,28 +504,10 @@ contract Registry is
483
504
  _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
484
505
  }
485
506
 
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
507
+ /// @dev staking registration
506
508
  function _registerStaking()
507
509
  private
510
+ onlyInitializing()
508
511
  returns (NftId stakingNftId)
509
512
  {
510
513
  address stakingOwner = IRegisterable(_stakingAddress).getOwner();
@@ -522,22 +525,16 @@ contract Registry is
522
525
  });
523
526
 
524
527
  _nftIdByAddress[_stakingAddress] = stakingNftId;
525
- // reverts if nftId was already minted
526
528
  _chainNft.mint(stakingOwner, stakingId);
527
529
  }
528
530
 
529
531
  /// @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"
532
+ /// EACH object type MUST have only one parent type across ALL mappings
535
533
  function _setupValidCoreTypesAndCombinations()
536
- private
534
+ private
537
535
  {
538
536
  _coreTypes[REGISTRY()] = true;
539
537
  _coreTypes[SERVICE()] = true;
540
- _coreTypes[TOKEN()] = true;
541
538
  _coreTypes[INSTANCE()] = true;
542
539
  _coreTypes[PRODUCT()] = true;
543
540
  _coreTypes[POOL()] = true;
@@ -549,28 +546,16 @@ contract Registry is
549
546
  _coreTypes[STAKING()] = true;
550
547
  _coreTypes[STAKE()] = true;
551
548
 
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
549
  _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
550
  _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
568
551
 
552
+ // components with instance parent
569
553
  _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
570
554
  _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
571
555
  _coreContractCombinations[ORACLE()][INSTANCE()] = true;
572
556
  _coreContractCombinations[POOL()][INSTANCE()] = true;
573
557
 
558
+ // objects with coponent parents
574
559
  _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
575
560
  _coreObjectCombinations[POLICY()][PRODUCT()] = true;
576
561
  _coreObjectCombinations[BUNDLE()][POOL()] = true;