@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
@@ -10,15 +10,14 @@ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
10
10
 
11
11
  import {NftId} from "../type/NftId.sol";
12
12
  import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
- import {ObjectType, ObjectTypeLib, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
13
+ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
14
14
  import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
15
15
  import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
16
16
  import {Seconds, SecondsLib} from "../type/Seconds.sol";
17
- import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
17
+ import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
18
18
  import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
19
19
 
20
20
  import {IService} from "../shared/IService.sol";
21
- import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
22
21
  import {ILifecycle} from "../shared/ILifecycle.sol";
23
22
  import {INftOwnable} from "../shared/INftOwnable.sol";
24
23
  import {IRegisterable} from "../shared/IRegisterable.sol";
@@ -26,45 +25,50 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
26
25
  import {IRegistry} from "./IRegistry.sol";
27
26
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
28
27
  import {IRegistryService} from "./IRegistryService.sol";
28
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
29
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
29
30
  import {RegistryAdmin} from "./RegistryAdmin.sol";
30
31
  import {Registry} from "./Registry.sol";
31
32
  import {TokenRegistry} from "./TokenRegistry.sol";
32
- import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
33
-
33
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
34
34
 
35
+ // TODO rename to something that does not end with 'Manager'
36
+ // everywhere else *Manager points to an upgradeable contract
35
37
  contract ReleaseManager is
36
- AccessManaged,
37
- ILifecycle,
38
+ AccessManaged,
39
+ ReleaseLifecycle,
38
40
  IRegistryLinked
39
41
  {
40
42
  using ObjectTypeLib for ObjectType;
41
43
 
42
44
  uint256 public constant INITIAL_GIF_VERSION = 3;
43
45
 
44
- event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerExtendedWithDisableInitializeable accessManager);
46
+ event LogReleaseCreation(VersionPart version, bytes32 salt);
45
47
  event LogReleaseActivation(VersionPart version);
48
+ event LogReleaseDisabled(VersionPart version);
49
+ event LogReleaseEnabled(VersionPart version);
46
50
 
47
51
  // constructor
48
52
  error ErrorReleaseManagerNotRegistry(Registry registry);
49
53
 
50
54
  // createNextRelease
51
- error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
55
+ error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
52
56
 
53
57
  // prepareRelease
54
- error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
55
- error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
56
-
57
- // register staking
58
- //error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
58
+ error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
59
+ error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
60
+ error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
61
+ error ErrorReleaseManagerNoDomains(VersionPart version);
59
62
 
60
63
  // registerService
61
64
  error ErrorReleaseManagerNoServiceRegistrationExpected();
62
65
  error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
63
- error ErrorReleaseManagerNotService(IService service);
64
- error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
66
+ error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
67
+ error ErrorReleaseManagerNotService(address notService);
68
+ error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
65
69
 
66
70
  // activateNextRelease
67
- error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
71
+ error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
68
72
  error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
69
73
  error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
70
74
  error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
@@ -85,30 +89,27 @@ contract ReleaseManager is
85
89
  error ErrorReleaseManagerServiceSelfRegistration(IService service);
86
90
  error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
87
91
 
88
- // _verifyReleaseAuthorizations
89
- error ErrorReleaseManagerReleaseEmpty();
90
- error ErrorReleaseManagerReleaseServiceRoleInvalid(uint serviceIdx, address service, RoleId role);
91
-
92
92
  Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
93
93
 
94
94
  RegistryAdmin public immutable _admin;
95
- address public immutable _releaseAccessManagerCodeAddress;
96
95
  Registry public immutable _registry;
97
96
  IRegisterable private _staking;
98
97
  address private _stakingOwner;
99
98
 
100
- mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
101
99
  mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
100
+ mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
101
+
102
+ // TODO check where/why this is used
102
103
  mapping(address registryService => VersionPart version) _releaseVersionByAddress;
103
104
 
104
- VersionPart immutable internal _initial;// first active version
105
+ VersionPart private _initial;// first active version
105
106
  VersionPart internal _latest; // latest active version
106
107
  VersionPart internal _next; // version to create and activate
107
- StateId internal _state; // current state of release manager
108
+ mapping(VersionPart verson => StateId releaseState) private _state;
108
109
 
109
- uint256 internal _awaitingRegistration; // "services left to register" counter
110
+ uint256 internal _registeredServices;
111
+ uint256 internal _servicesToRegister;
110
112
 
111
- // deployer of this contract must be gif admin
112
113
  constructor(Registry registry)
113
114
  AccessManaged(msg.sender)
114
115
  {
@@ -117,154 +118,135 @@ contract ReleaseManager is
117
118
  revert ErrorReleaseManagerNotRegistry(registry);
118
119
  }
119
120
 
121
+ setAuthority(registry.getAuthority());
122
+
120
123
  _registry = registry;
121
- setAuthority(_registry.getAuthority());
122
124
  _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
123
125
 
124
126
  _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
125
127
  _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
126
- _state = getInitialState(RELEASE());
127
-
128
- AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
129
- masterReleaseAccessManager.initialize(_registry.NFT_LOCK_ADDRESS(), VersionLib.toVersionPart(0));
130
- //masterReleaseAccessManager.disable();
131
- _releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
132
128
  }
