@etherisc/gif-next 0.0.2-f347f00-614 → 0.0.2-f36fd21-685

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 (436) hide show
  1. package/README.md +30 -2
  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 +100 -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 -5
  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 +1548 -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 +46 -228
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +134 -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 -81
  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 -101
  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 +1185 -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 +43 -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 +43 -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 +1520 -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 +220 -54
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +72 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +102 -0
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -195
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  102. package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -296
  103. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
  105. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
  107. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  109. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  111. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  113. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  114. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  115. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  116. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  117. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  119. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  120. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
  123. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  125. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
  126. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  127. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +64 -51
  129. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  131. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  133. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  135. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  136. package/artifacts/contracts/product/Product.sol/Product.json +32 -153
  137. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  138. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  139. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  141. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  142. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  143. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  144. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  145. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  146. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  147. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  148. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  149. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  150. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  151. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +239 -389
  152. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  154. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  156. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  157. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  158. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  159. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  160. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +44 -12
  162. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  164. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -86
  167. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
  169. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
  175. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  177. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  179. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  185. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  186. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
  189. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  190. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  191. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  192. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  193. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  194. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  195. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  197. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  203. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  205. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  206. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  207. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  209. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
  210. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  211. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  212. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  214. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  215. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  216. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  218. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  219. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  220. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  222. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  224. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  225. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  226. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  227. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  228. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  229. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  230. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  232. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  234. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  236. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  238. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  240. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  241. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  242. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  243. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  244. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  246. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  248. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  250. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  252. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  254. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  256. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  258. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  260. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  262. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  264. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  266. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  268. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  270. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  272. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  276. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  277. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  278. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  279. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  280. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  281. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  282. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  283. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  284. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -294
  285. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  286. package/contracts/authorization/Authorization.sol +218 -0
  287. package/contracts/authorization/IAccess.sol +48 -0
  288. package/contracts/{shared → authorization}/IAccessAdmin.sol +34 -60
  289. package/contracts/authorization/IAuthorization.sol +54 -0
  290. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  291. package/contracts/{registry → authorization}/IServiceAuthorization.sol +7 -4
  292. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  293. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -14
  294. package/contracts/distribution/BasicDistribution.sol +138 -0
  295. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  296. package/contracts/distribution/Distribution.sol +144 -110
  297. package/contracts/distribution/DistributionService.sol +71 -31
  298. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  299. package/contracts/distribution/IDistributionComponent.sol +25 -39
  300. package/contracts/distribution/IDistributionService.sol +17 -1
  301. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  302. package/contracts/instance/IInstance.sol +8 -9
  303. package/contracts/instance/IInstanceService.sol +13 -18
  304. package/contracts/instance/Instance.sol +61 -70
  305. package/contracts/instance/InstanceAdmin.sol +202 -267
  306. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  307. package/contracts/instance/InstanceReader.sol +22 -9
  308. package/contracts/instance/InstanceService.sol +74 -70
  309. package/contracts/instance/InstanceServiceManager.sol +2 -6
  310. package/contracts/instance/InstanceStore.sol +13 -5
  311. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  312. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  313. package/contracts/instance/module/IComponents.sol +0 -1
  314. package/contracts/instance/module/IDistribution.sol +0 -1
  315. package/contracts/oracle/BasicOracle.sol +48 -0
  316. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  317. package/contracts/oracle/IOracle.sol +16 -0
  318. package/contracts/oracle/IOracleComponent.sol +2 -1
  319. package/contracts/oracle/Oracle.sol +72 -51
  320. package/contracts/oracle/OracleServiceManager.sol +2 -5
  321. package/contracts/pool/BasicPool.sol +164 -0
  322. package/contracts/pool/BasicPoolAuthorization.sol +55 -0
  323. package/contracts/pool/BundleService.sol +72 -27
  324. package/contracts/pool/BundleServiceManager.sol +2 -5
  325. package/contracts/pool/IBundleService.sol +14 -0
  326. package/contracts/pool/IPoolComponent.sol +6 -60
  327. package/contracts/pool/Pool.sol +160 -131
  328. package/contracts/pool/PoolService.sol +12 -30
  329. package/contracts/pool/PoolServiceManager.sol +2 -5
  330. package/contracts/product/ApplicationService.sol +12 -36
  331. package/contracts/product/ApplicationServiceManager.sol +2 -2
  332. package/contracts/product/BasicProduct.sol +52 -0
  333. package/contracts/product/BasicProductAuthorization.sol +43 -0
  334. package/contracts/product/ClaimService.sol +7 -32
  335. package/contracts/product/ClaimServiceManager.sol +2 -2
  336. package/contracts/product/IPolicyService.sol +2 -0
  337. package/contracts/product/IProductComponent.sol +7 -9
  338. package/contracts/product/PolicyService.sol +28 -4
  339. package/contracts/product/PolicyServiceManager.sol +2 -5
  340. package/contracts/product/PricingServiceManager.sol +2 -5
  341. package/contracts/product/Product.sol +112 -88
  342. package/contracts/product/ProductService.sol +7 -32
  343. package/contracts/product/ProductServiceManager.sol +2 -5
  344. package/contracts/registry/IRegistry.sol +26 -16
  345. package/contracts/registry/IRegistryService.sol +6 -6
  346. package/contracts/registry/Registry.sol +85 -85
  347. package/contracts/registry/RegistryAdmin.sol +118 -86
  348. package/contracts/registry/RegistryService.sol +4 -18
  349. package/contracts/registry/RegistryServiceManager.sol +2 -2
  350. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  351. package/contracts/registry/ReleaseRegistry.sol +485 -0
  352. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  353. package/contracts/registry/TokenRegistry.sol +2 -2
  354. package/contracts/shared/Component.sol +13 -14
  355. package/contracts/shared/ComponentService.sol +102 -68
  356. package/contracts/shared/ComponentServiceManager.sol +2 -2
  357. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  358. package/contracts/shared/IComponentService.sol +15 -9
  359. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  360. package/contracts/shared/IKeyValueStore.sol +1 -0
  361. package/contracts/shared/ILifecycle.sol +1 -2
  362. package/contracts/shared/IService.sol +1 -1
  363. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  364. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  365. package/contracts/shared/KeyValueStore.sol +6 -2
  366. package/contracts/shared/Lifecycle.sol +16 -69
  367. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  368. package/contracts/shared/NftOwnable.sol +2 -2
  369. package/contracts/shared/PolicyHolder.sol +2 -5
  370. package/contracts/shared/Service.sol +3 -4
  371. package/contracts/staking/IStaking.sol +1 -2
  372. package/contracts/staking/IStakingService.sol +12 -5
  373. package/contracts/staking/Staking.sol +20 -17
  374. package/contracts/staking/StakingLifecycle.sol +23 -0
  375. package/contracts/staking/StakingManager.sol +2 -6
  376. package/contracts/staking/StakingReader.sol +12 -16
  377. package/contracts/staking/StakingServiceManager.sol +2 -2
  378. package/contracts/staking/StakingStore.sol +15 -23
  379. package/contracts/type/Amount.sol +12 -5
  380. package/contracts/type/ObjectType.sol +37 -7
  381. package/contracts/type/Referral.sol +1 -0
  382. package/contracts/type/RoleId.sol +55 -82
  383. package/contracts/type/UFixed.sol +34 -9
  384. package/contracts/type/Version.sol +3 -1
  385. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  386. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  387. package/package.json +6 -3
  388. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  389. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  390. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  391. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  392. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  393. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  394. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  395. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  396. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  397. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  398. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -166
  399. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  400. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1554
  401. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  402. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  403. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  404. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  405. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  406. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  407. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  408. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  409. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  410. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  411. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  412. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  413. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  414. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  415. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  416. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  417. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  418. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  419. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  420. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  421. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  422. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  423. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  424. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  425. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  426. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  427. package/contracts/registry/ReleaseManager.sol +0 -521
  428. package/contracts/shared/AccessManagerCustom.sol +0 -741
  429. package/contracts/shared/AccessManagerExtended.sol +0 -481
  430. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  431. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  432. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  433. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  434. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  435. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  436. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -8,12 +8,12 @@ import {InitializableCustom} from "../shared/InitializableCustom.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
