@etherisc/gif-next 0.0.2-f1f3b2c-994 → 0.0.2-f2273b3-211

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 (483) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +163 -55
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +94 -14
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +8 -8
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +113 -130
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +275 -171
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +111 -65
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +158 -195
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +336 -295
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -168
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -153
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +717 -292
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +386 -117
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +590 -204
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +445 -375
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +3 -3
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -173
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +94 -106
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +108 -125
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +156 -326
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +330 -368
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +130 -54
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +71 -41
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +181 -116
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -51
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +224 -182
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +112 -63
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -2
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  189. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/Registry.sol/Registry.json +142 -38
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +277 -213
  193. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
  195. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
  197. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  199. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +3 -3
  201. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +337 -65
  203. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +12 -12
  205. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  207. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  208. package/artifacts/contracts/shared/Component.sol/Component.json +105 -104
  209. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
  211. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
  213. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
  215. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  217. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  223. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -86
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +94 -106
  229. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
  242. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  243. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +1 -1
  244. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  245. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +1 -1
  246. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  248. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  250. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  251. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  252. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
  254. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  255. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  256. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Service.sol/Service.json +55 -2
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  262. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  263. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  264. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -136
  266. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
  268. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  269. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -49
  270. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  271. package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -206
  272. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +3 -3
  274. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -51
  276. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -57
  278. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +181 -55
  280. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
  282. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +130 -130
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  292. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  294. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  296. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  298. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  299. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  300. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  302. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  304. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  306. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  308. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  310. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  312. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  314. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  316. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  319. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  321. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  327. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  329. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  331. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  336. package/contracts/accounting/AccountingService.sol +262 -0
  337. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  338. package/contracts/accounting/IAccountingService.sol +45 -0
  339. package/contracts/authorization/AccessAdmin.sol +216 -125
  340. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  341. package/contracts/authorization/Authorization.sol +321 -205
  342. package/contracts/authorization/IAccess.sol +1 -0
  343. package/contracts/authorization/IAccessAdmin.sol +14 -8
  344. package/contracts/authorization/IAuthorization.sol +27 -7
  345. package/contracts/authorization/IServiceAuthorization.sol +1 -1
  346. package/contracts/authorization/ServiceAuthorization.sol +4 -4
  347. package/contracts/distribution/BasicDistribution.sol +15 -12
  348. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  349. package/contracts/distribution/Distribution.sol +41 -47
  350. package/contracts/distribution/DistributionService.sol +100 -78
  351. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  352. package/contracts/distribution/IDistributionComponent.sol +1 -1
  353. package/contracts/distribution/IDistributionService.sol +19 -19
  354. package/contracts/examples/fire/FirePool.sol +25 -10
  355. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  356. package/contracts/examples/fire/FireProduct.sol +40 -13
  357. package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
  358. package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
  359. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  360. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  361. package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
  362. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  363. package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
  364. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  365. package/contracts/instance/BundleSet.sol +42 -38
  366. package/contracts/instance/IInstance.sol +17 -10
  367. package/contracts/instance/IInstanceService.sol +9 -29
  368. package/contracts/instance/Instance.sol +52 -34
  369. package/contracts/instance/InstanceAdmin.sol +249 -100
  370. package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
  371. package/contracts/instance/InstanceReader.sol +174 -32
  372. package/contracts/instance/InstanceService.sol +85 -146
  373. package/contracts/instance/InstanceServiceManager.sol +1 -1
  374. package/contracts/instance/InstanceStore.sol +13 -2
  375. package/contracts/instance/RiskSet.sol +118 -0
  376. package/contracts/instance/base/ObjectCounter.sol +1 -2
  377. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  378. package/contracts/instance/base/ObjectSet.sol +31 -33
  379. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  380. package/contracts/instance/module/IComponents.sol +10 -7
  381. package/contracts/instance/module/IDistribution.sol +2 -1
  382. package/contracts/instance/module/IPolicy.sol +2 -1
  383. package/contracts/instance/module/IRisk.sol +3 -0
  384. package/contracts/oracle/BasicOracle.sol +0 -1
  385. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  386. package/contracts/oracle/IOracleService.sol +2 -1
  387. package/contracts/oracle/Oracle.sol +5 -16
  388. package/contracts/oracle/OracleService.sol +107 -78
  389. package/contracts/oracle/OracleServiceManager.sol +1 -1
  390. package/contracts/pool/BasicPool.sol +33 -24
  391. package/contracts/pool/BasicPoolAuthorization.sol +27 -9
  392. package/contracts/pool/BundleService.sol +88 -154
  393. package/contracts/pool/BundleServiceManager.sol +1 -1
  394. package/contracts/pool/IBundleService.sol +15 -43
  395. package/contracts/pool/IPoolComponent.sol +1 -7
  396. package/contracts/pool/IPoolService.sol +58 -64
  397. package/contracts/pool/Pool.sol +112 -120
  398. package/contracts/pool/PoolLib.sol +216 -0
  399. package/contracts/pool/PoolService.sol +436 -242
  400. package/contracts/pool/PoolServiceManager.sol +1 -1
  401. package/contracts/product/ApplicationService.sol +24 -16
  402. package/contracts/product/ApplicationServiceManager.sol +1 -1
  403. package/contracts/product/BasicProduct.sol +10 -12
  404. package/contracts/product/BasicProductAuthorization.sol +24 -11
  405. package/contracts/product/ClaimService.sol +202 -151
  406. package/contracts/product/ClaimServiceManager.sol +1 -1
  407. package/contracts/product/IApplicationService.sol +5 -2
  408. package/contracts/product/IClaimService.sol +14 -2
  409. package/contracts/product/IPolicyService.sol +26 -11
  410. package/contracts/product/IPricingService.sol +9 -9
  411. package/contracts/product/IProductComponent.sol +10 -1
  412. package/contracts/product/PolicyService.sol +248 -252
  413. package/contracts/product/PolicyServiceLib.sol +65 -0
  414. package/contracts/product/PolicyServiceManager.sol +1 -1
  415. package/contracts/product/PricingService.sol +30 -26
  416. package/contracts/product/PricingServiceManager.sol +3 -3
  417. package/contracts/product/Product.sol +106 -60
  418. package/contracts/product/RiskService.sol +74 -25
  419. package/contracts/product/RiskServiceManager.sol +1 -1
  420. package/contracts/registry/ChainNft.sol +10 -11
  421. package/contracts/registry/IRegistry.sol +14 -15
  422. package/contracts/registry/IRegistryService.sol +6 -4
  423. package/contracts/registry/IRelease.sol +26 -0
  424. package/contracts/registry/ITransferInterceptor.sol +1 -2
  425. package/contracts/registry/Registry.sol +29 -6
  426. package/contracts/registry/RegistryAdmin.sol +132 -226
  427. package/contracts/registry/RegistryService.sol +40 -58
  428. package/contracts/registry/RegistryServiceManager.sol +1 -1
  429. package/contracts/registry/ReleaseAdmin.sol +245 -0
  430. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  431. package/contracts/registry/ReleaseRegistry.sol +139 -124
  432. package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
  433. package/contracts/registry/TokenRegistry.sol +6 -8
  434. package/contracts/shared/Component.sol +69 -118
  435. package/contracts/shared/ComponentService.sol +422 -371
  436. package/contracts/shared/ComponentServiceManager.sol +1 -1
  437. package/contracts/shared/ComponentVerifyingService.sol +27 -15
  438. package/contracts/shared/ContractLib.sol +224 -9
  439. package/contracts/shared/IComponent.sol +8 -20
  440. package/contracts/shared/IComponentService.sol +41 -37
  441. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  442. package/contracts/shared/INftOwnable.sol +2 -0
  443. package/contracts/shared/IRegisterable.sol +23 -1
  444. package/contracts/shared/IService.sol +3 -5
  445. package/contracts/shared/InstanceLinkedComponent.sol +68 -42
  446. package/contracts/shared/Lifecycle.sol +7 -7
  447. package/contracts/shared/NftOwnable.sol +26 -6
  448. package/contracts/shared/PolicyHolder.sol +1 -1
  449. package/contracts/shared/Registerable.sol +53 -19
  450. package/contracts/shared/RegistryLinked.sol +7 -13
  451. package/contracts/shared/Service.sol +9 -31
  452. package/contracts/shared/TokenHandler.sol +274 -72
  453. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  454. package/contracts/staking/IStaking.sol +6 -10
  455. package/contracts/staking/IStakingService.sol +12 -4
  456. package/contracts/staking/StakeManagerLib.sol +69 -20
  457. package/contracts/staking/Staking.sol +73 -41
  458. package/contracts/staking/StakingReader.sol +1 -16
  459. package/contracts/staking/StakingService.sol +70 -24
  460. package/contracts/staking/StakingServiceManager.sol +5 -4
  461. package/contracts/type/Key32.sol +2 -2
  462. package/contracts/type/Key32Set.sol +62 -0
  463. package/contracts/type/NftId.sol +6 -0
  464. package/contracts/type/ObjectType.sol +48 -21
  465. package/contracts/type/RiskId.sol +23 -6
  466. package/contracts/type/RoleId.sol +23 -15
  467. package/contracts/type/Selector.sol +5 -0
  468. package/contracts/type/Timestamp.sol +0 -5
  469. package/contracts/type/UFixed.sol +9 -119
  470. package/contracts/type/Version.sol +15 -5
  471. package/contracts/upgradeability/ProxyManager.sol +2 -1
  472. package/package.json +3 -3
  473. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  474. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  475. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  476. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  477. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  479. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  480. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  481. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  482. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  483. package/contracts/instance/module/IAccess.sol +0 -46
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
6
6
 
