@etherisc/gif-next 0.0.2-836e6e4-400 → 0.0.2-83e16a6-272

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +853 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +874 -257
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +147 -103
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +791 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +655 -43
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +654 -5
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +590 -235
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +524 -161
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  40. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
  41. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +875 -128
  44. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +122 -165
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +790 -437
  48. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +103 -176
  50. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +61 -97
  52. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -231
  54. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +331 -82
  56. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  57. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
  58. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +175 -155
  60. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  64. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +24 -13
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  76. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  78. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +394 -232
  80. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +308 -79
  82. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  84. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  86. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +441 -177
  88. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +328 -71
  90. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +187 -191
  92. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +157 -204
  94. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  95. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +151 -137
  96. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +184 -150
  98. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +125 -217
  100. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +16 -179
  102. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +16 -179
  104. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +384 -246
  106. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +339 -86
  108. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  109. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +209 -198
  110. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +305 -76
  112. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  113. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +209 -198
  114. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +305 -76
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -5
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +104 -201
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +112 -27
  124. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +18 -18
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +209 -238
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -81
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +70 -69
  132. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +151 -50
  134. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  135. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  136. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  137. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  139. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  140. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  141. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  143. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  144. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +48 -0
  145. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  146. package/artifacts/contracts/shared/IService.sol/IService.json +16 -179
  147. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  149. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  151. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  152. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  153. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  154. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  155. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  157. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  158. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  159. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Service.sol/Service.json +106 -160
  161. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  162. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  163. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  164. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  165. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  166. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  169. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  171. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestService.sol/TestService.json +127 -217
  173. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  176. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  177. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  178. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  182. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  188. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  190. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  192. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  195. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  203. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  209. package/contracts/components/Component.sol +241 -0
  210. package/contracts/components/Distribution.sol +209 -64
  211. package/contracts/components/IComponent.sol +54 -0
  212. package/contracts/components/IDistributionComponent.sol +59 -3
  213. package/contracts/components/IPoolComponent.sol +50 -29
  214. package/contracts/components/IProductComponent.sol +7 -3
  215. package/contracts/components/Pool.sol +135 -152
  216. package/contracts/components/Product.sol +114 -121
  217. package/contracts/instance/BundleManager.sol +7 -11
  218. package/contracts/instance/IInstance.sol +42 -12
  219. package/contracts/instance/IInstanceService.sol +23 -2
  220. package/contracts/instance/Instance.sol +84 -69
  221. package/contracts/instance/InstanceAccessManager.sol +31 -38
  222. package/contracts/instance/InstanceReader.sol +3 -25
  223. package/contracts/instance/InstanceService.sol +234 -58
  224. package/contracts/instance/InstanceServiceManager.sol +1 -1
  225. package/contracts/instance/ObjectManager.sol +7 -24
  226. package/contracts/instance/base/ComponentService.sol +134 -0
  227. package/contracts/instance/module/IAccess.sol +4 -5
  228. package/contracts/instance/module/IPolicy.sol +4 -2
  229. package/contracts/instance/module/ISetup.sol +5 -4
  230. package/contracts/instance/service/ApplicationService.sol +268 -0
  231. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  232. package/contracts/instance/service/BundleService.sol +49 -11
  233. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  234. package/contracts/instance/service/ClaimService.sol +151 -0
  235. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  236. package/contracts/instance/service/DistributionService.sol +206 -43
  237. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  238. package/contracts/instance/service/IApplicationService.sol +82 -0
  239. package/contracts/instance/service/IBundleService.sol +12 -3
  240. package/contracts/instance/service/IClaimService.sol +61 -0
  241. package/contracts/instance/service/IDistributionService.sol +53 -0
  242. package/contracts/instance/service/IPolicyService.sol +48 -46
  243. package/contracts/instance/service/PolicyService.sol +153 -182
  244. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  245. package/contracts/instance/service/PoolService.sol +24 -37
  246. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  247. package/contracts/instance/service/ProductService.sol +99 -34
  248. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  249. package/contracts/registry/IRegistry.sol +16 -8
  250. package/contracts/registry/IRegistryService.sol +19 -10
  251. package/contracts/registry/Registry.sol +120 -52
  252. package/contracts/registry/RegistryAccessManager.sol +31 -25
  253. package/contracts/registry/RegistryService.sol +94 -134
  254. package/contracts/registry/RegistryServiceManager.sol +13 -13
  255. package/contracts/registry/ReleaseManager.sol +94 -120
  256. package/contracts/registry/TokenRegistry.sol +19 -13
  257. package/contracts/shared/ERC165.sol +14 -12
  258. package/contracts/shared/INftOwnable.sol +11 -10
  259. package/contracts/shared/IPolicyHolder.sol +26 -0
  260. package/contracts/shared/IRegisterable.sol +4 -6
  261. package/contracts/shared/IRegistryLinked.sol +12 -0
  262. package/contracts/shared/IVersionable.sol +4 -47
  263. package/contracts/shared/NftOwnable.sol +66 -80
  264. package/contracts/shared/PolicyHolder.sol +81 -0
  265. package/contracts/shared/ProxyManager.sol +100 -25
  266. package/contracts/shared/Registerable.sol +14 -30
  267. package/contracts/shared/RegistryLinked.sol +48 -0
  268. package/contracts/shared/Service.sol +19 -19
  269. package/contracts/shared/Versionable.sol +4 -92
  270. package/contracts/test/TestRegisterable.sol +1 -1
  271. package/contracts/test/TestService.sol +1 -1
  272. package/contracts/types/ClaimId.sol +52 -0
  273. package/contracts/types/DistributorType.sol +2 -2
  274. package/contracts/types/ObjectType.sol +9 -5
  275. package/contracts/types/PayoutId.sol +54 -0
  276. package/contracts/types/RoleId.sol +5 -5
  277. package/package.json +3 -3
  278. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  279. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  280. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  281. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  282. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  283. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  284. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  285. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  286. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  287. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  288. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  289. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  290. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
  291. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  292. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  293. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  294. package/contracts/components/BaseComponent.sol +0 -148
  295. package/contracts/components/IBaseComponent.sol +0 -32
  296. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  297. package/contracts/instance/IInstanceBase.sol +0 -26
  298. package/contracts/instance/InstanceBase.sol +0 -41
  299. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  300. package/contracts/instance/base/IInstanceBase.sol +0 -23
  301. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  302. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  303. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -1,12 +1,11 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