19
 
@@ -27,6 +27,8 @@ import {RegistryAdmin} from "./RegistryAdmin.sol";
27
27
  // 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
28
28
  // 4) state object by regular service (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
33
  InitializableCustom,
32
34
  IRegistry
@@ -58,24 +60,31 @@ contract Registry is
58
60
 
59
61
  address public _tokenRegistryAddress;
60
62
  address public _stakingAddress;
61
- ReleaseManager public _releaseManager;
62
-
63
+ ReleaseRegistry public _releaseRegistry;
64
+
65
+ // TODO
66
+ // 1). Registry and ReleaseRegistry must be treated as whole single entity.
67
+ // But current limitations of EVM does not allow it -> require it to be splitted
68
+ // 2). Keep onlyReleaseRegistry modifier
69
+ // 3). Delete onlyRegistryService in favor of restricted
70
+ // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
63
71
  modifier onlyRegistryService() {
64
- if(!_releaseManager.isActiveRegistryService(msg.sender)) {
72
+ if(!_releaseRegistry.isActiveRegistryService(msg.sender)) {
65
73
  revert ErrorRegistryCallerNotRegistryService();
66
74
  }
67
75
  _;
68
76
  }
69
77
 
70
78
 
71
- modifier onlyReleaseManager() {
72
- if(msg.sender != address(_releaseManager)) {
73
- revert ErrorRegistryCallerNotReleaseManager();
79
+ modifier onlyReleaseRegistry() {
80
+ if(msg.sender != address(_releaseRegistry)) {
81
+ revert ErrorRegistryCallerNotReleaseRegistry();
74
82
  }
75
83
  _;
76
84
  }
77
85
 
78
-
86
+ /// @dev Creates the registry contract and populates it with the protocol and registry objects.
87
+ /// Internally deploys the ChainNft contract.
79
88
  constructor(RegistryAdmin admin)
80
89
  InitializableCustom()
81
90
  {
@@ -92,91 +101,98 @@ contract Registry is
92
101
  }
93
102
 
94
103
 
95
- /// @dev wires release manager and token to registry (this contract).
96
- /// MUST be called by release manager.
104
+ /// @dev Wires release registry and token to registry (this contract).
105
+ /// MUST be called by release registry.
97
106
  function initialize(
98
- address releaseManager,
107
+ address releaseRegistry,
99
108
  address tokenRegistry,
100
109
  address staking
101
110
  )
102
111
  external
103
112
  initializer()
104
113
  {
105
- _releaseManager = ReleaseManager(releaseManager);
114
+ _releaseRegistry = ReleaseRegistry(releaseRegistry);
106
115
  _tokenRegistryAddress = tokenRegistry;
107
116
  _stakingAddress = staking;
108
117
 
109
118
  _stakingNftId = _registerStaking();
110
119
  }
111
120
 
121
+ /// @inheritdoc IRegistry
122
+ function register(ObjectInfo memory info)
123
+ external
124
+ onlyRegistryService
125
+ returns(NftId nftId)
126
+ {
127
+ ObjectType objectType = info.objectType;
128
+ ObjectType parentType = _info[info.parentNftId].objectType;
129
+
130
+ // check type combinations for core objects
131
+ if(info.objectAddress == address(0)) {
132
+ if(_coreObjectCombinations[objectType][parentType] == false) {
133
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
134
+ }
135
+ }
136
+ // check type combinations for contract objects
137
+ else {
138
+ if(_coreContractCombinations[objectType][parentType] == false) {
139
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
140
+ }
141
+ }
142
+
143
+ nftId = _register(info);
144
+ }
145
+
146
+
147
+ /// @inheritdoc IRegistry
112
148
  function registerService(
113
149
  ObjectInfo memory info,
114
150
  VersionPart version,
115
151
  ObjectType domain
116
152
  )
117
153
  external
118
- onlyReleaseManager
154
+ onlyReleaseRegistry
119
155
  returns(NftId nftId)
120
156
  {
157
+ // check service address is defined
121
158
  address service = info.objectAddress;
122
- /* must be guaranteed by release manager
123
159
  if(service == address(0)) {
124
- revert();
160
+ revert ErrorRegistryServiceAddressZero();
125
161
  }
126
162
 
163
+ // check version is defined
127
164
  if(version.eqz()) {
128
- revert();
165
+ revert ErrorRegistryServiceVersionZero();
129
166
  }
130
167
 
131
- if(info.objectType != SERVICE()) {
132
- revert();
133
- }
134
- if(info.parentType != REGISTRY()) {
135
- revert();
136
- }
137
- info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
138
- */
139
-
168
+ // check domain is defined
140
169
  if(domain.eqz()) {
141
170
  revert ErrorRegistryDomainZero(service);
142
171
  }
143
172
 
144
- if(_service[version][domain] > address(0)) {
173
+ // check contract has not already been registered
174
+ if(_service[version][domain] != address(0)) {
145
175
  revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
146
176
  }
147
-
148
- _service[version][domain] = service;
149
177
 
178
+ // check service has proper type
179
+ if(info.objectType != SERVICE()) {
180
+ revert ErrorRegistryNotService(service, info.objectType);
181
+ }
182
+
183
+ // check that parent has registry type
184
+ if(info.parentNftId != _registryNftId) {
185
+ revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
186
+ }
187
+
188
+ _service[version][domain] = service;
150
189
  nftId = _register(info);
151
190
 
152
191
  emit LogServiceRegistration(version, domain);
153
192
  }
154
193
 
155
- function register(ObjectInfo memory info)
156
- external
157
- onlyRegistryService
158
- returns(NftId nftId)
159
- {
160
- ObjectType objectType = info.objectType;
161
- ObjectType parentType = _info[info.parentNftId].objectType;
162
-
163
- // only valid core types combinations
164
- if(info.objectAddress == address(0))
165
- {
166
- if(_coreObjectCombinations[objectType][parentType] == false) {
167
- revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
168
- }
169
- }
170
- else
171
- {
172
- if(_coreContractCombinations[objectType][parentType] == false) {
173
- revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
174
- }
175
- }
176
-
177
- nftId = _register(info);
178
- }
179
194
 
195
+ /// @inheritdoc IRegistry
180
196
  function registerWithCustomType(ObjectInfo memory info)
181
197
  external
182
198
  onlyRegistryService
@@ -191,7 +207,6 @@ contract Registry is
191
207
 
192
208
  if(
193
209
  parentType == PROTOCOL() ||
194
- parentType == REGISTRY() ||
195
210
  parentType == SERVICE()
196
211
  ) {
197
212
  revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
@@ -203,21 +218,21 @@ contract Registry is
203
218
 
204
219
  /// @dev earliest GIF major version
205
220
  function getInitialVersion() external view returns (VersionPart) {
206
- return _releaseManager.getInitialVersion();
221
+ return _releaseRegistry.getInitialVersion();
207
222
  }
208
223
 
209
224
  /// @dev next GIF release version to be released
210
225
  function getNextVersion() external view returns (VersionPart) {
211
- return _releaseManager.getNextVersion();
226
+ return _releaseRegistry.getNextVersion();
212
227
  }
213
228
 
214
229
  /// @dev latest active GIF release version
215
230
  function getLatestVersion() external view returns (VersionPart) {
216
- return _releaseManager.getLatestVersion();
231
+ return _releaseRegistry.getLatestVersion();
217
232
  }
218
233
 
219
234
  function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
220
- return _releaseManager.getReleaseInfo(version);
235
+ return _releaseRegistry.getReleaseInfo(version);
221
236
  }
222
237
 
223
238
  function getObjectCount() external view returns (uint256) {
@@ -271,7 +286,7 @@ contract Registry is
271
286
 
272
287
  function isActiveRelease(VersionPart version) external view returns (bool)
273
288
  {
274
- return _releaseManager.isActiveRelease(version);
289
+ return _releaseRegistry.isActiveRelease(version);
275
290
  }
276
291
 
277
292
  function getStakingAddress() external view returns (address staking) {
@@ -292,12 +307,8 @@ contract Registry is
292
307
  service = _service[releaseVersion][serviceDomain];
293
308
  }
294
309
 
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);
310
+ function getReleaseRegistryAddress() external view returns (address) {
311
+ return address(_releaseRegistry);
301
312
  }
302
313
 
303
314
  function getChainNftAddress() external view override returns (address) {
@@ -329,7 +340,6 @@ contract Registry is
329
340
  // Internals
330
341
 
331
342
  /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
332
- // TODO registration of precompile addresses
333
343
  function _register(ObjectInfo memory info)
334
344
  internal
335
345
  returns(NftId nftId)
@@ -516,22 +526,18 @@ contract Registry is
516
526
  });
517
527
 
518
528
  _nftIdByAddress[_stakingAddress] = stakingNftId;
529
+
519
530
  // reverts if nftId was already minted
520
531
  _chainNft.mint(stakingOwner, stakingId);
521
532
  }
522
533
 
523
534
  /// @dev defines which object - parent types relations are allowed to register
524
- // IMPORTANT:
525
- // 1) EACH object type MUST have only one parent type across ALL mappings
526
- // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
527
- // 3) DO NOT use REGISTRY as object type
528
- // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
535
+ /// EACH object type MUST have only one parent type across ALL mappings
529
536
  function _setupValidCoreTypesAndCombinations()
530
537
  private
531
538
  {
532
539
  _coreTypes[REGISTRY()] = true;
533
540
  _coreTypes[SERVICE()] = true;
534
- _coreTypes[TOKEN()] = true;
535
541
  _coreTypes[INSTANCE()] = true;
536
542
  _coreTypes[PRODUCT()] = true;
537
543
  _coreTypes[POOL()] = true;
@@ -543,28 +549,22 @@ contract Registry is
543
549
  _coreTypes[STAKING()] = true;
544
550
  _coreTypes[STAKE()] = true;
545
551
 
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???
552
+ // only global registry allowed to register registry (after initialization)
553
+ if(block.chainid == 1) {
554
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true;
557
555
  }
556
+
557
+ // contracts with registry parent
558
558
  _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
559
- _coreContractCombinations[TOKEN()][REGISTRY()] = true;
560
- //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
561
559
  _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
562
560
 
561
+ // components with instance parent
563
562
  _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
564
563
  _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
565
564
  _coreContractCombinations[ORACLE()][INSTANCE()] = true;
566
565
  _coreContractCombinations[POOL()][INSTANCE()] = true;
567
566
 
567
+ // objects with coponent parents
568
568
  _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
569
569
  _coreObjectCombinations[POLICY()][PRODUCT()] = true;
570
570
  _coreObjectCombinations[BUNDLE()][POOL()] = true;
@@ -1,14 +1,14 @@
1
1
  // SPDX-License-Identifier: UNLICENSED
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessAdmin} from "../shared/AccessAdmin.sol";
5
- import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
4
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
5
+ import {IAccess} from "../authorization/IAccess.sol";
6
6
  import {IRegistry} from "./IRegistry.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
- import {IServiceAuthorization} from "./IServiceAuthorization.sol";
8
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
9
9
  import {IStaking} from "../staking/IStaking.sol";
10
10
  import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
11
- import {ReleaseManager} from "./ReleaseManager.sol";
11
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
12
12
  import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
13
  import {StakingStore} from "../staking/StakingStore.sol";
14
14
  import {STAKING} from "../type/ObjectType.sol";
@@ -38,17 +38,21 @@ contract RegistryAdmin is
38
38
 
39
39
  string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
40
40
  string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
41
- string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
42
41
  string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
42
+ string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
43
+ string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
44
+ string public constant STAKING_ROLE_NAME = "StakingRole";
43
45
 
44
- string public constant RELEASE_MANAGER_TARGET_NAME = "ReleaseManagerTarget";
45
- string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistryTarget";
46
- string public constant STAKING_TARGET_NAME = "StakingTarget";
47
- string public constant STAKING_STORE_TARGET_NAME = "StakingStoreTarget";
46
+ string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
47
+ string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
48
+ string public constant STAKING_TARGET_NAME = "Staking";
49
+ string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
50
+
51
+ uint8 public constant MAX_NUM_RELEASES = 99;
48
52
 
49
53
  mapping(address service => VersionPart majorVersion) private _ServiceRelease;
50
54
 
51
- address private _releaseManager;
55
+ address private _releaseRegistry;
52
56
  address private _tokenRegistry;
53
57
  address private _staking;
54
58
  address private _stakingStore;
@@ -67,19 +71,19 @@ contract RegistryAdmin is
67
71
  if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); }
