@etherisc/gif-next 0.0.2-e802d97-251 → 0.0.2-e83e4a5-207

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 (398) hide show
  1. package/README.md +18 -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/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  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/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +17 -242
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +138 -93
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +65 -57
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +45 -16
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -108
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +58 -78
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +147 -40
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -140
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +110 -76
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +210 -103
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -49
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -135
  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/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -78
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.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/mock/Dip.sol/Dip.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
  82. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
  84. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
  86. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +66 -29
  88. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +44 -32
  90. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  92. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  94. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +78 -49
  96. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +50 -42
  98. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +13 -0
  100. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
  102. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +13 -0
  104. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
  106. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +62 -41
  108. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +42 -38
  110. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -37
  112. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -36
  114. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  116. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  118. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +106 -69
  120. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +64 -52
  122. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
  124. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
  126. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
  128. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
  130. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
  132. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
  134. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +84 -47
  136. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +53 -41
  138. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.json +92 -63
  140. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +57 -49
  142. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  143. package/artifacts/contracts/product/Product.sol/Product.json +13 -153
  144. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
  146. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +38 -30
  148. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  150. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +0 -44
  152. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -0
  154. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  155. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.json +24 -68
  157. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1505 -166
  159. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +50 -13
  161. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -25
  163. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  165. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  166. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +185 -318
  167. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  169. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  171. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  172. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +82 -85
  174. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -60
  176. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  177. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
  178. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  179. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +13 -0
  183. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
  185. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  187. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  189. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  195. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  197. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  198. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
  199. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  200. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  201. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  203. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  204. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +22 -22
  205. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  207. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  208. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  209. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -14
  211. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  213. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  214. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  215. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Service.sol/Service.json +13 -0
  217. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  218. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  219. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  220. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  221. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  222. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  223. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  224. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
  225. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +44 -28
  227. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  228. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -84
  229. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  230. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -56
  233. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  235. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +92 -73
  237. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -47
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +197 -149
  241. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  242. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
  243. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  244. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  245. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Amount.sol/AmountLib.json +8 -8
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  251. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  255. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  259. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  260. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  269. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  275. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  279. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  281. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  282. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  283. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  285. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  287. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  289. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  291. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  293. package/contracts/authorization/AccessAdmin.sol +591 -0
  294. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  295. package/contracts/authorization/Authorization.sol +218 -0
  296. package/contracts/authorization/IAccess.sol +48 -0
  297. package/contracts/authorization/IAccessAdmin.sol +136 -0
  298. package/contracts/authorization/IAuthorization.sol +54 -0
  299. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  300. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  301. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  302. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  303. package/contracts/distribution/BasicDistribution.sol +149 -0
  304. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  305. package/contracts/distribution/Distribution.sol +126 -104
  306. package/contracts/distribution/DistributionService.sol +13 -9
  307. package/contracts/distribution/IDistributionComponent.sol +17 -35
  308. package/contracts/distribution/IDistributionService.sol +5 -1
  309. package/contracts/instance/IInstance.sol +11 -7
  310. package/contracts/instance/IInstanceService.sol +29 -18
  311. package/contracts/instance/Instance.sol +103 -85
  312. package/contracts/instance/InstanceAdmin.sol +202 -267
  313. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  314. package/contracts/instance/InstanceReader.sol +24 -9
  315. package/contracts/instance/InstanceService.sol +151 -70
  316. package/contracts/instance/InstanceStore.sol +15 -20
  317. package/contracts/instance/base/BalanceStore.sol +11 -6
  318. package/contracts/instance/base/Cloneable.sol +2 -25
  319. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  320. package/contracts/instance/base/ObjectManager.sol +7 -10
  321. package/contracts/oracle/BasicOracle.sol +48 -0
  322. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  323. package/contracts/oracle/IOracle.sol +16 -0
  324. package/contracts/oracle/Oracle.sol +61 -49
  325. package/contracts/oracle/OracleService.sol +5 -4
  326. package/contracts/pool/BasicPool.sol +164 -0
  327. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  328. package/contracts/pool/BundleService.sol +19 -19
  329. package/contracts/pool/IPoolComponent.sol +0 -60
  330. package/contracts/pool/Pool.sol +143 -131
  331. package/contracts/pool/PoolService.sol +7 -8
  332. package/contracts/product/ApplicationService.sol +5 -5
  333. package/contracts/product/BasicProduct.sol +82 -0
  334. package/contracts/product/BasicProductAuthorization.sol +40 -0
  335. package/contracts/product/ClaimService.sol +5 -5
  336. package/contracts/product/IProductComponent.sol +6 -9
  337. package/contracts/product/PolicyService.sol +5 -5
  338. package/contracts/product/PricingService.sol +4 -5
  339. package/contracts/product/Product.sol +103 -88
  340. package/contracts/product/ProductService.sol +5 -5
  341. package/contracts/registry/IRegistry.sol +5 -8
  342. package/contracts/registry/Registry.sol +6 -4
  343. package/contracts/registry/RegistryAdmin.sol +276 -148
  344. package/contracts/registry/RegistryService.sol +5 -5
  345. package/contracts/registry/RegistryServiceManager.sol +0 -5
  346. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  347. package/contracts/registry/ReleaseManager.sol +161 -274
  348. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  349. package/contracts/shared/ComponentService.sol +24 -61
  350. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  351. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  352. package/contracts/shared/IKeyValueStore.sol +1 -0
  353. package/contracts/shared/ILifecycle.sol +1 -2
  354. package/contracts/shared/IService.sol +7 -0
  355. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  356. package/contracts/shared/KeyValueStore.sol +6 -2
  357. package/contracts/shared/Lifecycle.sol +16 -69
  358. package/contracts/shared/Service.sol +27 -21
  359. package/contracts/staking/IStakingService.sol +11 -7
  360. package/contracts/staking/StakeManagerLib.sol +52 -0
  361. package/contracts/staking/Staking.sol +58 -96
  362. package/contracts/staking/StakingLifecycle.sol +23 -0
  363. package/contracts/staking/StakingService.sol +61 -56
  364. package/contracts/staking/StakingServiceManager.sol +0 -1
  365. package/contracts/staking/StakingStore.sol +82 -39
  366. package/contracts/type/ObjectType.sol +169 -62
  367. package/contracts/type/RoleId.sol +103 -75
  368. package/contracts/type/Selector.sol +102 -0
  369. package/contracts/type/String.sol +53 -0
  370. package/contracts/type/UFixed.sol +6 -0
  371. package/package.json +4 -1
  372. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  373. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  374. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  375. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  376. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  377. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  378. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  379. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  380. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  381. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  382. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  383. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  384. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  385. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  386. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  387. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  388. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  389. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  390. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  391. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  392. package/contracts/shared/AccessManagerCustom.sol +0 -736
  393. package/contracts/shared/AccessManagerExtended.sol +0 -470
  394. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  395. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  396. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  397. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  398. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