7
+ import {ContractLib} from "../shared/ContractLib.sol";
7
8
  import {NftId} from "../type/NftId.sol";
8
9
  import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
9
10
  import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
@@ -12,30 +13,37 @@ import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "
12
13
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
13
14
 
14
15
  import {IService} from "../shared/IService.sol";
15
- import {IRegisterable} from "../shared/IRegisterable.sol";
16
+
17
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
18
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
16
19
 
17
20
  import {IRegistry} from "./IRegistry.sol";
21
+ import {IRelease} from "./IRelease.sol";
18
22
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
19
23
  import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
20
24
  import {RegistryAdmin} from "./RegistryAdmin.sol";
21
25
  import {Registry} from "./Registry.sol";
22
26
  import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
23
-
24
- // TODO rename to something that does not end with 'Manager'
25
- // everywhere else *Manager points to an upgradeable contract
27
+ import {ReleaseAdmin} from "./ReleaseAdmin.sol";
28
+
29
+ /// @dev The ReleaseRegistry manages the lifecycle of major GIF releases and their services.
30
+ /// The creation of a new GIF release is a multi-step process:
31
+ /// 1. The creation of a new GIF release is initiated by the GIF admin.
32
+ /// 2. A GIF manager then prepares the release by setting up the service authorization contract.
33
+ /// 3. The GIF manager deploys and registers all related service contracts with the release registry.
34
+ /// 4. The GIF admin verifies and activates the release.
35
+ /// 3. The GIF admin may pause and resume a release.
26
36
  contract ReleaseRegistry is