68
72
  else { _setupCompleted = true; }
69
73
 
70
- _releaseManager = registry.getReleaseManagerAddress();
74
+ _releaseRegistry = registry.getReleaseRegistryAddress();
71
75
  _tokenRegistry = registry.getTokenRegistryAddress();
72
76
  _staking = registry.getStakingAddress();
73
77
  _stakingStore = address(
74
78
  IStaking(_staking).getStakingStore());
75
79
 
76
80
  // at this moment all registry contracts are deployed and fully intialized
77
- _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME);
81
+ _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME, true, false);
78
82
 
79
83
  _setupGifAdminRole(gifAdmin);
80
84
  _setupGifManagerRole(gifManager);
81
85
 
82
- _setupReleaseManager();
86
+ _setupReleaseRegistry();
83
87
  _setupStaking();
84
88
  }
85
89
 
@@ -112,50 +116,39 @@ contract RegistryAdmin is
112
116
  function _createServiceTargetAndRole(IService service)
113
117
  private
114
118
  {
115
- ObjectType domain = service.getDomain();
116
- string memory baseName = ObjectTypeLib.toName(domain);
119
+ ObjectType serviceDomain = service.getDomain();
120
+ string memory baseName = ObjectTypeLib.toName(serviceDomain);
117
121
  VersionPart version = service.getVersion().toMajorPart();
118
122
  uint256 versionInt = version.toInt();
119
- string memory versionName = "_v0";
120
- string memory versionNumber = ObjectTypeLib.toString(versionInt);
121
-
122
- if (versionInt >= 10) {
123
- versionName = "_v";
124
- }
125
123
 
126
124
  // create service target
127
- string memory serviceTargetName = string(
128
- abi.encodePacked(
129
- baseName,
130
- "Service",
131
- versionName,
132
- versionNumber));
125
+ string memory serviceTargetName = ObjectTypeLib.toVersionedName(
126
+ baseName, "Service", versionInt);
133
127
 
134
128
  _createTarget(
135
129
  address(service),
136
- serviceTargetName);
130
+ serviceTargetName,
131
+ true,
132
+ false);
137
133
 