4
5
 
5
6
  import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
6
7
  import {VersionPart} from "../types/Version.sol";
7
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
8
-
9
- import {ERC165} from "../shared/ERC165.sol";
8
+ import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
10
9
 
11
10
  import {ChainNft} from "./ChainNft.sol";
12
11
  import {IRegistry} from "./IRegistry.sol";
@@ -23,28 +22,29 @@ import {ReleaseManager} from "./ReleaseManager.sol";
23
22
  // 4) state object by regular service (POLICY, BUNDLE, STAKE)
24
23
 
25
24
  contract Registry is
26
- ERC165,
27
25
  IRegistry
28
26
  {
29
27
  address public constant NFT_LOCK_ADDRESS = address(0x1);
30
28
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
31
29
  string public constant EMPTY_URI = "";
32
30
 
33
- mapping(NftId nftId => ObjectInfo info) internal _info;
34
- mapping(address object => NftId nftId) internal _nftIdByAddress;
31
+ mapping(NftId nftId => ObjectInfo info) private _info;
32
+ mapping(address object => NftId nftId) private _nftIdByAddress;
33
+
34
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
35
35
 
36
- mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) _service;
36
+ mapping(ObjectType objectType => bool) private _coreTypes;
37
37
 
38
38
  mapping(ObjectType objectType => mapping(
39
- ObjectType parentType => bool)) internal _isValidContractCombination;
39
+ ObjectType parentType => bool)) private _coreContractCombinations;
40
40
 
41
41
  mapping(ObjectType objectType => mapping(
42
- ObjectType parentType => bool)) internal _isValidObjectCombination;
42
+ ObjectType parentType => bool)) private _coreObjectCombinations;
43
43
 