@@ -1,18 +1,19 @@
1
1
  // SPDX-License-Identifier: UNLICENSED
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
- import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
6
- import {AuthorityUtils} from "@openzeppelin/contracts/access/manager/AuthorityUtils.sol";
7
-
8
- import {RoleId, RoleIdLib, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE} from "../type/RoleId.sol";
9
-
10
- import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
11
- import {InitializableCustom} from "../shared/InitializableCustom.sol";
12
-
4
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
5
+ import {IAccess} from "../authorization/IAccess.sol";
13
6
  import {IRegistry} from "./IRegistry.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
9
+ import {IStaking} from "../staking/IStaking.sol";
10
+ import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
14
11
  import {ReleaseManager} from "./ReleaseManager.sol";
12
+ import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
+ import {StakingStore} from "../staking/StakingStore.sol";
14
+ import {STAKING} from "../type/ObjectType.sol";
15
15
  import {TokenRegistry} from "./TokenRegistry.sol";
16
+ import {VersionPart} from "../type/Version.sol";
16
17
 
17
18
  /*
18
19
  1) GIF_MANAGER_ROLE
@@ -25,122 +26,168 @@ import {TokenRegistry} from "./TokenRegistry.sol";
25
26
  - MUST have 1 member at any time
26
27
  - granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
27
28
  - responsible for creation and activation of releases
28
- */
29
29
 
