@etherisc/gif-next 0.0.2-7340474-070 → 0.0.2-742eda3-807

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 (366) hide show
  1. package/README.md +30 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +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 +106 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +55 -55
  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 +32 -16
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -39
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +0 -13
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +27 -39
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +29 -90
  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 +60 -120
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -91
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  63. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -9
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
  81. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +44 -44
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +40 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
  99. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
  102. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
  104. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
  106. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  108. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  110. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  111. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  112. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  114. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  115. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  116. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  118. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  120. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  123. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
  124. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  125. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
  127. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  129. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PricingService.sol/PricingService.json +58 -58
  131. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  133. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  134. package/artifacts/contracts/product/Product.sol/Product.json +13 -153
  135. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  137. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  140. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  141. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  142. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +0 -44
  143. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  144. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  145. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  146. package/artifacts/contracts/registry/Registry.sol/Registry.json +24 -68
  147. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  148. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +233 -388
  149. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  150. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  151. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  153. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  154. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  155. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  156. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +148 -207
  157. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  159. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  160. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  161. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  162. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  163. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +62 -86
  164. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -61
  166. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  168. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  169. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
  173. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  175. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  185. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
  186. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  187. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  188. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  189. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  190. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +22 -22
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  196. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -14
  198. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  200. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  202. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  203. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  205. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  206. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  207. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  208. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  209. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  211. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
  212. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  213. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  214. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  216. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  218. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  219. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  220. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  222. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  224. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  225. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +142 -166
  226. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  227. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
  228. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  229. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  230. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.json +8 -8
  232. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  234. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  236. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  238. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  240. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  241. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  242. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  244. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  246. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  248. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  250. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  252. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  254. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  256. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  258. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  260. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  262. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  264. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  266. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  268. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  270. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  272. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  274. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  276. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  278. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  279. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  280. package/contracts/authorization/Authorization.sol +218 -0
  281. package/contracts/authorization/IAccess.sol +48 -0
  282. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  283. package/contracts/authorization/IAuthorization.sol +54 -0
  284. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  285. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  286. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  287. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  288. package/contracts/distribution/BasicDistribution.sol +149 -0
  289. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  290. package/contracts/distribution/Distribution.sol +126 -104
  291. package/contracts/distribution/DistributionService.sol +10 -5
  292. package/contracts/distribution/IDistributionComponent.sol +17 -35
  293. package/contracts/distribution/IDistributionService.sol +5 -1
  294. package/contracts/instance/IInstance.sol +3 -4
  295. package/contracts/instance/IInstanceService.sol +7 -12
  296. package/contracts/instance/Instance.sol +58 -67
  297. package/contracts/instance/InstanceAdmin.sol +202 -267
  298. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  299. package/contracts/instance/InstanceReader.sol +22 -9
  300. package/contracts/instance/InstanceService.sol +66 -62
  301. package/contracts/instance/InstanceStore.sol +11 -4
  302. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  303. package/contracts/instance/base/ObjectManager.sol +7 -8
  304. package/contracts/oracle/BasicOracle.sol +48 -0
  305. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  306. package/contracts/oracle/IOracle.sol +16 -0
  307. package/contracts/oracle/Oracle.sol +61 -49
  308. package/contracts/pool/BasicPool.sol +164 -0
  309. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  310. package/contracts/pool/IPoolComponent.sol +0 -60
  311. package/contracts/pool/Pool.sol +143 -131
  312. package/contracts/pool/PoolService.sol +1 -1
  313. package/contracts/product/BasicProduct.sol +82 -0
  314. package/contracts/product/BasicProductAuthorization.sol +40 -0
  315. package/contracts/product/IProductComponent.sol +6 -9
  316. package/contracts/product/Product.sol +103 -88
  317. package/contracts/registry/IRegistry.sol +5 -8
  318. package/contracts/registry/Registry.sol +1 -5
  319. package/contracts/registry/RegistryAdmin.sol +103 -71
  320. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  321. package/contracts/registry/ReleaseManager.sol +127 -167
  322. package/contracts/registry/ServiceAuthorizationV3.sol +9 -9
  323. package/contracts/shared/ComponentService.sol +20 -56
  324. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  325. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  326. package/contracts/shared/IKeyValueStore.sol +1 -0
  327. package/contracts/shared/ILifecycle.sol +1 -2
  328. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  329. package/contracts/shared/KeyValueStore.sol +6 -2
  330. package/contracts/shared/Lifecycle.sol +16 -69
  331. package/contracts/staking/StakingLifecycle.sol +23 -0
  332. package/contracts/staking/StakingStore.sol +3 -1
  333. package/contracts/type/ObjectType.sol +34 -0
  334. package/contracts/type/RoleId.sol +55 -82
  335. package/contracts/type/UFixed.sol +6 -0
  336. package/package.json +6 -3
  337. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  338. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  339. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  340. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  341. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  342. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  343. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  344. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  345. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  346. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  347. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  348. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  349. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  350. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  351. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  352. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  353. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  354. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  355. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  356. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  357. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  358. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  359. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  360. package/contracts/shared/AccessManagerCustom.sol +0 -741
  361. package/contracts/shared/AccessManagerExtended.sol +0 -481
  362. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  363. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  364. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  365. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  366. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