44
- NftId internal _registryNftId;
45
- ChainNft internal _chainNft;
44
+ NftId private _registryNftId;
45
+ ChainNft private _chainNft;
46
46
 
47
- ReleaseManager internal _releaseManager;
47
+ ReleaseManager private _releaseManager;
48
48
 
49
49
  modifier onlyRegistryService() {
50
50
  if(!_releaseManager.isActiveRegistryService(msg.sender)) {
@@ -65,16 +65,14 @@ contract Registry is
65
65
  _releaseManager = ReleaseManager(msg.sender);
66
66
 
67
67
  // deploy NFT
68
- _chainNft = new ChainNft(address(this));// adds 10kb to deployment size
68
+ _chainNft = new ChainNft(address(this));
69
69
 
70
70
  // initial registry setup
71
71
  _registerProtocol();
72
72
  _registerRegistry();
73
73
 
74
- // set object parent relations
75
- _setupValidObjectParentCombinations();
76
-
77
- _registerInterface(type(IRegistry).interfaceId);
74
+ // set object types and object parent relations
75
+ _setupValidCoreTypesAndCombinations();
78
76
  }
79
77
 
80
78
  function registerService(
@@ -90,7 +88,10 @@ contract Registry is
90
88
  if(info.objectType != SERVICE()) {
91
89
  revert();
92
90
  }
93
- info.initialOwner = NFT_LOCK_ADDRESS <- if services are access managed
91
+ if(info.parentType != REGISTRY()) {
92
+ revert();
93
+ }
94
+ info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
94
95
  */
95
96
 
96
97
  if(_service[version][domain] > address(0)) {
@@ -109,16 +110,59 @@ contract Registry is
109
110
  onlyRegistryService
110
111
  returns(NftId nftId)
111
112
  {
113
+ ObjectType objectType = info.objectType;
114
+ ObjectType parentType = _info[info.parentNftId].objectType;
115
+
116
+ // TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
112
117
  // no service registrations
113
- if(info.objectType == SERVICE()) {
118
+ if(objectType == SERVICE()) {
114
119
  revert ServiceRegistration();
115
120
  }
116
121
 
122
+ // only valid core types combinations
123
+ if(info.objectAddress == address(0))
124
+ {
125
+ if(_coreObjectCombinations[objectType][parentType] == false) {
126
+ revert InvalidTypesCombination(objectType, parentType);
127
+ }
128
+ }
129
+ else
130
+ {
131
+ if(_coreContractCombinations[objectType][parentType] == false) {
132
+ revert InvalidTypesCombination(objectType, parentType);
133
+ }
134
+ }
135
+
117
136
  nftId = _register(info);
118
137
  }
119
138
 
139
+ function registerWithCustomType(ObjectInfo memory info)
140
+ external
141
+ onlyRegistryService
142
+ returns(NftId nftId)
143
+ {
144
+ ObjectType objectType = info.objectType;
145
+ ObjectType parentType = _info[info.parentNftId].objectType;
146
+
147
+ if(_coreTypes[objectType]) {
148
+ revert CoreTypeRegistration();
149
+ }
150
+
151
+ if(
152
+
153
+ parentType == PROTOCOL() ||
154
+ parentType == REGISTRY() ||
155
+ parentType == SERVICE()
156
+ ) {
157
+ revert InvalidTypesCombination(objectType, parentType);
158
+ }
159
+
160
+ _register(info);
161
+ }
162
+
163
+
120
164
  /// @dev earliest GIF major version
121
- function getMajorVersionMin() external view returns (VersionPart) {
165
+ function getInitialVersion() external view returns (VersionPart) {
122
166
  return _releaseManager.getInitialVersion();
123
167
  }
124
168
 
@@ -129,17 +173,16 @@ contract Registry is
129
173
  // in this case we might want to have a period where the latest version is
130
174
  // in the process of being set up while the latest active version is 1 major release smaller
131
175
  /// @dev latest GIF major version (might not yet be active)
132
- function getMajorVersionMax() external view returns (VersionPart) {
176
+ function getNextVersion() external view returns (VersionPart) {
133
177
  return _releaseManager.getNextVersion();
134
178
  }
135
179
 
136
180
  /// @dev latest active GIF release version
137
- function getMajorVersion() external view returns (VersionPart) {
181
+ function getLatestVersion() external view returns (VersionPart) {
138
182
  return _releaseManager.getLatestVersion();
139
183
  }
140
184
 
141
- function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory)
142
- {
185
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
143
186
  return _releaseManager.getReleaseInfo(version);
144
187
  }
145
188
 
@@ -147,6 +190,10 @@ contract Registry is
147
190
  return _chainNft.totalSupply();
148
191
  }
149
192
 
193
+ function getReleaseManagerAddress() external view returns (address) {
194
+ return address(_releaseManager);
195
+ }
196
+
150
197
  function getNftId() external view returns (NftId nftId) {
151
198
  return _registryNftId;
152
199
  }
@@ -180,25 +227,43 @@ contract Registry is
180
227
  }
181
228
 
182
229
  function isRegisteredService(address object) external view override returns (bool) {
183
- return _nftIdByAddress[object].gtz() && _info[_nftIdByAddress[object]].objectType == SERVICE();
230
+ return _info[_nftIdByAddress[object]].objectType == SERVICE();
231
+ }
232
+
233
+ function isValidRelease(VersionPart version) external view returns (bool)
234
+ {
235
+ return _releaseManager.isValidRelease(version);
184
236
  }
185
237
 
186
238
  function getServiceAddress(
187
239
  ObjectType serviceDomain,
188
240
  VersionPart releaseVersion
189
- ) external view returns (address)
241
+ ) external view returns (address service)
190
242
  {
191
- return _service[releaseVersion][serviceDomain];
243
+ // TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
244
+ //if(_releaseManager.isValidRelease(releaseVersion)) {
245
+ service = _service[releaseVersion][serviceDomain];
246
+ //}
192
247
  }
193
248
 
194
- function getChainNft() external view override returns (ChainNft) {
195
- return _chainNft;
249
+ function getChainNftAddress() external view override returns (address) {
250
+ return address(_chainNft);
196
251
  }
197
252
 
198
253
  function getOwner() public view returns (address owner) {
199
254
  return ownerOf(address(this));
200
255
  }
201
256
 
257
+ // IERC165
258
+
259
+ function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
260
+ if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
261
+ return true;
262
+ }
263
+
264
+ return false;
265
+ }
266
+
202
267
  // Internals
203
268
 
204
269
  /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
@@ -239,11 +304,6 @@ contract Registry is
239
304
 
240
305
  if(info.objectAddress > address(0))
241
306
  {
242
- // parent is registered + object-parent types are valid
243
- if(_isValidContractCombination[objectType][parentType] == false) {
244
- revert InvalidTypesCombination(objectType, parentType);
245
- }
246
-
247
307
  address contractAddress = info.objectAddress;
248
308
 
249
309
  if(_nftIdByAddress[contractAddress].gtz()) {
@@ -252,12 +312,6 @@ contract Registry is
252
312
 
253
313
  _nftIdByAddress[contractAddress] = nftId;
254
314
  }
255
- else
256
- {
257
- if(_isValidObjectCombination[objectType][parentType] == false) {
258
- revert InvalidTypesCombination(objectType, parentType);
259
- }
260
- }
261
315
 
262
316
  emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
263
317
  }
@@ -370,27 +424,41 @@ contract Registry is
370
424
  // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
371
425
  // 3) DO NOT use REGISTRY as object type
372
426
  // 2) DO NOT use PROTOCOL and "zeroObjectType"
373
- function _setupValidObjectParentCombinations()
427
+ function _setupValidCoreTypesAndCombinations()
374
428
  private
375
429
  {
430
+ _coreTypes[REGISTRY()] = true;
431
+ _coreTypes[SERVICE()] = true;
432
+ _coreTypes[TOKEN()] = true;
433
+ _coreTypes[INSTANCE()] = true;
434
+ _coreTypes[PRODUCT()] = true;
435
+ _coreTypes[POOL()] = true;
436
+ _coreTypes[DISTRIBUTION()] = true;
437
+ _coreTypes[POLICY()] = true;
438
+ _coreTypes[BUNDLE()] = true;
439
+ _coreTypes[STAKE()] = true;
440
+
376
441
  // registry as parent, ONLY registry owner
377
- _isValidContractCombination[TOKEN()][REGISTRY()] = true;
378
- _isValidContractCombination[SERVICE()][REGISTRY()] = true;
442
+ //_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
443
+ _coreContractCombinations[TOKEN()][REGISTRY()] = true;
444
+ //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
379
445
 
380
446
  // registry as parent, ONLY approved
381
- _isValidContractCombination[INSTANCE()][REGISTRY()] = true;
447
+ _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
382
448
 
383
449
  // instance as parent, ONLY approved
384
- _isValidContractCombination[PRODUCT()][INSTANCE()] = true;
385
- _isValidContractCombination[DISTRIBUTION()][INSTANCE()] = true;
386
- _isValidContractCombination[ORACLE()][INSTANCE()] = true;
387
- _isValidContractCombination[POOL()][INSTANCE()] = true;
450
+ _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
451
+ _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
452
+ _coreContractCombinations[ORACLE()][INSTANCE()] = true;
453
+ _coreContractCombinations[POOL()][INSTANCE()] = true;
454
+
455
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
388
456
 
389
457
  // product as parent, ONLY approved
390
- _isValidObjectCombination[POLICY()][PRODUCT()] = true;
458
+ _coreObjectCombinations[POLICY()][PRODUCT()] = true;
391
459
 
392
460
  // pool as parent, ONLY approved
393
- _isValidObjectCombination[BUNDLE()][POOL()] = true;
394
- _isValidObjectCombination[STAKE()][POOL()] = true;
461
+ _coreObjectCombinations[BUNDLE()][POOL()] = true;
462
+ _coreObjectCombinations[STAKE()][POOL()] = true;
395
463
  }
396
- }
464
+ }
@@ -5,29 +5,31 @@ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManage
5
5
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
6
6
 