133
129
 
134
130
  /// @dev skips previous release if was not activated
135
- /// sets release manager into state SCHEDULED
131
+ /// sets next release into state SCHEDULED
136
132
  function createNextRelease()
137
133
  external
138
134
  restricted() // GIF_ADMIN_ROLE
139
135
  returns(VersionPart)
140
136
  {
141
- if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
142
- revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
143
- }
144
-
145
137
  _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
146
- _awaitingRegistration = 0;
147
- _state = SCHEDULED();
138
+ _servicesToRegister = 0;
139
+ _registeredServices = 0;
140
+ _state[_next] = getInitialState(RELEASE());
148
141
 
149
142
  return _next;
150
143
  }
151
144
 
152
- // TODO order of events
153
145
  function prepareNextRelease(
154
- address[] memory addresses,
155
- string[] memory names,
156
- RoleId[][] memory serviceRoles,
157
- string[][] memory serviceRoleNames,
158
- RoleId[][] memory functionRoles,
159
- string[][] memory functionRoleNames,
160
- bytes4[][][] memory selectors,
146
+ IServiceAuthorization serviceAuthorization,
161
147
  bytes32 salt
162
148
  )
163
149
  external
164
150
  restricted() // GIF_MANAGER_ROLE
165
151
  returns(
166
- address releaseAccessManagerAddress,
152
+ address authority,
167
153
  VersionPart version,
168
154
  bytes32 releaseSalt
169
155
  )
170
156
  {
171
- version = getNextVersion();
157
+ authority = _admin.authority();
158
+ version = _next;
172
159
 
173
160
  // ensures unique salt
161
+ // TODO CreateX have clones capability also
162
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
174
163
  releaseSalt = keccak256(
175
164
  bytes.concat(
176
165
  bytes32(version.toInt()),
177
166
  salt));
178
167
 
179
- releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
180
- AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
181
- releaseAccessManager.initialize(address(this), version);
168
+ // verify release in state SCHEDULED
169
+ if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
170
+ revert ErrorReleaseManagerReleasePreparationDisallowed(version, _state[version]);
171
+ }
172
+
173
+ _state[version] = DEPLOYING();
182
174
 
183
- if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
184
- revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
175
+ // verify authorizaion contract release matches with expected version
176
+ VersionPart releaseVersion = serviceAuthorization.getRelease();
177
+ if (releaseVersion != version) {
178
+ revert ErrorReleaseManagerVersionMismatch(version, releaseVersion);
185
179
  }
186
180
 
187
- _verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
188
181
 
