@etherisc/gif-next 0.0.2-edd8f00-238 → 0.0.2-edff8e2-153

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 (438) hide show
  1. package/README.md +37 -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 +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 +10 -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 +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 +132 -140
  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 +79 -207
  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 +1 -1
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +6 -6
  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 +1470 -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 +437 -61
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +119 -43
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +224 -0
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -252
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +189 -54
  102. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -353
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +289 -90
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +68 -36
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  114. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  116. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  118. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  120. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +86 -1
  124. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  126. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
  127. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  129. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +169 -52
  130. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +59 -43
  132. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  133. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  134. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  136. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  137. package/artifacts/contracts/product/Product.sol/Product.json +32 -153
  138. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  139. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  140. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  142. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  143. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  144. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  145. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  146. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  147. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  148. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  149. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  150. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  151. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  152. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
  153. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  155. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  157. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +6 -29
  159. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  160. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  161. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +24 -16
  163. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  165. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -86
  168. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
  170. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  177. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  185. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  186. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
  188. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  189. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +4 -77
  190. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  191. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +0 -23
  192. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  193. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  194. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  196. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  197. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  198. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  200. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  202. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  203. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  205. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  206. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  207. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
  209. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  210. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  211. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +6 -29
  213. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  215. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  216. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  217. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  219. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  221. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +135 -153
  223. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  224. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  225. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  226. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  227. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  228. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  229. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  231. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  233. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  235. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  237. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  238. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  239. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  241. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  242. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  243. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  245. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  247. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  249. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  251. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  253. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  255. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  257. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  259. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  261. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  263. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  265. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  267. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  269. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  271. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  273. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  275. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  276. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  277. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  278. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  279. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  280. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  281. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  282. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  283. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  284. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  285. package/contracts/authorization/Authorization.sol +218 -0
  286. package/contracts/authorization/IAccess.sol +48 -0
  287. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  288. package/contracts/authorization/IAuthorization.sol +54 -0
  289. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  290. package/contracts/{registry → authorization}/IServiceAuthorization.sol +5 -5
  291. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  292. package/contracts/{registry → authorization}/ServiceAuthorization.sol +17 -17
  293. package/contracts/distribution/BasicDistribution.sol +138 -0
  294. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  295. package/contracts/distribution/Distribution.sol +144 -110
  296. package/contracts/distribution/DistributionService.sol +71 -31
  297. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  298. package/contracts/distribution/IDistributionComponent.sol +25 -39
  299. package/contracts/distribution/IDistributionService.sol +17 -1
  300. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  301. package/contracts/instance/IInstance.sol +8 -9
  302. package/contracts/instance/IInstanceService.sol +13 -18
  303. package/contracts/instance/Instance.sol +61 -70
  304. package/contracts/instance/InstanceAdmin.sol +202 -267
  305. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  306. package/contracts/instance/InstanceReader.sol +30 -9
  307. package/contracts/instance/InstanceService.sol +74 -70
  308. package/contracts/instance/InstanceServiceManager.sol +2 -6
  309. package/contracts/instance/InstanceStore.sol +7 -2
  310. package/contracts/instance/base/ObjectLifecycle.sol +55 -45
  311. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  312. package/contracts/instance/module/IBundle.sol +1 -1
  313. package/contracts/instance/module/IComponents.sol +1 -7
  314. package/contracts/instance/module/IDistribution.sol +0 -1
  315. package/contracts/mock/Dip.sol +1 -1
  316. package/contracts/oracle/BasicOracle.sol +48 -0
  317. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  318. package/contracts/oracle/IOracle.sol +16 -0
  319. package/contracts/oracle/IOracleComponent.sol +2 -1
  320. package/contracts/oracle/Oracle.sol +72 -51
  321. package/contracts/oracle/OracleServiceManager.sol +2 -5
  322. package/contracts/pool/BasicPool.sol +166 -0
  323. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  324. package/contracts/pool/BundleService.sol +182 -36
  325. package/contracts/pool/BundleServiceManager.sol +2 -5
  326. package/contracts/pool/IBundleService.sol +31 -4
  327. package/contracts/pool/IPoolComponent.sol +6 -60
  328. package/contracts/pool/IPoolService.sol +15 -16
  329. package/contracts/pool/Pool.sol +166 -137
  330. package/contracts/pool/PoolService.sol +157 -73
  331. package/contracts/pool/PoolServiceManager.sol +2 -5
  332. package/contracts/product/ApplicationService.sol +12 -36
  333. package/contracts/product/ApplicationServiceManager.sol +2 -2
  334. package/contracts/product/BasicProduct.sol +52 -0
  335. package/contracts/product/BasicProductAuthorization.sol +43 -0
  336. package/contracts/product/ClaimService.sol +7 -32
  337. package/contracts/product/ClaimServiceManager.sol +2 -2
  338. package/contracts/product/IPolicyService.sol +8 -2
  339. package/contracts/product/IProductComponent.sol +7 -9
  340. package/contracts/product/PolicyService.sol +72 -18
  341. package/contracts/product/PolicyServiceManager.sol +2 -5
  342. package/contracts/product/PricingServiceManager.sol +2 -5
  343. package/contracts/product/Product.sol +122 -88
  344. package/contracts/product/ProductService.sol +7 -32
  345. package/contracts/product/ProductServiceManager.sol +2 -5
  346. package/contracts/registry/IRegistry.sol +26 -16
  347. package/contracts/registry/IRegistryService.sol +6 -6
  348. package/contracts/registry/Registry.sol +81 -87
  349. package/contracts/registry/RegistryAdmin.sol +118 -86
  350. package/contracts/registry/RegistryService.sol +4 -18
  351. package/contracts/registry/RegistryServiceManager.sol +2 -2
  352. package/contracts/registry/ReleaseLifecycle.sol +8 -9
  353. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +97 -135
  354. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  355. package/contracts/registry/TokenRegistry.sol +2 -2
  356. package/contracts/shared/Component.sol +13 -14
  357. package/contracts/shared/ComponentService.sol +101 -70
  358. package/contracts/shared/ComponentServiceManager.sol +2 -2
  359. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  360. package/contracts/shared/IComponentService.sol +15 -9
  361. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  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 +1 -1
  366. package/contracts/shared/Lifecycle.sol +16 -10
  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 +5 -6
  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 +12 -22
  379. package/contracts/type/Amount.sol +12 -5
  380. package/contracts/type/Blocknumber.sol +7 -1
  381. package/contracts/type/ObjectType.sol +37 -7
  382. package/contracts/type/Referral.sol +1 -0
  383. package/contracts/type/RoleId.sol +55 -82
  384. package/contracts/type/Seconds.sol +13 -1
  385. package/contracts/type/Timestamp.sol +11 -1
  386. package/contracts/type/UFixed.sol +34 -9
  387. package/contracts/type/Version.sol +3 -1
  388. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  389. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  390. package/package.json +5 -3
  391. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  392. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  393. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  394. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  395. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  396. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  397. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  398. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  399. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1234
  400. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  401. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
  402. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  403. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  404. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  405. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  406. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  407. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  408. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  409. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  410. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  411. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  412. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  413. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  414. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  415. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  416. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  417. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  418. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  419. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  420. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  421. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  422. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  423. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  424. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  425. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  426. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  427. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  428. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  429. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  430. package/contracts/shared/AccessManagerCustom.sol +0 -741
  431. package/contracts/shared/AccessManagerExtended.sol +0 -481
  432. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  433. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  434. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  435. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  436. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  437. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  438. /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,30 +60,31 @@ contract Registry is