7
7
  import {RoleId, RoleIdLib,
8
- REGISTRY_SERVICE_MANAGER_ROLE,
9
- REGISTRY_SERVICE_ADMIN_ROLE,
8
+ GIF_MANAGER_ROLE,
9
+ GIF_ADMIN_ROLE,
10
10
  RELEASE_MANAGER_ROLE} from "../types/RoleId.sol";
11
11
 
12
12
  import {TokenRegistry} from "./TokenRegistry.sol";
13
13
  import {ReleaseManager} from "./ReleaseManager.sol";
14
14
 
15
15
  /*
16
- 3 types of roles:
17
- 1) REGISTRAR roles
18
- - each one is unique
19
- - always have 1 member
20
- - one role is set for each function of each version of registry service
21
- 2) REGISTRY_SERVICE_MANAGER_ROLE aka GIF_MANAGER_ROLE
16
+ 4 types of roles:
17
+ 1) RELEASE_MANAGER_ROLE
18
+ - has only ReleaseManager as member
19
+ - responsible for setting and granting of REGISTRAR roles
20
+ 1) REGISTRAR roles
21
+ - set and granted by RELEASE_MANAGER_ROLE
22
+ - each has 1 unique member (regular service ver.X) (subject to change)
23
+ - each set to 1 target (registry service ver.X) and 1 selector (function of registry service ver.X) (subject to change)
24
+ 2) GIF_MANAGER_ROLE
22
25
  - can have arbitrary number of members
23
26
  - responsible for services registrations
24
27
  - responsible for token registration and activation
25
- 3) REGISTRY_SERVICE_ADMIN_ROLE aka GIF_ADMIN_ROLE
26
- - admin of REGISTRY_SERVICE_MANAGER_ROLE
28
+ 3) GIF_ADMIN_ROLE
29
+ - admin of GIF_MANAGER_ROLE
27
30
  - MUST have 1 member at any time
28
31
  - granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
29
- - responsible for release manager initialization
30
- - responsible for creation and activation of each release
32
+ - responsible for creation and activation of releases
31
33
 
32
34
  */