@@ -14,11 +14,10 @@ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} fr
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,49 +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";
29
- import {IServiceAuthorization} from "./IServiceAuthorization.sol";
30
- import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
28
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
29
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
31
30
  import {RegistryAdmin} from "./RegistryAdmin.sol";
32
31
  import {Registry} from "./Registry.sol";
33
32
  import {TokenRegistry} from "./TokenRegistry.sol";
33
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
34
34
 
35
-
35
+ // TODO rename to something that does not end with 'Manager'
36
+ // everywhere else *Manager points to an upgradeable contract
36
37
  contract ReleaseManager is
37
- AccessManaged,
38
- ILifecycle,
38
+ AccessManaged,
39
+ ReleaseLifecycle,
39
40
  IRegistryLinked
40
41
  {
41
42
  using ObjectTypeLib for ObjectType;
42
43
 
43
44
  uint256 public constant INITIAL_GIF_VERSION = 3;
44
45
 
45
- event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
46
+ event LogReleaseCreation(VersionPart version, bytes32 salt);
46
47
  event LogReleaseActivation(VersionPart version);
48
+ event LogReleaseDisabled(VersionPart version);
49
+ event LogReleaseEnabled(VersionPart version);
47
50
 
48
51
  // constructor
49
52
  error ErrorReleaseManagerNotRegistry(Registry registry);
50
53
 
51
54
  // createNextRelease
52
- error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
55
+ error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
53
56
 
54
57
  // prepareRelease
55
- error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
56
- error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
57
- error ErrorReleaseManagerVersionMismatch(VersionPart expectedVersion, VersionPart providedVersion);
58
+ error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
59
+ error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
60
+ error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
58
61
  error ErrorReleaseManagerNoDomains(VersionPart version);
59
62
 
60
- // register staking
61
- //error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
62
-
63
63
  // registerService
64
64
  error ErrorReleaseManagerNoServiceRegistrationExpected();
65
65
  error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
66
66
  error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
67
- error ErrorReleaseManagerNotService(IService service);
68
- error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
67
+ error ErrorReleaseManagerNotService(address notService);
68
+ error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
69
69
 
70
70
  // activateNextRelease
71
- error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
71
+ error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
72
72
  error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
73
73
  error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
74
74
  error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
@@ -92,27 +92,24 @@ contract ReleaseManager is
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
- // TODO remove once it's clear that release authority will always be registry authority
101
- mapping(VersionPart version => address authority) internal _releaseAccessManager;
102
99
  mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
103
- mapping(address registryService => VersionPart version) _releaseVersionByAddress;
104
-
105
100
  mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
106
101
 
107
- VersionPart immutable internal _initial;// first active version
102
+ // TODO check where/why this is used
103
+ mapping(address registryService => VersionPart version) _releaseVersionByAddress;
104
+
105
+ VersionPart private _initial;// first active version
108
106
  VersionPart internal _latest; // latest active version
109
107
  VersionPart internal _next; // version to create and activate
110
- StateId internal _state; // current state of release manager
108
+ mapping(VersionPart verson => StateId releaseState) private _state;
111
109
 
112
110
  uint256 internal _registeredServices;
113
111
  uint256 internal _servicesToRegister;
114
112
 
115
- // deployer of this contract must be gif admin
116
113
  constructor(Registry registry)
117
114
  AccessManaged(msg.sender)
118
115
  {
@@ -121,35 +118,26 @@ contract ReleaseManager is
121
118
  revert ErrorReleaseManagerNotRegistry(registry);
122
119
  }
123
120
 
121
+ setAuthority(registry.getAuthority());
122
+
124
123
  _registry = registry;
125
- setAuthority(_registry.getAuthority());
126
124
  _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
127
125
 
128
126
  _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
129
127
  _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
130
- _state = getInitialState(RELEASE());
131
-
132
- AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
133
- masterReleaseAccessManager.initialize(_registry.NFT_LOCK_ADDRESS(), VersionLib.toVersionPart(0));
134
- //masterReleaseAccessManager.disable();
135
- _releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
136
128
  }