30
- // !!! USE BUILDER PATTERN FOR CONFIG
31
- // introduce class - config
32
- // create instance of this class in admin initializer function
33
- // call it "add"/"push" function for each entry in config (provide entry parameneters)
34
- // each call will configure access manager for given parameneters
35
- // in the end you have fully configured access manager and config object
36
-
37
- // grants GIF_ADMIN_ROLE to registry owner as registryOwner is transaction sender
38
- // grants GIF_MANAGER_ROLE to registry owner via contructor argument
30
+ createServiceTarget(type, release)
31
+ createServiceRole(type,release)
32
+ getServiceRole(type, release)
33
+ */
39
34
  contract RegistryAdmin is
40
- AccessManaged,
41
- InitializableCustom
35
+ AccessAdmin
42
36
  {
43
- error ErrorRegistryAdminReleaseManagerAuthorityMismatch();
44
- error ErrorRegistryAdminTokenRegistryAuthorityMismatch();
45
- error ErrorRegistryAdminStakingAuthorityMismatch();
37
+ error ErrorRegistryAdminIsAlreadySetUp();
46
38
 
47
39
  string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
48
40
  string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
41
+ string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
42
+ string public constant RELEASE_MANAGER_ROLE_NAME = "ReleaseManagerRole";
43
+ string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
44
+ string public constant STAKING_ROLE_NAME = "StakingRole";
49
45
 
50
46
  string public constant RELEASE_MANAGER_TARGET_NAME = "ReleaseManager";
51
47
  string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
52
48
  string public constant STAKING_TARGET_NAME = "Staking";
53
-
49
+ string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
50
+
51
+ uint8 public constant MAX_NUM_RELEASES = 99;
52
+
53
+ mapping(address service => VersionPart majorVersion) private _ServiceRelease;
54
+
54
55
  address private _releaseManager;
55
56
  address private _tokenRegistry;
56
57
  address private _staking;
58
+ address private _stakingStore;
59
+ bool private _setupCompleted;
57
60
 
58
- constructor()
59
- AccessManaged(msg.sender)
60
- InitializableCustom()
61
- {
62
- AccessManagerExtendedInitializeable accessManager = new AccessManagerExtendedInitializeable();
63
- accessManager.initialize(address(this));
64
- setAuthority(address(accessManager));
65
- }
61
+ constructor() AccessAdmin() { }
66
62
 
67
- function initialize(
63
+ function completeSetup(
68
64
  IRegistry registry,
69
65
  address gifAdmin,
70
66
  address gifManager
71
67
  )
72
68
  external
73
- initializer
69
+ onlyDeployer()
74
70
  {
75
- // validate input
76
- address releaseManagerAddress = registry.getReleaseManagerAddress();
77
- if(IAccessManaged(releaseManagerAddress).authority() != authority()) {
78
- revert ErrorRegistryAdminReleaseManagerAuthorityMismatch();
79
- }
71
+ if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); }
72
+ else { _setupCompleted = true; }
80
73
 
81
- address tokenRegistryAddress = registry.getTokenRegistryAddress();
82
- if(IAccessManaged(tokenRegistryAddress).authority() != authority()) {
83
- revert ErrorRegistryAdminTokenRegistryAuthorityMismatch();
84
- }
85
-
86
- address stakingAddress = registry.getStakingAddress();
87
- if(IAccessManaged(stakingAddress).authority() != authority()) {
88
- revert ErrorRegistryAdminStakingAuthorityMismatch();
89
- }
90
-
91
- _releaseManager = releaseManagerAddress;
92
- _tokenRegistry = tokenRegistryAddress;
93
- _staking = stakingAddress;
74
+ _releaseManager = registry.getReleaseManagerAddress();
75
+ _tokenRegistry = registry.getTokenRegistryAddress();
76
+ _staking = registry.getStakingAddress();
77
+ _stakingStore = address(
78
+ IStaking(_staking).getStakingStore());
94
79
 
95
80
  // at this moment all registry contracts are deployed and fully intialized
96
- _createRole(GIF_ADMIN_ROLE(), GIF_ADMIN_ROLE_NAME);
97
- _createRole(GIF_MANAGER_ROLE(), GIF_MANAGER_ROLE_NAME);
81
+ _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME, true, false);
98
82
 
99
- _createTarget(_releaseManager, RELEASE_MANAGER_TARGET_NAME);
100
- _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME);
101
- _createTarget(_staking, STAKING_TARGET_NAME);
83
+ _setupGifAdminRole(gifAdmin);
84
+ _setupGifManagerRole(gifManager);
102
85
 