33
35
 
@@ -71,8 +73,8 @@ contract RegistryAccessManager is AccessManaged
71
73
  _configureAdminRoleInitial();
72
74
 
73
75
  address admin = msg.sender;
74
- _grantRole(REGISTRY_SERVICE_ADMIN_ROLE(), admin, 0);
75
- _grantRole(REGISTRY_SERVICE_MANAGER_ROLE(), manager, 0);
76
+ _grantRole(GIF_ADMIN_ROLE(), admin, 0);
77
+ _grantRole(GIF_MANAGER_ROLE(), manager, 0);
76
78
  }
77
79
 
78
80
  function initialize(address releaseManager, address tokenRegistry)
@@ -124,10 +126,10 @@ contract RegistryAccessManager is AccessManaged
124
126
 
125
127
  /*function transferAdmin(address to)
126
128
  external
127
- restricted // only with REGISTRY_SERVICE_ADMIN_ROLE or nft owner
129
+ restricted // only with GIF_ADMIN_ROLE or nft owner
128
130
  {
129
- _accessManager.revoke(REGISTRY_SERVICE_ADMIN_ROLE, );
130
- _accesssManager.grant(REGISTRY_SERVICE_ADMIN_ROLE, to, 0);
131
+ _accessManager.revoke(GIF_ADMIN_ROLE, );
132
+ _accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
131
133
  }*/