138
134
  // create service role
139
- string memory serviceRoleName = string(
140
- abi.encodePacked(
141
- baseName,
142
- "ServiceRole",
143
- versionName,
144
- versionNumber));
145
-
146
- RoleId roleId = RoleIdLib.roleForTypeAndVersion(
147
- domain,
135
+ RoleId serviceRoleId = RoleIdLib.roleForTypeAndVersion(
136
+ serviceDomain,
148
137
  version);
149
138
 
150
139
  _createRole(
151
- roleId,
152
- ADMIN_ROLE(),
153
- serviceRoleName,
154
- 1, // service roles must only be given to this unique service
155
- true); // it must not be possible to remove this role once granted
140
+ serviceRoleId,
141
+ toRole({
142
+ adminRoleId: ADMIN_ROLE(),
143
+ roleType: RoleType.Contract,
144
+ maxMemberCount: 1,
145
+ name: ObjectTypeLib.toVersionedName(
146
+ baseName,
147
+ "ServiceRole",
148
+ versionInt)}));
156
149
 
157
150
  _grantRoleToAccount(
158
- roleId,
151
+ serviceRoleId,
159
152
  address(service));
160
153
  }
161
154
 
@@ -186,7 +179,7 @@ contract RegistryAdmin is
186
179
  }