137
129
 
138
130
  /// @dev skips previous release if was not activated
139
- /// sets release manager into state SCHEDULED
131
+ /// sets next release into state SCHEDULED
140
132
  function createNextRelease()
141
133
  external
142
134
  restricted() // GIF_ADMIN_ROLE
143
135
  returns(VersionPart)
144
136
  {
145
- if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
146
- revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
147
- }
148
-
149
137
  _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
150
138
  _servicesToRegister = 0;
151
139
  _registeredServices = 0;
152
- _state = SCHEDULED();
140
+ _state[_next] = getInitialState(RELEASE());
153
141
 
154
142
  return _next;
155
143
  }
@@ -166,103 +154,98 @@ contract ReleaseManager is
166
154
  bytes32 releaseSalt
167
155
  )
168
156
  {
169
- // TODO Any call to serviceAuthorization contract must be treated as a call to an external malicious contract
170
- // How can wrong authorizations tamper the core, releases or instances?
171
- (
172
- VersionPart releaseVersion,
173
- uint serviceDomainsCount
174
- ) = serviceAuthorization.getRelease();
157
+ authority = _admin.authority();
158
+ version = _next;
159
+
160
+ // ensures unique salt
161
+ // TODO CreateX have clones capability also
162
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
163
+ releaseSalt = keccak256(
164
+ bytes.concat(
165
+ bytes32(version.toInt()),
166
+ salt));
167
+
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();
175
174
 
176
175
  // verify authorizaion contract release matches with expected version
177
- if (releaseVersion != _next) {
178
- revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
176
+ VersionPart releaseVersion = serviceAuthorization.getRelease();
177
+ if (releaseVersion != version) {
178
+ revert ErrorReleaseManagerVersionMismatch(version, releaseVersion);
179
179
  }
180
180
 
181
+
181
182
  // sanity check to ensure service domain list is not empty
183
+ uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
182
184
  if (serviceDomainsCount == 0) {
183
- revert ErrorReleaseManagerNoDomains(_next);
184
- }
185
-
186
- // verify release manager is in proper state to start deploying a next release
187
- if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
188
- revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
185
+ revert ErrorReleaseManagerNoDomains(version);
189
186
  }
190
187
 
191
188
  // verify prepareNextRelease is only called once per release
192
189
  if(_servicesToRegister > 0) {
193
- revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
190
+ revert ErrorReleaseManagerReleaseAlreadyPrepared(version, _state[version]);
194
191
  }
195
192
 
196
- // store release specific service authorization
197
- _serviceAuthorization[_next] = serviceAuthorization;
198
-
199
- // ensures unique salt
200
- releaseSalt = keccak256(
201
- bytes.concat(
202
- bytes32(version.toInt()),
203
- salt));
204
-
205
- authority = _admin.authority();
206
-
207
- _releaseAccessManager[_next] = authority;
208
193
  _servicesToRegister = serviceDomainsCount;
194
+ _serviceAuthorization[version] = serviceAuthorization;
209
195
 
210
- _state = DEPLOYING();
211
-
212
- emit LogReleaseCreation(version, releaseSalt, authority);
196
+ emit LogReleaseCreation(version, releaseSalt);
213
197
  }
214
198
 
215
-
199
+ // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
216
200
  function registerService(IService service)
217
201
  external
218
202
  restricted // GIF_MANAGER_ROLE
219
203
  returns(NftId nftId)
220
204
  {
221
- // TODO is it usefull to check transition from A to A?
222
- if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
223
- 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);
224
212
  }
225
213
 