132
134
 
133
135
  //--- view functions ----------------------------------------------------//
@@ -147,7 +149,7 @@ contract RegistryAccessManager is AccessManaged
147
149
  bytes4[] memory functionSelector = new bytes4[](1);
148
150
 
149
151
  functionSelector[0] = RegistryAccessManager.initialize.selector;
150
- _setTargetFunctionRole(address(this), functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
152
+ _setTargetFunctionRole(address(this), functionSelector, GIF_ADMIN_ROLE());
151
153
  }
152
154
 
153
155
  function _configureAdminRole() private
@@ -157,15 +159,16 @@ contract RegistryAccessManager is AccessManaged
157
159
  // for RegistryServiceProxyManager
158
160
  // TODO upgrading with releaseManager.upgrade()->proxy.upgrade()???
159
161
  //functionSelector[0] = RegistryServiceManager.upgrade.selector;
160
- //_setTargetFunctionRole(address(this), functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
162
+ //_setTargetFunctionRole(address(this), functionSelector, GIF_ADMIN_ROLE());
161
163
 
162
164
  // for TokenRegistry
163
165
 
164
166
  // for ReleaseManager
165
167
  functionSelector[0] = ReleaseManager.createNextRelease.selector;
166
- _setTargetFunctionRole(_releaseManager, functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
167
- //functionSelector[0] = ReleaseManager.activateNextRelease.selector;
168
- //_setTargetFunctionRole(_releaseManager, functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
168
+ _setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
169
+
170
+ functionSelector[0] = ReleaseManager.activateNextRelease.selector;
171
+ _setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
169
172
  }
170
173
 
171
174
  function _configureManagerRole() private
@@ -174,14 +177,17 @@ contract RegistryAccessManager is AccessManaged
174
177
 
175
178
  // for TokenRegistry
176
179
  functionSelector[0] = TokenRegistry.setActive.selector;
177
- _setTargetFunctionRole(address(_tokenRegistry), functionSelector, REGISTRY_SERVICE_MANAGER_ROLE());
180
+ _setTargetFunctionRole(address(_tokenRegistry), functionSelector, GIF_MANAGER_ROLE());
178
181
 
179
182
  // for ReleaseManager
180
183
  functionSelector[0] = ReleaseManager.registerService.selector;
181
- _setTargetFunctionRole(_releaseManager, functionSelector, REGISTRY_SERVICE_MANAGER_ROLE());
184
+ _setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
185
+
186
+ functionSelector[0] = ReleaseManager.registerRegistryService.selector;
187
+ _setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
182
188
 
183
189
  // set admin
184
- _setRoleAdmin(REGISTRY_SERVICE_MANAGER_ROLE(), REGISTRY_SERVICE_ADMIN_ROLE());
190
+ _setRoleAdmin(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE());
185
191
  }
186
192
 
187
193
  function _configureReleaseManagerRole() private