27
37
  AccessManaged,
28
38
  ReleaseLifecycle,
29
39
  IRegistryLinked
30
40
  {
31
- using ObjectTypeLib for ObjectType;
32
-
33
- uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
41
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
34
42
 
35
- event LogReleaseCreation(VersionPart version, bytes32 salt);
36
- event LogReleaseActivation(VersionPart version);
37
- event LogReleaseDisabled(VersionPart version);
38
- event LogReleaseEnabled(VersionPart version);
43
+ event LogReleaseCreation(IAccessAdmin admin, VersionPart release, bytes32 salt);
44
+ event LogReleaseActivation(VersionPart release);
45
+ event LogReleaseDisabled(VersionPart release);
46
+ event LogReleaseEnabled(VersionPart release);
39
47
 
40
48
  // constructor
41
49
  error ErrorReleaseRegistryNotRegistry(Registry registry);
@@ -43,7 +51,7 @@ contract ReleaseRegistry is
43
51
  // _verifyServiceAuthorization
44
52
  error ErrorReleaseRegistryNotServiceAuth(address notAuth);
45
53
  error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
46
- error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
54
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
47
55
 
48
56
  // registerService
49
57
  error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
@@ -65,25 +73,24 @@ contract ReleaseRegistry is
65
73
  error ErrorReleaseRegistryServiceSelfRegistration(IService service);
66
74
  error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
67
75
 
68
- Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
69
-
70
76
  RegistryAdmin public immutable _admin;
71
77
  Registry public immutable _registry;
72
78
 
73
- mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
74
- uint256 _releases;
79
+ mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
80
+ VersionPart [] internal _release; // array of all created releases
81
+ ReleaseAdmin internal _masterReleaseAdmin;
75
82
 
76
- VersionPart internal _latest; // latest active version
77
- VersionPart internal _next; // version to create and activate
83
+ VersionPart internal _latest; // latest active release
84
+ VersionPart internal _next; // release version to create and activate
78
85
 
79
- uint256 internal _registeredServices;
80
- uint256 internal _servicesToRegister;
86
+ // counters per release
87
+ uint256 internal _registeredServices = 0;
88
+ uint256 internal _servicesToRegister = 0;
81
89
 
82
90
  constructor(Registry registry)
83
91
  AccessManaged(msg.sender)
84
92
  {
85
- // TODO move this part to RegistryLinked constructor
86
- if(!_isRegistry(address(registry))) {
93
+ if (!ContractLib.isRegistry(address(registry))) {
87
94
  revert ErrorReleaseRegistryNotRegistry(registry);
88
95
  }
89
96
 
@@ -92,27 +99,31 @@ contract ReleaseRegistry is
92
99
  _registry = registry;
93
100
  _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
94
101
 
102
+ _masterReleaseAdmin = new ReleaseAdmin();
103
+
95
104
  _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
96
105
  }
97
106
 
98
- /// @dev sets previous release into SKIPPED state if it was created but not activated
99
- /// sets next release into state SCHEDULED
107
+ /// @dev Initiates the creation of a new GIF release by the GIF admin.
108
+ /// Sets previous release into SKIPPED state if it was created but not activated.
109
+ /// Sets the new release into state SCHEDULED.
100
110
  function createNextRelease()
101
111
  external
102
112
  restricted() // GIF_ADMIN_ROLE
103
113
  returns(VersionPart)
104
114
  {
105
- VersionPart version = _next;
115
+ VersionPart release = _next;
106
116
 
107
- if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
108
- _releaseInfo[version].state = SKIPPED();
117
+ if(isValidTransition(RELEASE(), _releaseInfo[release].state, SKIPPED())) {
118
+ _releaseInfo[release].state = SKIPPED();
109
119
  }
110
120
 
111
- version = VersionPartLib.toVersionPart(version.toInt() + 1);
121
+ release = VersionPartLib.toVersionPart(release.toInt() + 1);
122
+ _release.push(release);
112
123
 
113
- _next = version;
114
- _releaseInfo[version].version = version;
115
- _releaseInfo[version].state = getInitialState(RELEASE());
124
+ _next = release;
125
+ _releaseInfo[release].version = release;
126
+ _releaseInfo[release].state = getInitialState(RELEASE());
116
127
  _servicesToRegister = 0;
117
128
  _registeredServices = 0;
118
129
 
@@ -126,7 +137,7 @@ contract ReleaseRegistry is
126
137
  external
127
138
  restricted() // GIF_MANAGER_ROLE
128
139
  returns(
129
- address releaseAuthority,
140
+ ReleaseAdmin releaseAdmin,
130
141
  VersionPart releaseVersion,
131
142
  bytes32 releaseSalt
132
143
  )
@@ -136,10 +147,13 @@ contract ReleaseRegistry is
136
147
  // release can transition into DEPLOYING state
137
148
  checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
138
149
 
150
+ // verify authorizations
139
151
  uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
140
152
 
141
- releaseAuthority = _admin.authority();
153
+ // create and initialize release admin
154
+ releaseAdmin = _cloneNewReleaseAdmin(releaseVersion);
142
155
  releaseSalt = salt;
156
+
143
157
  // ensures unique salt
144
158
  // TODO CreateX have clones capability also
145
159
  // what would releaseSalt look like if used with CreateX in pemissioned mode?
@@ -153,9 +167,9 @@ contract ReleaseRegistry is
153
167
  _releaseInfo[releaseVersion].salt = releaseSalt;
154
168
  // TODO allow for the same serviceAuthorization address to be used for multiple releases?
155
169
  _releaseInfo[releaseVersion].auth = serviceAuthorization;
156
- //_releaseInfo[releaseVersion].authority = releaseAuthority;
170
+ _releaseInfo[releaseVersion].releaseAdmin = address(releaseAdmin);
157
171
 
158
- emit LogReleaseCreation(releaseVersion, releaseSalt);
172
+ emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
159
173
  }
160
174
 
161
175
  function registerService(IService service)
@@ -168,9 +182,9 @@ contract ReleaseRegistry is
168
182
  // release can transition to DEPLOYED state
169
183
  checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
170
184
 
171
- address releaseAuthority = _admin.authority();
172
- IServiceAuthorization serviceAuth = _releaseInfo[releaseVersion].auth;
173
- ObjectType expectedDomain = serviceAuth.getServiceDomain(_registeredServices);
185
+ address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
186
+ IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
187
+ ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
174
188
 
175
189
  // service can work with release registry and release version
176
190
  (
@@ -200,90 +214,82 @@ contract ReleaseRegistry is
200
214
  // revert ErrorReleaseRegistryServiceAddressMismatch()
201
215
 
202
216
  // setup service authorization
203
- _admin.authorizeService(
204
- serviceAuth,
217
+ ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
218
+ releaseAdmin.setReleaseLocked(false);
219
+ releaseAdmin.authorizeService(
220
+ releaseAuth,
205
221
  service,
206
222
  serviceDomain,
207
223
  releaseVersion);
224
+ releaseAdmin.setReleaseLocked(true);
208
225
 
209
226
  // register service with registry
210
227
  nftId = _registry.registerService(info, serviceVersion, serviceDomain);
211
228
  service.linkToRegisteredNftId();
212
229
  }
230
+
231
+
213
232
  // TODO return activated version
214
233
  function activateNextRelease()
215
234
  external
216
235
  restricted // GIF_ADMIN_ROLE
217
236
  {
218
- VersionPart version = _next;
237
+ VersionPart release = _next;
219
238
 
220
239
  // release can transition to ACTIVE state
221
- checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
240
+ checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
222
241
 
223
- _latest = version;
224
- _releases++;
225
- _releaseInfo[version].state = ACTIVE();
226
- _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
242
+ _latest = release;
243
+ _releaseInfo[release].state = ACTIVE();
244
+ _releaseInfo[release].activatedAt = TimestampLib.blockTimestamp();
245
+ _releaseInfo[release].disabledAt = TimestampLib.max();
227
246
 
228
247
  // grant special roles for registry/staking/pool services
229
248
  // this will enable access to core contracts functions
230
249
 
231
250
  // registry service MUST be registered for each release
232
- address service = _registry.getServiceAddress(REGISTRY(), version);
251
+ address service = _registry.getServiceAddress(REGISTRY(), release);
233
252
  if(service == address(0)) {
234
- revert ErrorReleaseRegistryRegistryServiceMissing(version);
253
+ revert ErrorReleaseRegistryRegistryServiceMissing(release);
235
254
  }
236
255
 
237
256
  _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
238
257
 
239
- service = _registry.getServiceAddress(STAKING(), version);
258
+ service = _registry.getServiceAddress(STAKING(), release);
240
259
  if(service != address(0)) {
241
260
  _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
242
261
  }
243
262
 
244
- service = _registry.getServiceAddress(POOL(), version);
263
+ service = _registry.getServiceAddress(POOL(), release);
245
264
  if(service != address(0)) {
246
265
  _admin.grantServiceRoleForAllVersions(IService(service), POOL());
247
266
  }
248
267
 
249
- // TODO may run out of gas
250
- // TODO test how many service can be locked in one transaction
251
- // -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
252
- _setReleaseLocked(version, false);
268
+ _setReleaseLocked(release, false);
253
269
 
254
- emit LogReleaseActivation(version);
270
+ emit LogReleaseActivation(release);
255
271
  }
256
272
 
257
- /// @dev stop all operations with release services
258
- function pauseRelease(VersionPart version)
259
- external
260
- restricted // GIF_ADMIN_ROLE
273
+ /// @dev stop/resume operations with restricted functions
274
+ function setActive(VersionPart release, bool active)
275
+ public
276
+ restricted
261
277
  {
262
- // release can transition to PAUSED state
263
- checkTransition(_releaseInfo[version].state, RELEASE(), ACTIVE(), PAUSED());
264
-
265
- _releaseInfo[version].state = PAUSED();
266
- _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
267
-
268
- _setReleaseLocked(version, true);
269
-
270
- emit LogReleaseDisabled(version);
271
- }
272
-
273
- /// @dev resume operations with release services
274
- function unpauseRelease(VersionPart version)
275
- external
276
- restricted // GIF_ADMIN_ROLE
277
- {
278
- // release can transition to ACTIVE state
279
- checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
280
-
281
- _releaseInfo[version].state = ACTIVE();
282
- _releaseInfo[version].disabledAt = zeroTimestamp();
283
-
284
- _setReleaseLocked(version, false);
278
+ StateId state = _releaseInfo[release].state;
279
+
280
+ if(active) {
281
+ checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
282
+ _releaseInfo[release].state = ACTIVE();
283
+ _releaseInfo[release].disabledAt = TimestampLib.max();
284
+ emit LogReleaseEnabled(release);
285
+ } else {
286
+ checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
287
+ _releaseInfo[release].state = PAUSED();
288
+ _releaseInfo[release].disabledAt = TimestampLib.blockTimestamp();
289
+ emit LogReleaseDisabled(release);
290
+ }
285
291
 
286
- emit LogReleaseEnabled(version);
292
+ _setReleaseLocked(release, !active);
287
293
  }
288
294
 
289
295
  //--- view functions ----------------------------------------------------//
@@ -296,40 +302,51 @@ contract ReleaseRegistry is
296
302
  return Clones.predictDeterministicAddress(implementation, salt, deployer);
297
303
  }
298
304
 
299
- function isActiveRelease(VersionPart version) public view returns(bool) {
300
- return _releaseInfo[version].state == ACTIVE();
305
+ function isActiveRelease(VersionPart release) public view returns(bool) {
306
+ return _releaseInfo[release].state == ACTIVE();
301
307
  }
302
308
 
303
- function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
304
- return _releaseInfo[version];
309
+ function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
310
+ return _releaseInfo[release];
305
311
  }
306
312
 
313
+ /// @dev Returns the number of created releases.
314
+ /// Releases might be in another state than ACTIVE.
307
315
  function releases() external view returns (uint) {
308
- return _releases;
316
+ return _release.length;
317
+ }
318
+
319
+ /// @dev Returns the n-th release version.
320
+ /// Valid values for idx [0 .. releases() - 1]
321
+ function getVersion(uint256 idx) external view returns (VersionPart release) {
322
+ // return _releases;
323
+ return _release[idx];
309
324
  }
310
325
 
311
326
  function getNextVersion() public view returns(VersionPart) {
312
327
  return _next;
313
328
  }
314
329
 
330
+ /// @dev Returns the latest activated relase version.
331
+ /// There is no guarantee that the release is not currently paused.
315
332
  function getLatestVersion() external view returns(VersionPart) {
316
333
  return _latest;
317
334
  }
318
335
 
319
- function getState(VersionPart version) external view returns (StateId stateId) {
320
- return _releaseInfo[version].state;
336
+ function getState(VersionPart release) external view returns (StateId stateId) {
337
+ return _releaseInfo[release].state;
321
338
  }
322
339
 
323
340
  function getRemainingServicesToRegister() external view returns (uint256 services) {
324
341
  return _servicesToRegister - _registeredServices;
325
342
  }
326
343
 
327
- function getServiceAuthorization(VersionPart version)
344
+ function getServiceAuthorization(VersionPart release)
328
345
  external
329
346
  view
330
347
  returns (IServiceAuthorization serviceAuthorization)
331
348
  {
332
- return _releaseInfo[version].auth;
349
+ return _releaseInfo[release].auth;
333
350
  }
334
351
 
335
352
  function getRegistryAdmin() external view returns (address) {
@@ -344,27 +361,41 @@ contract ReleaseRegistry is
344
361
 
345
362
  //--- private functions ----------------------------------------------------//
346
363
 
347
- // close / open service targets instead of revoking / granting roles
348
- function _setReleaseLocked(VersionPart version, bool locked)
364
+ function _setReleaseLocked(VersionPart release, bool locked)
349
365
  private
350
366
  {
351
- address service;
352
- ObjectType domain;
353
- IServiceAuthorization auth = _releaseInfo[version].auth;
354
-
355
- ObjectType[] memory domains = auth.getServiceDomains();
356
- for(uint idx = 0; idx < domains.length; idx++)
357
- {
358
- domain = domains[idx];
359
- service = _registry.getServiceAddress(domain, version);
360
- assert(service != address(0));
361
-
362
- _admin.setServiceLocked(IService(service), locked);
363
- }
367
+ ReleaseAdmin(
368
+ _releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
369
+ }
370
+
371
+
372
+ function _cloneNewReleaseAdmin(VersionPart release)
373
+ private
374
+ returns (ReleaseAdmin clonedAdmin)
375
+ {
376
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
377
+ Clones.clone(
378
+ _masterReleaseAdmin.authority()
379
+ )
380
+ );
364
381
 
365
- // TODO add check for active/disabled release to core contracts functions interacting with releases
382
+ clonedAdmin = ReleaseAdmin(
383
+ Clones.clone(
384
+ address(_masterReleaseAdmin)
385
+ )
386
+ );
387
+
388
+ clonedAdmin.initialize(clonedAccessManager);
389
+ clonedAdmin.completeSetup(
390
+ address(_registry),
391
+ address(this), // release registry (this contract)
392
+ release);
393
+
394
+ // lock release (remains locked until activation)
395
+ clonedAdmin.setReleaseLocked(true);
366
396
  }
367
397
 
398
+
368
399
  function _verifyServiceAuthorization(
369
400
  IServiceAuthorization serviceAuthorization,
370
401
  VersionPart releaseVersion,
@@ -476,21 +507,5 @@ contract ReleaseRegistry is
476
507
  revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
477
508
  }
478
509
  }
479
-
480
- /// @dev returns true iff a the address passes some simple proxy tests.
481
- function _isRegistry(address registryAddress) internal view returns (bool) {
482
-
483
- // zero address is certainly not registry
484
- if (registryAddress == address(0)) {
485
- return false;
486
- }
487
- // TODO try catch and return false in case of revert or just panic
488
- // check if contract returns a zero nft id for its own address
489
- if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
490
- return false;
491
- }
492
-
493
- return true;
494
- }
495
510
  }
496
511