103
- _setGifAdminRole();
104
- _setGifManagerRole();
86
+ _setupReleaseManager();
87
+ _setupStaking();
88
+ }
105
89
 
106
- _grantRole(GIF_ADMIN_ROLE(), gifAdmin, 0);
107
- _grantRole(GIF_MANAGER_ROLE(), gifManager, 0);
108
90
 
109
- // set gif manager role admin
110
- _setRoleAdmin(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE());
91
+ /// @dev Sets up authorizaion for specified service.
92
+ /// For all authorized services its authorized functions are enabled.
93
+ /// Permissioned function: Access is restricted to release manager.
94
+ function authorizeService(
95
+ IServiceAuthorization serviceAuthorization,
96
+ IService service
97
+ )
98
+ external
99
+ restricted()
100
+ {
101
+ _createServiceTargetAndRole(service);
102
+ _authorizeServiceFunctions(serviceAuthorization, service);
111
103
  }
112
104
 
113
- // TODO makes sense to do this in intialize() function
114
- // it is a single contract
115
- // but if many token registries a possible...
116
- /*function setTokenRegistry(
117
- address tokenRegistry
118
- )
105
+
106
+ function grantServiceRoleForAllVersions(IService service, ObjectType domain)
119
107
  external
120
- restricted() // GIF_ADMIN_ROLE
108
+ restricted()
121
109
  {
122
- // for TokenRegistry
123
- bytes4[] memory functionSelector = new bytes4[](5);
124
- functionSelector[0] = TokenRegistry.registerToken.selector;
125
- functionSelector[1] = TokenRegistry.registerRemoteToken.selector;
126
- functionSelector[2] = TokenRegistry.setActive.selector;
127
- functionSelector[3] = TokenRegistry.setActiveForVersion.selector;
128
-
129
- // only needed for testing TODO find a better way
130
- functionSelector[4] = TokenRegistry.setActiveWithVersionCheck.selector;
131
- _setTargetFunctionRole(address(tokenRegistry), functionSelector, GIF_MANAGER_ROLE());
132
- }*/
110
+ _grantRoleToAccount(
111
+ RoleIdLib.roleForTypeAndAllVersions(domain),
112
+ address(service));
113
+ }
114
+
133
115
 
116
+ function _createServiceTargetAndRole(IService service)
117
+ private
118
+ {
119
+ ObjectType serviceDomain = service.getDomain();
120
+ string memory baseName = ObjectTypeLib.toName(serviceDomain);
121
+ VersionPart version = service.getVersion().toMajorPart();
122
+ uint256 versionInt = version.toInt();
123
+
124
+ // create service target
125
+ string memory serviceTargetName = ObjectTypeLib.toVersionedName(
126
+ baseName, "Service", versionInt);
127
+
128
+ _createTarget(
129
+ address(service),
130
+ serviceTargetName,
131
+ true,
132
+ false);
133
+
134
+ // create service role
135
+ RoleId serviceRoleId = RoleIdLib.roleForTypeAndVersion(
136
+ serviceDomain,
137
+ version);
138
+
139
+ _createRole(
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)}));
149
+
150
+ _grantRoleToAccount(
151
+ serviceRoleId,
152
+ address(service));
153
+ }
134
154
 