58
60
 
59
61
  address public _tokenRegistryAddress;
60
62
  address public _stakingAddress;
61
- ReleaseManager public _releaseManager;
63
+ ReleaseRegistry public _releaseRegistry;
62
64
 
63
65
  // TODO
64
- // 1). Registry and ReleaseManager must be treated as whole single entity.
66
+ // 1). Registry and ReleaseRegistry must be treated as whole single entity.
65
67
  // 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
+ // 2). Keep onlyReleaseRegistry modifier
69
+ // 3). Delete onlyRegistryService in favor of restricted
68
70
  // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
69
71
  modifier onlyRegistryService() {
70
- if(!_releaseManager.isActiveRegistryService(msg.sender)) {
72
+ if(!_releaseRegistry.isActiveRegistryService(msg.sender)) {
71
73
  revert ErrorRegistryCallerNotRegistryService();
72
74
  }
73
75
  _;
74
76
  }
75
77
 
76
78
 
77
- modifier onlyReleaseManager() {
78
- if(msg.sender != address(_releaseManager)) {
79
- revert ErrorRegistryCallerNotReleaseManager();
79
+ modifier onlyReleaseRegistry() {
80
+ if(msg.sender != address(_releaseRegistry)) {
81
+ revert ErrorRegistryCallerNotReleaseRegistry();
80
82
  }
81
83
  _;
82
84
  }
83
85
 
84
-
86
+ /// @dev Creates the registry contract and populates it with the protocol and registry objects.
87
+ /// Internally deploys the ChainNft contract.
85
88
  constructor(RegistryAdmin admin)
86
89
  InitializableCustom()
87
90
  {
@@ -98,91 +101,98 @@ contract Registry is
98
101
  }
99
102
 
100
103
 
101
- /// @dev wires release manager and token to registry (this contract).
102
- /// MUST be called by release manager.
104
+ /// @dev Wires release registry and token to registry (this contract).
105
+ /// MUST be called by release registry.
103
106
  function initialize(
104
- address releaseManager,
107
+ address releaseRegistry,
105
108
  address tokenRegistry,
106
109
  address staking
107
110
  )
108
111
  external
109
112
  initializer()
110
113
  {
111
- _releaseManager = ReleaseManager(releaseManager);
114
+ _releaseRegistry = ReleaseRegistry(releaseRegistry);
112
115
  _tokenRegistryAddress = tokenRegistry;
113
116
  _stakingAddress = staking;
114
117
 
115
118
  _stakingNftId = _registerStaking();
116
119
  }
117
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
118
148
  function registerService(
119
149
  ObjectInfo memory info,
120
150
  VersionPart version,
121
151
  ObjectType domain
122
152
  )
123
153
  external
124
- onlyReleaseManager
154
+ onlyReleaseRegistry
125
155
  returns(NftId nftId)
126
156
  {
157
+ // check service address is defined
127
158
  address service = info.objectAddress;
128
- /* must be guaranteed by release manager
129
159
  if(service == address(0)) {
130
- revert();
160
+ revert ErrorRegistryServiceAddressZero();
131
161
  }
132
162
 
163
+ // check version is defined
133
164
  if(version.eqz()) {
134
- revert();
165
+ revert ErrorRegistryServiceVersionZero();
135
166
  }
136
167
 
137
- if(info.objectType != SERVICE()) {
138
- revert();
139
- }
140
- if(info.parentType != REGISTRY()) {
141
- revert();
142
- }
143
- info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
144
- */
145
-
168
+ // check domain is defined
146
169
  if(domain.eqz()) {
147
170
  revert ErrorRegistryDomainZero(service);
148
171
  }
149
172
 
150
- if(_service[version][domain] > address(0)) {
173
+ // check contract has not already been registered
174
+ if(_service[version][domain] != address(0)) {
151
175
  revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
152
176
  }
153
-
154
- _service[version][domain] = service;
155
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;
156
189
  nftId = _register(info);
157
190
 
158
191
  emit LogServiceRegistration(version, domain);
159
192
  }
160
193
 
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
194
 
195
+ /// @inheritdoc IRegistry
186
196
  function registerWithCustomType(ObjectInfo memory info)
187
197
  external
188
198
  onlyRegistryService
@@ -197,7 +207,6 @@ contract Registry is
197
207
 
198
208
  if(
199
209
  parentType == PROTOCOL() ||
200
- parentType == REGISTRY() ||
201
210
  parentType == SERVICE()
202
211
  ) {
203
212
  revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
@@ -209,21 +218,21 @@ contract Registry is
209
218
 
210
219
  /// @dev earliest GIF major version
211
220
  function getInitialVersion() external view returns (VersionPart) {
212
- return _releaseManager.getInitialVersion();
221
+ return _releaseRegistry.getInitialVersion();
213
222
  }
214
223
 
215
224
  /// @dev next GIF release version to be released
216
225
  function getNextVersion() external view returns (VersionPart) {
217
- return _releaseManager.getNextVersion();
226
+ return _releaseRegistry.getNextVersion();
218
227
  }
219
228
 
220
229
  /// @dev latest active GIF release version
221
230
  function getLatestVersion() external view returns (VersionPart) {
222
- return _releaseManager.getLatestVersion();
231
+ return _releaseRegistry.getLatestVersion();
223
232
  }
224
233
 
225
234
  function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
226
- return _releaseManager.getReleaseInfo(version);
235
+ return _releaseRegistry.getReleaseInfo(version);
227
236
  }
228
237
 
229
238
  function getObjectCount() external view returns (uint256) {
@@ -277,7 +286,7 @@ contract Registry is
277
286
 
278
287
  function isActiveRelease(VersionPart version) external view returns (bool)
279
288
  {
280
- return _releaseManager.isActiveRelease(version);
289
+ return _releaseRegistry.isActiveRelease(version);
281
290
  }
282
291
 
283
292
  function getStakingAddress() external view returns (address staking) {
@@ -298,12 +307,8 @@ contract Registry is
298
307
  service = _service[releaseVersion][serviceDomain];
299
308
  }
300
309
 
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);
310
+ function getReleaseRegistryAddress() external view returns (address) {
311
+ return address(_releaseRegistry);
307
312
  }
308
313
 
309
314
  function getChainNftAddress() external view override returns (address) {
@@ -335,7 +340,6 @@ contract Registry is
335
340
  // Internals
336
341
 
337
342
  /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
338
- // TODO registration of precompile addresses
339
343
  function _register(ObjectInfo memory info)
340
344
  internal
341
345
  returns(NftId nftId)
@@ -522,22 +526,18 @@ contract Registry is
522
526
  });
523
527
 
524
528
  _nftIdByAddress[_stakingAddress] = stakingNftId;
529
+
525
530
  // reverts if nftId was already minted
526
531
  _chainNft.mint(stakingOwner, stakingId);
527
532
  }
528
533
 
529
534
  /// @dev defines which object - parent types relations are allowed to register
530
- // IMPORTANT:
531
- // 1) EACH object type MUST have only one parent type across ALL mappings
532
- // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
533
- // 3) DO NOT use REGISTRY as object type
534
- // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
535
+ /// EACH object type MUST have only one parent type across ALL mappings
535
536
  function _setupValidCoreTypesAndCombinations()
536
537
  private
537
538
  {
538
539
  _coreTypes[REGISTRY()] = true;
539
540
  _coreTypes[SERVICE()] = true;
540
- _coreTypes[TOKEN()] = true;
541
541
  _coreTypes[INSTANCE()] = true;
542
542
  _coreTypes[PRODUCT()] = true;
543
543
  _coreTypes[POOL()] = true;
@@ -549,28 +549,22 @@ contract Registry is
549
549
  _coreTypes[STAKING()] = true;
550
550
  _coreTypes[STAKE()] = true;
551
551
 
552
- uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
553
- if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
554
- // we are global registry
555
- // object is registry from different chain
556
- // parent is global registry, this contract
557
- _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
558
- //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
559
- } else {
560
- // we are not global registry
561
- // object is local registry, this contract
562
- // parent is global registry, object with 0 address or registry from mainnet???
552
+ // only global registry allowed to register registry (after initialization)
553
+ if(block.chainid == 1) {
554
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true;
563
555
  }
556
+
557
+ // contracts with registry parent
564
558
  _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
559
  _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
568
560
 
561
+ // components with instance parent
569
562
  _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
570
563
  _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
571
564
  _coreContractCombinations[ORACLE()][INSTANCE()] = true;
572
565
  _coreContractCombinations[POOL()][INSTANCE()] = true;
573
566
 
567
+ // objects with coponent parents
574
568
  _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
575
569
  _coreObjectCombinations[POLICY()][PRODUCT()] = true;
576
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
  }