189
- if(_awaitingRegistration > 0) {
190
- revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
182
+ // sanity check to ensure service domain list is not empty
183
+ uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
184
+ if (serviceDomainsCount == 0) {
185
+ revert ErrorReleaseManagerNoDomains(version);
186
+ }
187
+
188
+ // verify prepareNextRelease is only called once per release
189
+ if(_servicesToRegister > 0) {
190
+ revert ErrorReleaseManagerReleaseAlreadyPrepared(version, _state[version]);
191
191
  }
192
- // TODO instead of copying just set ServiceAuthorizationsLib for release and array of domains???
193
- _releaseInfo[version].version = version;
194
- _releaseInfo[version].salt = releaseSalt;
195
- _releaseInfo[version].addresses = addresses;
196
- _releaseInfo[version].names = names;
197
- _releaseInfo[version].serviceRoles = serviceRoles;
198
- _releaseInfo[version].serviceRoleNames = serviceRoleNames;
199
- _releaseInfo[version].functionRoles = functionRoles;
200
- _releaseInfo[version].functionRoleNames = functionRoleNames;
201
- _releaseInfo[version].selectors = selectors;
202
- _awaitingRegistration = addresses.length;
203
- _state = DEPLOYING();
204
- _releaseAccessManager[version] = releaseAccessManager;
205
-
206
- emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
207
- }
208
192
 
193
+ _servicesToRegister = serviceDomainsCount;
194
+ _serviceAuthorization[version] = serviceAuthorization;
195
+
196
+ emit LogReleaseCreation(version, releaseSalt);
197
+ }
209
198
 
199
+ // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
210
200
  function registerService(IService service)
211
201
  external
212
202
  restricted // GIF_MANAGER_ROLE
213
203
  returns(NftId nftId)
214
204
  {
215
- if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
216
- revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
205
+ VersionPart releaseVersion = _next;
206
+ StateId state = _state[releaseVersion];
207
+
208
+ // verify release in state DEPLOYING
209
+ if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
210
+ // TOOD name must represent failed state transition
211
+ revert ErrorReleaseManagerServiceRegistrationDisallowed(state);
212
+ }
213
+
214
+ _state[releaseVersion] = DEPLOYING();
215
+
216
+ // not all services are registered
217
+ if (_servicesToRegister == _registeredServices) {
218
+ revert ErrorReleaseManagerNoServiceRegistrationExpected();
217
219
  }
218
220
 
221
+ // service can work with release manager
219
222
  (
220
223
  IRegistry.ObjectInfo memory info,
221
- ObjectType domain,
222
- VersionPart version
224
+ ObjectType serviceDomain,
225
+ VersionPart serviceVersion
223
226
  ) = _verifyService(service);
224
227
 
225
- // redundant with state var
226
- if (_awaitingRegistration == 0) {
227
- revert ErrorReleaseManagerNoServiceRegistrationExpected();
228
+ // service domain matches defined in release config
229
+ ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
230
+ if (serviceDomain != expectedDomain) {
231
+ revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
228
232
  }
229
233
 
230
- uint serviceIdx = _awaitingRegistration - 1;
231
- address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
232
- // TODO temp, while typescript addresses computation is not implemented
233
- /*if(address(service) != serviceAddress) {
234
- revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
235
- }*/
236
-
237
- _setServiceAuthorizations(
238
- _releaseAccessManager[version],
239
- // TODO temp, while typescript addresses computation is not implemented
240
- address(service),//serviceAddress,
241
- _releaseInfo[version].names[serviceIdx],
242
- _releaseInfo[version].serviceRoles[serviceIdx],
243
- _releaseInfo[version].serviceRoleNames[serviceIdx],
244
- _releaseInfo[version].functionRoles[serviceIdx],
245
- _releaseInfo[version].functionRoleNames[serviceIdx],
246
- _releaseInfo[version].selectors[serviceIdx]);
247
-
248
- // TODO decide for one of the approaches
249
- // // service to service authorization
250
- // ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
251
- // for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
252
- // _accessManager.setTargetFunctionRole(
253
- // address(service),
254
- // authz.authorizedSelectors[idx],
255
- // authz.authorizedRole[idx]);
256
- // }
257
-
258
- _awaitingRegistration = serviceIdx;
259
- // TODO end state depends on (_awaitingRegistration == 0)
260
- _state = DEPLOYING();
261
-
262
- // checked in registry
263
- _releaseInfo[version].domains.push(domain);
264
-
265
- nftId = _registry.registerService(info, version, domain);
266
-
234
+ // register service with registry
235
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
267
236
  service.linkToRegisteredNftId();
237
+ _registeredServices++;
238
+
239
+ // setup service authorization
240
+ _admin.authorizeService(
241
+ _serviceAuthorization[releaseVersion],
242
+ service);
243
+
244
+ // TODO consider to extend this to REGISTRY
245
+ // special roles for registry/staking/pool service
246
+ if (serviceDomain == STAKING() || serviceDomain == POOL()) {
247
+ // TODO rename to grantServiceDomainRole()
248
+ _admin.grantServiceRoleForAllVersions(service, serviceDomain);
249
+ }
268
250
  }