214
+ _state[releaseVersion] = DEPLOYING();
215
+
216
+ // not all services are registered
226
217
  if (_servicesToRegister == _registeredServices) {
227
218
  revert ErrorReleaseManagerNoServiceRegistrationExpected();
228
219
  }
229
220
 
221
+ // service can work with release manager
230
222
  (
231
223
  IRegistry.ObjectInfo memory info,
232
- ObjectType domain,
233
- VersionPart version
224
+ ObjectType serviceDomain,
225
+ VersionPart serviceVersion
234
226
  ) = _verifyService(service);
235
227
 
236
- ObjectType expectedDomain = _serviceAuthorization[version].getServiceDomains()[_registeredServices];
237
- if (service.getDomain() != expectedDomain) {
238
- revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, service.getDomain());
228
+ // service domain matches defined in release config
229
+ ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
230
+ if (serviceDomain != expectedDomain) {
231
+ revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
239
232
  }
240
233
 
241
- // checked in registry
242
- _releaseInfo[version].domains.push(domain);
243
-
244
234
  // register service with registry
245
- nftId = _registry.registerService(info, version, domain);
246
- _registeredServices++;
247
-
235
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
248
236
  service.linkToRegisteredNftId();
237
+ _registeredServices++;
249
238
 
250
239
  // setup service authorization
251
240
  _admin.authorizeService(
252
- _serviceAuthorization[version],
241
+ _serviceAuthorization[releaseVersion],
253
242
  service);
254
243
 
255
244
  // TODO consider to extend this to REGISTRY
256
245
  // special roles for registry/staking/pool service
257
- if (domain == STAKING() || domain == POOL()) {
246
+ if (serviceDomain == STAKING() || serviceDomain == POOL()) {
258
247
  // TODO rename to grantServiceDomainRole()
259
- _admin.grantServiceRoleForAllVersions(service, domain);
260
- }
261
-
262
- if (_registeredServices < _servicesToRegister) {
263
- _state = DEPLOYING();
264
- } else {
265
- // TODO end state depends on (_awaitingRegistration == 0)
248
+ _admin.grantServiceRoleForAllVersions(service, serviceDomain);
266
249
  }
267
250
  }
268
251
 
@@ -271,12 +254,16 @@ contract ReleaseManager is
271
254
  external
272
255
  restricted // GIF_ADMIN_ROLE
273
256
  {
274
- if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
275
- revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
257
+ VersionPart version = _next;
258
+ StateId state = _state[version];
259
+ StateId newState = ACTIVE();
260
+
261
+ // verify release in state DEPLOYING
262
+ if (!isValidTransition(RELEASE(), state, newState)) {
263
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
276
264
  }
277
265
 
278
266
  // release fully deployed
279
- VersionPart version = _next;
280
267
  if(_registeredServices < _servicesToRegister) {
281
268
  revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
282
269
  }
@@ -287,13 +274,8 @@ contract ReleaseManager is
287
274
  revert ErrorReleaseManagerReleaseNotCreated(version);
288
275
  }
289
276
 
290
- // release is not activated
291
- if(_releaseInfo[version].activatedAt.gtz()) {
292
- revert ErrorReleaseManagerReleaseAlreadyActivated(version);
293
- }
294
-
295
277
  _latest = version;
296
- _state = ACTIVE();
278
+ _state[version] = newState;
297
279
 
298
280
  _releaseVersionByAddress[service] = version;
299
281
  _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
@@ -301,43 +283,49 @@ contract ReleaseManager is
301
283
  emit LogReleaseActivation(version);
302
284
  }
303
285
 
304
- // release becomes disabled after delay expiration (can be reenabled before that)
305
- function disableRelease(VersionPart version, Seconds disableDelay)
286
+ /// @dev stop all operations with release services
287
+ function pauseRelease(VersionPart version)
306
288
  external
307
289
  restricted // GIF_ADMIN_ROLE
308
290
  {
309
- // release was activated
310
- if(_releaseInfo[version].activatedAt.eqz()) {
311
- revert ErrorReleaseManagerReleaseNotActivated(version);
312
- }
291
+ StateId state = _state[version];
292
+ StateId newState = PAUSED();
313
293
 
314
- // release not disabled already
315
- if(_releaseInfo[version].disabledAt.gtz()) {
316
- revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
294
+ // verify release in state ACTIVE
295
+ if (!isValidTransition(RELEASE(), state, newState)) {
296
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
317
297
  }
318
298
 
319
- disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
320
-
321
299
  // TODO come up with a substitute
322
- // _releaseAccessManager[version].disable(disableDelay);
300
+ //_releaseAccessManager[version].disable();
301
+
302
+ _state[version] = newState;
303
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
323
304
 
324
- _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
305
+ emit LogReleaseDisabled(version);
325
306
  }
326
-
327
- 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)
328
311
  external