187
180
 
188
181
  // get authorized functions for authorized domain
189
- IAccessAdmin.Function[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
182
+ IAccess.FunctionInfo[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
190
183
  serviceDomain,
191
184
  authorizedDomain);
192
185
 
@@ -218,27 +211,40 @@ contract RegistryAdmin is
218
211
  //--- private functions -------------------------------------------------//
219
212
 
220
213
  function _setupGifAdminRole(address gifAdmin) private {
221
- // TODO decide on max member count
222
- _createRole(GIF_ADMIN_ROLE(), getAdminRole(), GIF_ADMIN_ROLE_NAME, 2, false);
223
- _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
224
-
225
- // for ReleaseManager
226
- Function[] memory functions;
227
- functions = new Function[](2);
228
- functions[0] = toFunction(ReleaseManager.createNextRelease.selector, "createNextRelease");
229
- functions[1] = toFunction(ReleaseManager.activateNextRelease.selector, "activateNextRelease");
230
- _authorizeTargetFunctions(_releaseManager, GIF_ADMIN_ROLE(), functions);
214
+
215
+ _createRole(
216
+ GIF_ADMIN_ROLE(),
217
+ toRole({
218
+ adminRoleId: ADMIN_ROLE(),
219
+ roleType: RoleType.Gif,
220
+ maxMemberCount: 2, // TODO decide on max member count
221
+ name: GIF_ADMIN_ROLE_NAME}));
222
+
223
+ // for ReleaseRegistry
224
+ FunctionInfo[] memory functions;
225
+ functions = new FunctionInfo[](4);
226
+ functions[0] = toFunction(ReleaseRegistry.createNextRelease.selector, "createNextRelease");
227
+ functions[1] = toFunction(ReleaseRegistry.activateNextRelease.selector, "activateNextRelease");
228
+ functions[2] = toFunction(ReleaseRegistry.pauseRelease.selector, "pauseRelease");
229
+ functions[3] = toFunction(ReleaseRegistry.unpauseRelease.selector, "unpauseRelease");
230
+ _authorizeTargetFunctions(_releaseRegistry, GIF_ADMIN_ROLE(), functions);
231
231
 
232
- // for Staking
232
+ _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
233
233
  }
234
234
 
235
235
  function _setupGifManagerRole(address gifManager) private {
236
- _createRole(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE(), GIF_MANAGER_ROLE_NAME, 1, false);
237
- _grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
236
+
237
+ _createRole(
238
+ GIF_MANAGER_ROLE(),
239
+ toRole({
240
+ adminRoleId: ADMIN_ROLE(),
241
+ roleType: RoleType.Gif,
242
+ maxMemberCount: 1,
243
+ name: GIF_MANAGER_ROLE_NAME}));
238
244
 
239
245
  // for TokenRegistry
240
- Function[] memory functions;
241
- functions = new Function[](5);
246
+ FunctionInfo[] memory functions;
247
+ functions = new FunctionInfo[](5);
242
248
  functions[0] = toFunction(TokenRegistry.registerToken.selector, "registerToken");
243
249
  functions[1] = toFunction(TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
244
250
  functions[2] = toFunction(TokenRegistry.setActive.selector, "setActive");
@@ -247,42 +253,55 @@ contract RegistryAdmin is
247
253
  functions[4] = toFunction(TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
248
254
  _authorizeTargetFunctions(_tokenRegistry, GIF_MANAGER_ROLE(), functions);
249
255
 
250
- // for ReleaseManager
251
- functions = new Function[](2);
252
- functions[0] = toFunction(ReleaseManager.prepareNextRelease.selector, "prepareNextRelease");
253
- functions[1] = toFunction(ReleaseManager.registerService.selector, "registerService");
254
- _authorizeTargetFunctions(_releaseManager, GIF_MANAGER_ROLE(), functions);
256
+ // for ReleaseRegistry
257
+ functions = new FunctionInfo[](2);
258
+ functions[0] = toFunction(ReleaseRegistry.prepareNextRelease.selector, "prepareNextRelease");
259
+ functions[1] = toFunction(ReleaseRegistry.registerService.selector, "registerService");
260
+ _authorizeTargetFunctions(_releaseRegistry, GIF_MANAGER_ROLE(), functions);
255
261
 
256
- // for Staking
262
+ _grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
257
263
  }
258
264
 
259
265
 
260
- function _setupReleaseManager() private {
261
- _createTarget(_releaseManager, RELEASE_MANAGER_TARGET_NAME);
266
+ function _setupReleaseRegistry() private {
262
267
 
263
- RoleId releaseManagerRoleId = RoleIdLib.roleForType(RELEASE());
264
- _createRole(releaseManagerRoleId, ADMIN_ROLE(), RELEASE_MANAGER_TARGET_NAME, 1, true);
265
- _grantRoleToAccount(releaseManagerRoleId, _releaseManager);
268
+ _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, true, false);
266
269
 
267
- Function[] memory functions;
268
- functions = new Function[](2);
270
+ RoleId releaseRegistryRoleId = RoleIdLib.roleForType(RELEASE());
271
+ _createRole(
272
+ releaseRegistryRoleId,
273
+ toRole({
274
+ adminRoleId: ADMIN_ROLE(),
275
+ roleType: RoleType.Contract,
276
+ maxMemberCount: 1,
277
+ name: RELEASE_REGISTRY_ROLE_NAME}));
278
+
279
+ FunctionInfo[] memory functions;
280
+ functions = new FunctionInfo[](2);
269
281
  functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
270
282
  functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
271
- _authorizeTargetFunctions(address(this), releaseManagerRoleId, functions);
283
+ _authorizeTargetFunctions(address(this), releaseRegistryRoleId, functions);
284
+
285
+ _grantRoleToAccount(releaseRegistryRoleId, _releaseRegistry);
272
286
  }
273
287
 
274
288
 
275
289
  function _setupStaking() private {
276
- _createTarget(_staking, STAKING_TARGET_NAME);
277
- _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME);
278
-
290
+ _createTarget(_staking, STAKING_TARGET_NAME, true, false);
291
+ _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
279
292
 
280
293
  // staking function authorization for staking service
281
294
  RoleId stakingServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(STAKING());
282
- _createRole(stakingServiceRoleId, ADMIN_ROLE(), STAKING_SERVICE_ROLE_NAME, 1, true);
283
-
284
- Function[] memory functions;
285
- functions = new Function[](13);
295
+ _createRole(
296
+ stakingServiceRoleId,
297
+ toRole({
298
+ adminRoleId: ADMIN_ROLE(),
299
+ roleType: RoleType.Contract,
300
+ maxMemberCount: MAX_NUM_RELEASES,
301
+ name: STAKING_SERVICE_ROLE_NAME}));
302
+
303
+ FunctionInfo[] memory functions;
304
+ functions = new FunctionInfo[](13);
286
305
  functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
287
306
  functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
288
307
  functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
@@ -300,20 +319,31 @@ contract RegistryAdmin is
300
319
 
301
320
  // staking function authorization for pool service
302
321
  RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
303
- _createRole(poolServiceRoleId, ADMIN_ROLE(), POOL_SERVICE_ROLE_NAME, 1, true);
322
+ _createRole(
323
+ poolServiceRoleId,
324
+ toRole({
325
+ adminRoleId: ADMIN_ROLE(),
326
+ roleType: RoleType.Contract,
327
+ maxMemberCount: MAX_NUM_RELEASES,
328
+ name: POOL_SERVICE_ROLE_NAME}));
304
329
 
305
330
  // staking function authorizations
306
- functions = new Function[](2);
331
+ functions = new FunctionInfo[](2);
307
332
  functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
308
333
  functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
309
334
  _authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
310
335
 
311
336
  // staking store function authorizations
312
337
  RoleId stakingRoleId = RoleIdLib.roleForType(STAKING());
313
- _createRole(stakingRoleId, ADMIN_ROLE(), STAKING_TARGET_NAME, 1, true);
314
- _grantRoleToAccount(stakingRoleId, _staking);
315
-
316
- functions = new Function[](14);
338
+ _createRole(
339
+ stakingRoleId,
340
+ toRole({
341
+ adminRoleId: ADMIN_ROLE(),
342
+ roleType: RoleType.Contract,
343
+ maxMemberCount: 1,
344
+ name: STAKING_ROLE_NAME}));
345
+
346
+ functions = new FunctionInfo[](14);
317
347
  functions[0] = toFunction(StakingStore.setStakingRate.selector, "setStakingRate");
318
348
  functions[1] = toFunction(StakingStore.createTarget.selector, "createTarget");
319
349
  functions[2] = toFunction(StakingStore.updateTarget.selector, "updateTarget");
@@ -329,5 +359,7 @@ contract RegistryAdmin is
329
359
  functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
330
360
  functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
331
361
  _authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
362
+
363
+ _grantRoleToAccount(stakingRoleId, _staking);
332
364
  }
333
365
  }