269
251
 
270
252
 
@@ -272,31 +254,28 @@ contract ReleaseManager is
272
254
  external
273
255
  restricted // GIF_ADMIN_ROLE
274
256
  {
275
- if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
276
- revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
277
- }
278
-
279
257
  VersionPart version = _next;
280
- address service = _registry.getServiceAddress(REGISTRY(), version);
258
+ StateId state = _state[version];
259
+ StateId newState = ACTIVE();
281
260
 
282
- // release exists, registry service is a MUST
283
- //if(_releaseAccessManager[version] == address(0)) {
284
- if(service == address(0)) {
285
- revert ErrorReleaseManagerReleaseNotCreated(version);
261
+ // verify release in state DEPLOYING
262
+ if (!isValidTransition(RELEASE(), state, newState)) {
263
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
286
264
  }
287
265
 
288
266
  // release fully deployed
289
- if(_awaitingRegistration > 0) {
290
- revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
267
+ if(_registeredServices < _servicesToRegister) {
268
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
291
269
  }
292
270
 
293
- // release is not activated
294
- if(_releaseInfo[version].activatedAt.gtz()) {
295
- revert ErrorReleaseManagerReleaseAlreadyActivated(version);
271
+ // release exists, registry service MUST exist
272
+ address service = _registry.getServiceAddress(REGISTRY(), version);
273
+ if(service == address(0)) {
274
+ revert ErrorReleaseManagerReleaseNotCreated(version);
296
275
  }
297
276
 
298
277
  _latest = version;
299
- _state = ACTIVE();
278
+ _state[version] = newState;
300
279
 
301
280
  _releaseVersionByAddress[service] = version;
302
281
  _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
@@ -304,41 +283,49 @@ contract ReleaseManager is
304
283
  emit LogReleaseActivation(version);
305
284
  }
306
285
 
307
- // release becomes disabled after delay expiration (can be reenabled before that)
308
- function disableRelease(VersionPart version, Seconds disableDelay)
286
+ /// @dev stop all operations with release services
287
+ function pauseRelease(VersionPart version)
309
288
  external
310
289
  restricted // GIF_ADMIN_ROLE
311
290
  {
312
- // release was activated
313
- if(_releaseInfo[version].activatedAt.eqz()) {
314
- revert ErrorReleaseManagerReleaseNotActivated(version);
315
- }
291
+ StateId state = _state[version];
292
+ StateId newState = PAUSED();
316
293
 
317
- // release not disabled already
318
- if(_releaseInfo[version].disabledAt.gtz()) {
319
- revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
294
+ // verify release in state ACTIVE
295
+ if (!isValidTransition(RELEASE(), state, newState)) {
296
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
320
297
  }
321
298
 
322
- disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
299
+ // TODO come up with a substitute
300
+ //_releaseAccessManager[version].disable();
323
301
 
324
- _releaseAccessManager[version].disable(disableDelay);
302
+ _state[version] = newState;
303
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
325
304
 
326
- _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
305
+ emit LogReleaseDisabled(version);
327
306
  }
328
-
329
- function enableRelease(VersionPart version)
307
+
308
+ // TODO consider revert if some delay is expired -> becomes disabled automatically
309
+ /// @dev resume operations with release services
310
+ function unpauseRelease(VersionPart version)
330
311
  external
331
312
  restricted // GIF_ADMIN_ROLE
332
313
  {
333
- // release was disabled
334
- //if(_releaseInfo[version].disabledAt.eqz()) {
335
- // revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
336
- //}
314
+ StateId state = _state[version];
315
+ StateId newState = ACTIVE();
316
+
317
+ // verify release in state PAUSED
318
+ if (!isValidTransition(RELEASE(), state, newState)) {
319
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
320
+ }
337
321
 
338
- // reverts if disable delay expired
339
- _releaseAccessManager[version].enable();
322
+ // TODO come up with a substitute
323
+ // _releaseAccessManager[version].enable();
340
324
 
325
+ _state[version] = newState;
341
326
  _releaseInfo[version].disabledAt = zeroTimestamp();
327
+
328
+ emit LogReleaseEnabled(version);
342
329
  }
343
330
 
344
331
  //--- view functions ----------------------------------------------------//
@@ -357,7 +344,7 @@ contract ReleaseManager is
357
344
  }
358
345
 
359
346
  function isActiveRelease(VersionPart version) public view returns(bool) {
360
- return _releaseInfo[version].activatedAt.gtz();
347
+ return _state[version] == ACTIVE();
361
348
  }
362
349
 
363
350
  function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
@@ -376,18 +363,22 @@ contract ReleaseManager is
376
363
  return _initial;
377
364
  }
378
365
 
379
- function getState() external view returns (StateId stateId) {
380
- return _state;
366
+ function getState(VersionPart version) external view returns (StateId stateId) {
367
+ return _state[version];
381
368
  }
382
369
 
383
370
  function getRemainingServicesToRegister() external view returns (uint256 services) {
384
- return _awaitingRegistration;
371
+ return _servicesToRegister - _registeredServices;
385
372
  }
386
373
 
387
- function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
388
- return _releaseAccessManager[version];
374
+ function getServiceAuthorization(VersionPart version)
375
+ external
376
+ view
377
+ returns (IServiceAuthorization serviceAuthorization)
378
+ {
379
+ return _serviceAuthorization[version];
389
380
  }
390
- // TODO tokenr registry knows nothing about adfmin, only registry
381
+
391
382
  function getRegistryAdmin() external view returns (address) {
392
383
  return address(_admin);
393
384
  }
@@ -398,37 +389,6 @@ contract ReleaseManager is
398
389
  return _registry;
399
390
  }
400
391
 
401
- //--- ILifecycle -----------------------------------------------------------//
402
-
403
- function hasLifecycle(ObjectType objectType) external pure returns (bool) { return objectType == RELEASE(); }
404
-
405
- function getInitialState(ObjectType objectType) public pure returns (StateId stateId) {
406
- if (objectType == RELEASE()) {
407
- stateId = INITIAL();
408
- }
409
- }
410
-
411
- function isValidTransition(
412
- ObjectType objectType,
413
- StateId fromId,
414
- StateId toId
415
- )
416
- public
417
- pure
418
- returns (bool isValid)
419
- {
420
- if (objectType != RELEASE()) { return false; }
421
-
422
- if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
423
- if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
424
- if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
425
- if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
426
- if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
427
- // TODO active -> scheduled missing, add tests to cover this and more scenarios (#358)
428
-
429
- return false;
430
- }
431
-
432
392
  //--- private functions ----------------------------------------------------//
433
393
 
434
394
  function _verifyService(IService service)
@@ -441,7 +401,7 @@ contract ReleaseManager is
441
401
  )