329
312
  restricted // GIF_ADMIN_ROLE
330
313
  {
331
- // release was disabled
332
- //if(_releaseInfo[version].disabledAt.eqz()) {
333
- // revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
334
- //}
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
+ }
335
321
 
336
- // reverts if disable delay expired
337
322
  // TODO come up with a substitute
338
323
  // _releaseAccessManager[version].enable();
339
324
 
325
+ _state[version] = newState;
340
326
  _releaseInfo[version].disabledAt = zeroTimestamp();
327
+
328
+ emit LogReleaseEnabled(version);
341
329
  }
342
330
 
343
331
  //--- view functions ----------------------------------------------------//
@@ -356,7 +344,7 @@ contract ReleaseManager is
356
344
  }
357
345
 
358
346
  function isActiveRelease(VersionPart version) public view returns(bool) {
359
- return _releaseInfo[version].activatedAt.gtz();
347
+ return _state[version] == ACTIVE();
360
348
  }
361
349
 
362
350
  function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
@@ -375,20 +363,22 @@ contract ReleaseManager is
375
363
  return _initial;
376
364
  }
377
365
 
378
- function getState() external view returns (StateId stateId) {
379
- return _state;
366
+ function getState(VersionPart version) external view returns (StateId stateId) {
367
+ return _state[version];
380
368
  }
381
369
 
382
370
  function getRemainingServicesToRegister() external view returns (uint256 services) {
383
371
  return _servicesToRegister - _registeredServices;
384
372
  }
385
373
 
386
- // TODO cleanup
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
381
 
391
- // TODO token registry knows nothing about adfmin, only registry
392
382
  function getRegistryAdmin() external view returns (address) {
393
383
  return address(_admin);
394
384
  }
@@ -399,37 +389,6 @@ contract ReleaseManager is
399
389
  return _registry;
400
390
  }
401
391
 
402
- //--- ILifecycle -----------------------------------------------------------//
403
-
404
- function hasLifecycle(ObjectType objectType) external pure returns (bool) { return objectType == RELEASE(); }
405
-
406
- function getInitialState(ObjectType objectType) public pure returns (StateId stateId) {
407
- if (objectType == RELEASE()) {
408
- stateId = INITIAL();
409
- }
410
- }
411
-
412
- function isValidTransition(
413
- ObjectType objectType,
414
- StateId fromId,
415
- StateId toId
416
- )
417
- public
418
- pure
419
- returns (bool isValid)
420
- {
421
- if (objectType != RELEASE()) { return false; }
422
-
423
- if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
424
- if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
425
- if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
426
- if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
427
- if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
428
- // TODO active -> scheduled missing, add tests to cover this and more scenarios (#358)
429
-
430
- return false;
431
- }
432
-
433
392
  //--- private functions ----------------------------------------------------//
434
393
 
435
394
  function _verifyService(IService service)
@@ -442,7 +401,7 @@ contract ReleaseManager is
442
401
  )
443
402
  {
444
403
  if(!service.supportsInterface(type(IService).interfaceId)) {
445
- revert ErrorReleaseManagerNotService(service);
404
+ revert ErrorReleaseManagerNotService(address(service));
446
405
  }
447
406
 
448
407
  address owner = msg.sender;
@@ -453,15 +412,15 @@ contract ReleaseManager is
453
412
 
454
413
  _verifyServiceInfo(service, serviceInfo, owner);
455
414
 
456
- VersionPart releaseVersion = getNextVersion(); // never 0
457
- 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
458
417
 
459
418
  // IMPORTANT: can not guarantee service access is actually controlled by authority
460
- if(serviceAuthority != releaseAuthority) {
419
+ if(serviceAuthority != expectedAuthority) {
461
420
  revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
462
421
  service,
463
422
  serviceAuthority,
464
- releaseAuthority);
423
+ expectedAuthority);
465
424
  }
466
425
 