135
- function setTargetFunctionRole(
136
- address target,
137
- bytes4[] memory selector,
138
- RoleId roleId
155
+
156
+ function _authorizeServiceFunctions(
157
+ IServiceAuthorization serviceAuthorization,
158
+ IService service
139
159
  )
140
- external
141
- restricted // RELEASE_MANAGER_ROLE -> TODO create this role
160
+ private
142
161
  {
143
- _setTargetFunctionRole(target, selector, roleId);
162
+ ObjectType serviceDomain = service.getDomain();
163
+ ObjectType authorizedDomain;
164
+ RoleId authorizedRoleId;
165
+
166
+ VersionPart release = service.getVersion().toMajorPart();
167
+ ObjectType[] memory authorizedDomains = serviceAuthorization.getAuthorizedDomains(serviceDomain);
168
+
169
+ for (uint256 i = 0; i < authorizedDomains.length; i++) {
170
+ authorizedDomain = authorizedDomains[i];
171
+
172
+ // derive authorized role from authorized domain
173
+ if (authorizedDomain == ALL()) {
174
+ authorizedRoleId = PUBLIC_ROLE();
175
+ } else {
176
+ authorizedRoleId = RoleIdLib.roleForTypeAndVersion(
177
+ authorizedDomain,
178
+ release);
179
+ }
180
+
181
+ // get authorized functions for authorized domain
182
+ IAccess.FunctionInfo[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
183
+ serviceDomain,
184
+ authorizedDomain);
185
+
186
+ _authorizeTargetFunctions(
187
+ address(service),
188
+ authorizedRoleId,
189
+ authorizatedFunctions);
190
+ }
144
191
  }
145
192
 
146
193
  /*function transferAdmin(address to)
@@ -153,85 +200,166 @@ contract RegistryAdmin is
153
200
 
154
201
  //--- view functions ----------------------------------------------------//
155
202
 
156
- function hasRole(address account, RoleId roleId) external view returns(bool) {
157
- (bool isMember,) = AccessManagerExtendedInitializeable(authority()).hasRole(roleId.toInt(), account);
158
- return isMember;
203
+ function getGifAdminRole() external view returns (RoleId) {
204
+ return GIF_ADMIN_ROLE();
159
205
  }
160
206
 
161
-
162
- function canCall(
163
- address account,
164
- address target,
165
- bytes4 functionSelector
166
- )
167
- external
168
- view
169
- returns(bool)
170
- {
171
- (bool immediate,) = AuthorityUtils.canCallWithDelay(
172
- authority(),
173
- account,
174
- target,
175
- functionSelector);
176
-
177
- return immediate;
207
+ function getGifManagerRole() external view returns (RoleId) {
208
+ return GIF_MANAGER_ROLE();
178
209
  }
179
210
 
180
211
  //--- private functions -------------------------------------------------//
181
212
 
182
- function _setGifAdminRole() private
183
- {
184
- // for ReleaseManager
185
- bytes4[] memory functionSelector2 = new bytes4[](2);
186
- //functionSelector2[0] = ReleaseManager.registerStaking.selector;
187
- functionSelector2[0] = ReleaseManager.createNextRelease.selector;
188
- functionSelector2[1] = ReleaseManager.activateNextRelease.selector;
189
-
190
- _setTargetFunctionRole(_releaseManager, functionSelector2, GIF_ADMIN_ROLE());
213
+ function _setupGifAdminRole(address gifAdmin) private {
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}));
191
222
 
192
- // for Staking
223
+ // for ReleaseManager
224
+ FunctionInfo[] memory functions;
225
+ functions = new FunctionInfo[](4);
226
+ functions[0] = toFunction(ReleaseManager.createNextRelease.selector, "createNextRelease");
227
+ functions[1] = toFunction(ReleaseManager.activateNextRelease.selector, "activateNextRelease");
228
+ functions[2] = toFunction(ReleaseManager.pauseRelease.selector, "pauseRelease");
229
+ functions[3] = toFunction(ReleaseManager.unpauseRelease.selector, "unpauseRelease");
230
+ _authorizeTargetFunctions(_releaseManager, GIF_ADMIN_ROLE(), functions);
231
+
232
+ _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
193
233
  }
194
234
 
195
- function _setGifManagerRole() private
196
- {
197
- // for TokenRegistry
198
- bytes4[] memory functionSelectorTr = new bytes4[](5);
199
- functionSelectorTr[0] = TokenRegistry.registerToken.selector;
200
- functionSelectorTr[1] = TokenRegistry.registerRemoteToken.selector;
201
- functionSelectorTr[2] = TokenRegistry.setActive.selector;
202
- functionSelectorTr[3] = TokenRegistry.setActiveForVersion.selector;
235
+ function _setupGifManagerRole(address gifManager) private {
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}));
203
244
 
204
- // only needed for testing TODO find a better way
205
- functionSelectorTr[4] = TokenRegistry.setActiveWithVersionCheck.selector;
206
- _setTargetFunctionRole(_tokenRegistry, functionSelectorTr, GIF_MANAGER_ROLE());
245
+ // for TokenRegistry
246
+ FunctionInfo[] memory functions;
247
+ functions = new FunctionInfo[](5);
248
+ functions[0] = toFunction(TokenRegistry.registerToken.selector, "registerToken");
249
+ functions[1] = toFunction(TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
250
+ functions[2] = toFunction(TokenRegistry.setActive.selector, "setActive");
251
+ functions[3] = toFunction(TokenRegistry.setActiveForVersion.selector, "setActiveForVersion");
252
+ // TODO find a better way (only needed for testing)
253
+ functions[4] = toFunction(TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
254
+ _authorizeTargetFunctions(_tokenRegistry, GIF_MANAGER_ROLE(), functions);
207
255
 
208
256
  // for ReleaseManager
209
- bytes4[] memory functionSelectorRm = new bytes4[](2);
210
- functionSelectorRm[0] = ReleaseManager.registerService.selector;
211
- functionSelectorRm[1] = ReleaseManager.prepareNextRelease.selector;
212
- _setTargetFunctionRole(_releaseManager, functionSelectorRm, GIF_MANAGER_ROLE());
257
+ functions = new FunctionInfo[](2);
258
+ functions[0] = toFunction(ReleaseManager.prepareNextRelease.selector, "prepareNextRelease");
259
+ functions[1] = toFunction(ReleaseManager.registerService.selector, "registerService");
260
+ _authorizeTargetFunctions(_releaseManager, GIF_MANAGER_ROLE(), functions);
213
261
 
214
- // for Staking
262
+ _grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
215
263
  }
216
264
 
217
265
 
218
- function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) private {
219
- AccessManagerExtendedInitializeable(authority()).setTargetFunctionRole(target, selectors, roleId.toInt());
220
- }
266
+ function _setupReleaseManager() private {
221
267
 
222
- function _setRoleAdmin(RoleId roleId, RoleId adminRoleId) private {
223
- AccessManagerExtendedInitializeable(authority()).setRoleAdmin(roleId.toInt(), adminRoleId.toInt());
224
- }
268
+ _createTarget(_releaseManager, RELEASE_MANAGER_TARGET_NAME, true, false);
225
269
 
226
- function _grantRole(RoleId roleId, address account, uint32 executionDelay) private {
227
- AccessManagerExtendedInitializeable(authority()).grantRole(roleId.toInt(), account, executionDelay);
228
- }
270
+ RoleId releaseManagerRoleId = RoleIdLib.roleForType(RELEASE());
271
+ _createRole(
272
+ releaseManagerRoleId,
273
+ toRole({
274
+ adminRoleId: ADMIN_ROLE(),
275
+ roleType: RoleType.Contract,
276
+ maxMemberCount: 1,
277
+ name: RELEASE_MANAGER_ROLE_NAME}));
278
+
279
+ FunctionInfo[] memory functions;
280
+ functions = new FunctionInfo[](2);
281
+ functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
282
+ functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
283
+ _authorizeTargetFunctions(address(this), releaseManagerRoleId, functions);
229
284
 
230
- function _createRole(RoleId roleId, string memory roleName) private {
231
- AccessManagerExtendedInitializeable(authority()).createRole(roleId.toInt(), roleName);
285
+ _grantRoleToAccount(releaseManagerRoleId, _releaseManager);
232
286
  }
233
287
 
234
- function _createTarget(address target, string memory targetName) private {
235
- AccessManagerExtendedInitializeable(authority()).createTarget(target, targetName);
288
+
289
+ function _setupStaking() private {
290
+ _createTarget(_staking, STAKING_TARGET_NAME, true, false);
291
+ _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
292
+
293
+ // staking function authorization for staking service
294
+ RoleId stakingServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(STAKING());
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);
305
+ functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
306
+ functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
307
+ functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
308
+ functions[3] = toFunction(IStaking.refillRewardReserves.selector, "refillRewardReserves");
309
+ functions[4] = toFunction(IStaking.withdrawRewardReserves.selector, "withdrawRewardReserves");
310
+ functions[5] = toFunction(IStaking.createStake.selector, "createStake");
311
+ functions[6] = toFunction(IStaking.stake.selector, "stake");
312
+ functions[7] = toFunction(IStaking.unstake.selector, "unstake");
313
+ functions[8] = toFunction(IStaking.restake.selector, "restake");
314
+ functions[9] = toFunction(IStaking.updateRewards.selector, "updateRewards");
315
+ functions[10] = toFunction(IStaking.claimRewards.selector, "claimRewards");
316
+ functions[11] = toFunction(IStaking.collectDipAmount.selector, "collectDipAmount");
317
+ functions[12] = toFunction(IStaking.transferDipAmount.selector, "transferDipAmount");
318
+ _authorizeTargetFunctions(_staking, stakingServiceRoleId, functions);
319
+
320
+ // staking function authorization for pool service
321
+ RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
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}));
329
+
330
+ // staking function authorizations
331
+ functions = new FunctionInfo[](2);
332
+ functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
333
+ functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
334
+ _authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
335
+
336
+ // staking store function authorizations
337
+ RoleId stakingRoleId = RoleIdLib.roleForType(STAKING());
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);
347
+ functions[0] = toFunction(StakingStore.setStakingRate.selector, "setStakingRate");
348
+ functions[1] = toFunction(StakingStore.createTarget.selector, "createTarget");
349
+ functions[2] = toFunction(StakingStore.updateTarget.selector, "updateTarget");
350
+ functions[3] = toFunction(StakingStore.increaseReserves.selector, "increaseReserves");
351
+ functions[4] = toFunction(StakingStore.decreaseReserves.selector, "decreaseReserves");
352
+ functions[5] = toFunction(StakingStore.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
353
+ functions[6] = toFunction(StakingStore.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
354
+ functions[7] = toFunction(StakingStore.create.selector, "create");
355
+ functions[8] = toFunction(StakingStore.update.selector, "update");
356
+ functions[9] = toFunction(StakingStore.increaseStake.selector, "increaseStake");
357
+ functions[10] = toFunction(StakingStore.restakeRewards.selector, "restakeRewards");
358
+ functions[11] = toFunction(StakingStore.updateRewards.selector, "updateRewards");
359
+ functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
360
+ functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
361
+ _authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
362
+
363
+ _grantRoleToAccount(stakingRoleId, _staking);
236
364
  }
237
365
  }
@@ -37,11 +37,6 @@ contract RegistryService is
37
37
  // TODO update to real hash when registry is stable
38
38
  bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
39
39
 
40
- // From IService
41
- function getDomain() public pure override returns(ObjectType serviceDomain) {
42
- return REGISTRY();
43
- }
44
-
45
40
  // from Versionable
46
41
 
47
42
  /// @dev top level initializer
@@ -263,4 +258,9 @@ contract RegistryService is
263
258
  revert ErrorRegistryServiceObjectOwnerRegistered(info.objectType, owner);
264
259
  }
265
260
  }
261
+
262
+ // From IService
263
+ function _getDomain() internal override pure returns(ObjectType serviceDomain) {
264
+ return REGISTRY();
265
+ }
266
266
  }
@@ -1,14 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
-
6
- import {Registry} from "./Registry.sol";
7
4
  import {IVersionable} from "../shared/IVersionable.sol";
8
5
  import {ProxyManager} from "../shared/ProxyManager.sol";
9
6
  import {RegistryService} from "./RegistryService.sol";
10
- import {TokenRegistry} from "./TokenRegistry.sol";
11
-
12
7
 
13
8
  contract RegistryServiceManager is
14
9
  ProxyManager
@@ -0,0 +1,27 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {RELEASE} from "../type/ObjectType.sol";
5
+ import {SCHEDULED, DEPLOYING, ACTIVE, PAUSED, CLOSED/*, FREE*/} from "../type/StateId.sol";
6
+ import {Lifecycle} from "../shared/Lifecycle.sol";
7
+
8
+ contract ReleaseLifecycle is
9
+ Lifecycle
10
+ {
11
+ constructor() {
12
+ _setupLifecycle();
13
+ }
14
+
15
+ function _setupLifecycle()
16
+ internal
17
+ override
18
+ {
19
+ setInitialState(RELEASE(), SCHEDULED());
20
+
21
+ setStateTransition(RELEASE(), SCHEDULED(), DEPLOYING());
22
+ setStateTransition(RELEASE(), DEPLOYING(), DEPLOYING());
23
+ setStateTransition(RELEASE(), DEPLOYING(), ACTIVE());
24
+ setStateTransition(RELEASE(), ACTIVE(), PAUSED());
25
+ setStateTransition(RELEASE(), PAUSED(), ACTIVE());
26
+ }
27
+ }