442
402
  {
443
403
  if(!service.supportsInterface(type(IService).interfaceId)) {
444
- revert ErrorReleaseManagerNotService(service);
404
+ revert ErrorReleaseManagerNotService(address(service));
445
405
  }
446
406
 
447
407
  address owner = msg.sender;
@@ -452,15 +412,15 @@ contract ReleaseManager is
452
412
 
453
413
  _verifyServiceInfo(service, serviceInfo, owner);
454
414
 
455
- VersionPart releaseVersion = getNextVersion(); // never 0
456
- address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
415
+ VersionPart releaseVersion = _next; // never 0
416
+ address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
457
417
 
458
418
  // IMPORTANT: can not guarantee service access is actually controlled by authority
459
- if(serviceAuthority != releaseAuthority) {
419
+ if(serviceAuthority != expectedAuthority) {
460
420
  revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
461
421
  service,
462
422
  serviceAuthority,
463
- releaseAuthority);
423
+ expectedAuthority);
464
424
  }
465
425
 
466
426
  if(serviceVersion != releaseVersion) {
@@ -488,7 +448,7 @@ contract ReleaseManager is
488
448
  revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
489
449
  }
490
450
 
491
- if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
451
+ if(info.objectType != SERVICE()) {
492
452
  revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
493
453
  }