467
426
  if(serviceVersion != releaseVersion) {
@@ -489,7 +448,7 @@ contract ReleaseManager is
489
448
  revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
490
449
  }
491
450
 
492
- if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
451
+ if(info.objectType != SERVICE()) {
493
452
  revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
494
453
  }
495
454
 
@@ -516,7 +475,7 @@ contract ReleaseManager is
516
475
  return false;
517
476
  }
518
477
  // TODO try catch and return false in case of revert
519
- // a just panic
478
+ // or just panic
520
479
  // check if contract returns a zero nft id for its own address
521
480
  if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
522
481
  return false;
@@ -525,3 +484,4 @@ contract ReleaseManager is
525
484
  return true;
526
485
  }
527
486
  }
487
+
@@ -6,7 +6,7 @@ import {
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
8
  import {ComponentService} from "../shared/ComponentService.sol";
9
- import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
9
+ import {IAccess} from "../authorization/IAccess.sol";
10
10
  import {IBundleService} from "../pool/IBundleService.sol";
11
11
  import {IDistributionService} from "../distribution/IDistributionService.sol";
12
12
  import {InstanceService} from "../instance/InstanceService.sol";
@@ -14,7 +14,7 @@ import {IInstanceService} from "../instance/IInstanceService.sol";
14
14
  import {IPoolService} from "../pool/IPoolService.sol";
15
15
  import {IStakingService} from "../staking/IStakingService.sol";
16
16
  import {IRegistryService} from "./IRegistryService.sol";
17
- import {ServiceAuthorization} from "./ServiceAuthorization.sol";
17
+ import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
18
18
 
19
19
 
20
20
  contract ServiceAuthorizationV3
@@ -64,7 +64,7 @@ contract ServiceAuthorizationV3
64
64
  function _setupIRegistryServiceAuthorization()
65
65
  internal
66
66
  {
67
- IAccessAdmin.Function[] storage functions;
67
+ IAccess.FunctionInfo[] storage functions;
68
68
 
69
69
  functions = _authorizeForService(REGISTRY(), APPLICATION());
70
70
  _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
@@ -98,7 +98,7 @@ contract ServiceAuthorizationV3
98
98
  function _setupStakingServiceAuthorization()
99
99
  internal
100
100
  {
101
- IAccessAdmin.Function[] storage functions;
101
+ IAccess.FunctionInfo[] storage functions;
102
102
 
103
103
  functions = _authorizeForService(STAKING(), INSTANCE());
104
104
  _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
@@ -121,10 +121,10 @@ contract ServiceAuthorizationV3
121
121
  function _setupInstanceServiceAuthorization()
122
122
  internal
123
123
  {
124
- IAccessAdmin.Function[] storage functions;
124
+ IAccess.FunctionInfo[] storage functions;
125
125
 
126
126
  functions = _authorizeForService(INSTANCE(), COMPONENT());
127
- _authorize(functions, IInstanceService.createComponentTarget.selector, "createComponentTarget");
127
+ _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
128
128
  }
129
129
 
130
130
 
@@ -159,7 +159,7 @@ contract ServiceAuthorizationV3
159
159
  function _setupDistributionServiceAuthorization()
160
160
  internal
161
161
  {
162
- IAccessAdmin.Function[] storage functions;
162
+ IAccess.FunctionInfo[] storage functions;
163
163
 
164
164
  functions = _authorizeForService(DISTRIBUTION(), POLICY());
165
165
  _authorize(functions, IDistributionService.processSale.selector, "processSale");
@@ -170,7 +170,7 @@ contract ServiceAuthorizationV3
170
170
  function _setupPoolServiceAuthorization()
171
171
  internal
172
172
  {
173
- IAccessAdmin.Function[] storage functions;
173
+ IAccess.FunctionInfo[] storage functions;
174
174
 
175
175
  functions = _authorizeForService(POOL(), POLICY());
176
176
  _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
@@ -187,7 +187,7 @@ contract ServiceAuthorizationV3
187
187
  function _setupBundleServiceAuthorization()
188
188
  internal
189
189
  {
190
- IAccessAdmin.Function[] storage functions;
190
+ IAccess.FunctionInfo[] storage functions;
191
191
 
192
192
  functions = _authorizeForService(BUNDLE(), POOL());
193
193
  _authorize(functions, IBundleService.create.selector, "create");