494
454
 
@@ -507,81 +467,7 @@ contract ReleaseManager is
507
467
  }
508
468
  }
509
469
 
510
-
511
- function _verifyReleaseAuthorizations(
512
- address[] memory serviceAddress,
513
- RoleId[][] memory serviceRoles,
514
- RoleId[][] memory functionRoles,
515
- bytes4[][][] memory selectors
516
- )
517
- internal
518
- pure
519
- {
520
- if(serviceAddress.length == 0) {
521
- revert ErrorReleaseManagerReleaseEmpty();
522
- }
523
-
524
- for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
525
- {
526
- for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
527
- {
528
- RoleId role = serviceRoles[serviceIdx][roleIdx];
529
- if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
530
- revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
531
- }
532
- }
533
- }
534
-
535
- // TODO no duplicate service "domain" role per release
536
- // TODO no duplicate service roles per service
537
- // TODO no duplicate service function roles per service
538
- // TODO no duplicate service function selectors per service
539
- }
540
-
541
- function _setServiceAuthorizations(
542
- AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
543
- address serviceAddress,
544
- string memory serviceName,
545
- RoleId[] memory serviceRoles,
546
- string[] memory serviceRoleNames,
547
- RoleId[] memory functionRoles,
548
- string[] memory functionRoleNames,
549
- bytes4[][] memory selectors
550
- )
551
- internal
552
- {
553
- accessManager.createTarget(serviceAddress, serviceName);
554
-
555
- for(uint idx = 0; idx < functionRoles.length; idx++)
556
- {
557
- uint64 roleInt = functionRoles[idx].toInt();
558
-
559
- if(!accessManager.isRoleExists(roleInt)) {
560
- accessManager.createRole(roleInt, functionRoleNames[idx]);
561
- }
562
-
563
- accessManager.setTargetFunctionRole(
564
- serviceAddress,
565
- selectors[idx],
566
- functionRoles[idx].toInt());
567
- }
568
-
569
- for(uint idx = 0; idx < serviceRoles.length; idx++)
570
- {
571
- uint64 roleInt = serviceRoles[idx].toInt();
572
-
573
- if(!accessManager.isRoleExists(roleInt)) {
574
- accessManager.createRole(roleInt, serviceRoleNames[idx]);
575
- }
576
-
577
- accessManager.grantRole(
578
- serviceRoles[idx].toInt(),
579
- serviceAddress,
580
- 0);
581
- }
582
- }
583
-
584
- // returns true iff a the address passes some simple proxy tests.
470
+ /// @dev returns true iff a the address passes some simple proxy tests.
585
471
  function _isRegistry(address registryAddress) internal view returns (bool) {
586
472
 
587
473
  // zero address is certainly not registry
@@ -589,7 +475,7 @@ contract ReleaseManager is
589
475
  return false;
590
476
  }
591
477
  // TODO try catch and return false in case of revert
592
- // a just panic
478
+ // or just panic
593
479
  // check if contract returns a zero nft id for its own address
594
480
  if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
595
481
  return false;
@@ -598,3 +484,4 @@ contract ReleaseManager is
598
484
  return true;
599
485
  }
600
486
  }
487
+