@etherisc/gif-next 0.0.2-f12cf4d-104 → 0.0.2-f13fd28-503

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 (455) hide show
  1. package/README.md +23 -1
  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 +148 -62
  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 +149 -21
  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 +82 -12
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +100 -102
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +51 -53
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +140 -110
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -40
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  38. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +102 -56
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +260 -199
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +140 -91
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -77
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -62
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +306 -161
  60. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  62. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
  64. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -18
  66. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/Instance.sol/Instance.json +150 -59
  68. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +362 -99
  70. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
  72. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +549 -218
  74. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +87 -73
  76. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
  78. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
  80. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  82. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  84. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  85. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  87. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  89. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  91. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  92. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  93. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  98. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +68 -70
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
  103. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +38 -40
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -54
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +98 -83
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +40 -22
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  115. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -53
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -310
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -83
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  123. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -122
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -40
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
  128. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  129. package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -53
  130. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  131. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +241 -302
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -45
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +91 -65
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -22
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -144
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -187
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -55
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -131
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -181
  162. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  163. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  164. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +51 -45
  166. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
  168. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
  170. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  171. package/artifacts/contracts/product/Product.sol/Product.json +157 -144
  172. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
  174. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
  176. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  178. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +26 -2
  180. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  181. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  182. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  183. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  184. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  185. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
  187. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
  189. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
  191. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
  193. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  194. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  195. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  197. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +316 -50
  199. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  201. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  203. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  204. package/artifacts/contracts/shared/Component.sol/Component.json +51 -39
  205. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +200 -472
  207. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +50 -64
  209. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  211. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +435 -5
  213. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  219. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -26
  221. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +106 -305
  223. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -40
  225. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  226. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  227. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  231. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  234. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  235. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +51 -53
  237. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  238. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  239. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  241. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  242. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  243. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  244. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  245. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  246. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  247. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  248. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  249. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  250. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  255. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  257. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  258. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +41 -29
  259. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  260. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +98 -3
  261. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  262. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -33
  263. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  264. package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -60
  265. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  267. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +31 -19
  269. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  271. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +137 -51
  273. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +22 -20
  275. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  277. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  278. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  279. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  280. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  282. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  285. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  287. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  289. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  291. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  292. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  293. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  295. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  296. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  297. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  299. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  301. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  303. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  305. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  307. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  309. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  312. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  314. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  318. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  320. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  322. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  324. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  325. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  326. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
  327. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  328. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  329. package/contracts/accounting/AccountingService.sol +262 -0
  330. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  331. package/contracts/accounting/IAccountingService.sol +45 -0
  332. package/contracts/authorization/AccessAdmin.sol +177 -84
  333. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  334. package/contracts/authorization/Authorization.sol +277 -229
  335. package/contracts/authorization/IAccessAdmin.sol +13 -7
  336. package/contracts/authorization/IAuthorization.sol +15 -1
  337. package/contracts/distribution/BasicDistribution.sol +6 -6
  338. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  339. package/contracts/distribution/Distribution.sol +32 -30
  340. package/contracts/distribution/DistributionService.sol +32 -30
  341. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  342. package/contracts/distribution/IDistributionService.sol +5 -6
  343. package/contracts/examples/fire/FirePool.sol +6 -2
  344. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  345. package/contracts/examples/fire/FireProduct.sol +8 -1
  346. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  347. package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
  348. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  349. package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
  350. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  351. package/contracts/examples/unpermissioned/SimpleProduct.sol +32 -0
  352. package/contracts/instance/BundleSet.sol +42 -38
  353. package/contracts/instance/IInstance.sol +13 -9
  354. package/contracts/instance/IInstanceService.sol +7 -6
  355. package/contracts/instance/Instance.sol +33 -18
  356. package/contracts/instance/InstanceAdmin.sol +247 -82
  357. package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
  358. package/contracts/instance/InstanceReader.sol +162 -32
  359. package/contracts/instance/InstanceService.sol +62 -72
  360. package/contracts/instance/InstanceServiceManager.sol +1 -1
  361. package/contracts/instance/InstanceStore.sol +13 -2
  362. package/contracts/instance/RiskSet.sol +118 -0
  363. package/contracts/instance/base/ObjectCounter.sol +1 -2
  364. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  365. package/contracts/instance/base/ObjectSet.sol +31 -33
  366. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  367. package/contracts/instance/module/IComponents.sol +3 -2
  368. package/contracts/instance/module/IRisk.sol +3 -0
  369. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  370. package/contracts/oracle/Oracle.sol +1 -1
  371. package/contracts/oracle/OracleService.sol +92 -74
  372. package/contracts/oracle/OracleServiceManager.sol +1 -1
  373. package/contracts/pool/BasicPoolAuthorization.sol +21 -13
  374. package/contracts/pool/BundleService.sol +35 -125
  375. package/contracts/pool/BundleServiceManager.sol +1 -1
  376. package/contracts/pool/IBundleService.sol +13 -38
  377. package/contracts/pool/IPoolService.sol +49 -56
  378. package/contracts/pool/Pool.sol +9 -9
  379. package/contracts/pool/PoolLib.sol +216 -0
  380. package/contracts/pool/PoolService.sol +323 -186
  381. package/contracts/pool/PoolServiceManager.sol +1 -1
  382. package/contracts/product/ApplicationService.sol +15 -15
  383. package/contracts/product/ApplicationServiceManager.sol +1 -1
  384. package/contracts/product/BasicProduct.sol +2 -0
  385. package/contracts/product/BasicProductAuthorization.sol +24 -10
  386. package/contracts/product/ClaimService.sol +157 -139
  387. package/contracts/product/ClaimServiceManager.sol +1 -1
  388. package/contracts/product/IApplicationService.sol +5 -2
  389. package/contracts/product/IClaimService.sol +14 -2
  390. package/contracts/product/IPolicyService.sol +23 -10
  391. package/contracts/product/IProductComponent.sol +4 -1
  392. package/contracts/product/PolicyService.sol +269 -257
  393. package/contracts/product/PolicyServiceLib.sol +65 -0
  394. package/contracts/product/PolicyServiceManager.sol +1 -1
  395. package/contracts/product/PricingService.sol +23 -19
  396. package/contracts/product/PricingServiceManager.sol +3 -3
  397. package/contracts/product/Product.sol +53 -7
  398. package/contracts/product/RiskService.sol +74 -25
  399. package/contracts/product/RiskServiceManager.sol +1 -1
  400. package/contracts/registry/ChainNft.sol +4 -2
  401. package/contracts/registry/IRegistry.sol +8 -15
  402. package/contracts/registry/IRelease.sol +26 -0
  403. package/contracts/registry/Registry.sol +7 -2
  404. package/contracts/registry/RegistryAdmin.sol +129 -237
  405. package/contracts/registry/RegistryService.sol +3 -3
  406. package/contracts/registry/RegistryServiceManager.sol +1 -1
  407. package/contracts/registry/ReleaseAdmin.sol +245 -0
  408. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  409. package/contracts/registry/ReleaseRegistry.sol +127 -101
  410. package/contracts/registry/ServiceAuthorizationV3.sol +84 -40
  411. package/contracts/registry/TokenRegistry.sol +6 -8
  412. package/contracts/shared/Component.sol +40 -42
  413. package/contracts/shared/ComponentService.sol +199 -286
  414. package/contracts/shared/ComponentServiceManager.sol +1 -1
  415. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  416. package/contracts/shared/ContractLib.sol +208 -9
  417. package/contracts/shared/IComponent.sol +3 -9
  418. package/contracts/shared/IComponentService.sol +9 -27
  419. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  420. package/contracts/shared/IRegisterable.sol +15 -4
  421. package/contracts/shared/IService.sol +3 -5
  422. package/contracts/shared/InstanceLinkedComponent.sol +3 -11
  423. package/contracts/shared/NftOwnable.sol +4 -4
  424. package/contracts/shared/PolicyHolder.sol +1 -1
  425. package/contracts/shared/Registerable.sol +45 -19
  426. package/contracts/shared/RegistryLinked.sol +1 -1
  427. package/contracts/shared/Service.sol +8 -27
  428. package/contracts/shared/TokenHandler.sol +40 -96
  429. package/contracts/staking/IStaking.sol +1 -9
  430. package/contracts/staking/IStakingService.sol +11 -1
  431. package/contracts/staking/StakeManagerLib.sol +63 -7
  432. package/contracts/staking/Staking.sol +45 -20
  433. package/contracts/staking/StakingReader.sol +1 -1
  434. package/contracts/staking/StakingService.sol +53 -57
  435. package/contracts/staking/StakingServiceManager.sol +5 -4
  436. package/contracts/type/Key32.sol +2 -2
  437. package/contracts/type/Key32Set.sol +62 -0
  438. package/contracts/type/NftId.sol +6 -0
  439. package/contracts/type/ObjectType.sol +48 -21
  440. package/contracts/type/RiskId.sol +23 -6
  441. package/contracts/type/RoleId.sol +24 -4
  442. package/contracts/type/Selector.sol +5 -0
  443. package/contracts/type/Timestamp.sol +0 -5
  444. package/contracts/type/UFixed.sol +9 -119
  445. package/contracts/type/Version.sol +15 -5
  446. package/contracts/upgradeability/ProxyManager.sol +1 -1
  447. package/package.json +1 -1
  448. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  449. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  450. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  451. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  452. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  453. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  454. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  455. package/contracts/instance/module/IAccess.sol +0 -46
@@ -0,0 +1,245 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
5
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
9
+ import {ObjectType, ObjectTypeLib, ALL} from "../type/ObjectType.sol";
10
+ import {RoleId, RoleIdLib, ADMIN_ROLE, RELEASE_REGISTRY_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
11
+ import {VersionPart} from "../type/Version.sol";
12
+
13
+ /// @dev The ReleaseAdmin contract implements the central authorization for the services of a specific release.
14
+ /// There is one ReleaseAdmin contract per major GIF release.
15
+ /// Locking/unlocking of all services of a release is implemented in function setReleaseLocked.
16
+ contract ReleaseAdmin is
17
+ AccessAdmin
18
+ {
19
+ event LogReleaseAdminReleaseLockChanged(VersionPart release, bool locked);
20
+ event LogReleaseAdminServiceLockChanged(VersionPart release, address service, bool locked);
21
+
22
+ error ErrorReleaseAdminCallerNotReleaseRegistry(address caller);
23
+ error ErrorReleaseAdminNotService(address notService);
24
+ error ErrorReleaseAdminReleaseLockAlreadySetTo(bool locked);
25
+
26
+ /// @dev release core roles
27
+ string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
28
+
29
+ /// @dev release core targets
30
+ string public constant RELEASE_ADMIN_TARGET_NAME = "ReleaseAdmin";
31
+
32
+
33
+ modifier onlyReleaseRegistry() {
34
+ (bool isMember, ) = _authority.hasRole(RELEASE_REGISTRY_ROLE().toInt(), msg.sender);
35
+ if(!isMember) {
36
+ revert ErrorReleaseAdminCallerNotReleaseRegistry(msg.sender);
37
+ }
38
+ _;
39
+ }
40
+
41
+ /// @dev Only used for master release admin.
42
+ /// Contracts created via constructor come with disabled initializers.
43
+ constructor() {
44
+ initialize(new AccessManagerCloneable());
45
+ _disableInitializers();
46
+ }
47
+
48
+ function completeSetup(
49
+ address registry,
50
+ address releaseRegistry,
51
+ VersionPart release
52
+ )
53
+ external
54
+ reinitializer(uint64(release.toInt()))
55
+ {
56
+ AccessManagerCloneable(
57
+ authority()).completeSetup(
58
+ registry,
59
+ release);
60
+
61
+ _setupReleaseRegistry(releaseRegistry);
62
+ }
63
+
64
+ /// @dev Sets up authorizaion for specified service.
65
+ /// For all authorized services its authorized functions are enabled.
66
+ /// Permissioned function: Access is restricted to release registry.
67
+ function authorizeService(
68
+ IServiceAuthorization serviceAuthorization,
69
+ IService service,
70
+ ObjectType serviceDomain,
71
+ VersionPart releaseVersion
72
+ )
73
+ external
74
+ restricted()
75
+ {
76
+ _createServiceTargetAndRole(service, serviceDomain, releaseVersion);
77
+ _authorizeServiceFunctions(serviceAuthorization, service, serviceDomain, releaseVersion);
78
+ }
79
+
80
+ /// @dev Locks/unlocks all release targets.
81
+ /// For all authorized services of release its authorized functions are disabled/enabled.
82
+ /// Permissioned function: Access is restricted to release registry.
83
+ /// Note: onlyReleaseRegistry() modifier is used to prevent dead lock.
84
+ function setReleaseLocked(bool locked)
85
+ external
86
+ onlyReleaseRegistry()
87
+ {
88
+ // checks
89
+ AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
90
+ if(accessManager.isLocked() == locked) {
91
+ revert ErrorReleaseAdminReleaseLockAlreadySetTo(locked);
92
+ }
93
+
94
+ // effects
95
+ accessManager.setLocked(locked);
96
+
97
+ emit LogReleaseAdminReleaseLockChanged(getRelease(), locked);
98
+ }
99
+
100
+ /// @dev Lock/unlock specific service of release.
101
+ /// Permissioned function: Access is restricted to release registry.
102
+ function setServiceLocked(IService service, bool locked)
103
+ external
104
+ restricted()
105
+ {
106
+ // assume all targets except release admin are services
107
+ // ensure release admin can not be locked
108
+ if(address(service) == address(this)) {
109
+ revert ErrorReleaseAdminNotService(address(service));
110
+ }
111
+
112
+ _setTargetClosed(address(service), locked);
113
+
114
+ emit LogReleaseAdminServiceLockChanged(service.getRelease(), address(service), locked);
115
+ }
116
+
117
+ //--- view functions ----------------------------------------------------//
118
+
119
+ /*
120
+ function getReleaseAdminRole() external view returns (RoleId) {
121
+ return GIF_ADMIN_ROLE();
122
+ }
123
+ */
124
+ //--- private functions -------------------------------------------------//
125
+
126
+ function _createServiceTargetAndRole(
127
+ IService service,
128
+ ObjectType serviceDomain,
129
+ VersionPart releaseVersion
130
+ )
131
+ private
132
+ {
133
+ string memory baseName = ObjectTypeLib.toName(serviceDomain);
134
+ uint256 versionInt = releaseVersion.toInt();
135
+
136
+ // create service target
137
+ string memory serviceTargetName = ObjectTypeLib.toVersionedName(
138
+ baseName, "Service", versionInt);
139
+
140
+ _createTarget(
141
+ address(service),
142
+ serviceTargetName,
143
+ true,
144
+ false);
145
+
146
+ // create service role
147
+ RoleId serviceRoleId = RoleIdLib.roleForTypeAndVersion(
148
+ serviceDomain,
149
+ releaseVersion);
150
+
151
+ if(!roleExists(serviceRoleId)) {
152
+ _createRole(
153
+ serviceRoleId,
154
+ toRole({
155
+ adminRoleId: ADMIN_ROLE(),
156
+ roleType: RoleType.Contract,
157
+ maxMemberCount: 1,
158
+ name: ObjectTypeLib.toVersionedName(
159
+ baseName,
160
+ "ServiceRole",
161
+ versionInt)}));
162
+ }
163
+
164
+ _grantRoleToAccount(
165
+ serviceRoleId,
166
+ address(service));
167
+ }
168
+
169
+
170
+ function _authorizeServiceFunctions(
171
+ IServiceAuthorization serviceAuthorization,
172
+ IService service,
173
+ ObjectType serviceDomain,
174
+ VersionPart releaseVersion
175
+ )
176
+ private
177
+ {
178
+ ObjectType authorizedDomain;
179
+ RoleId authorizedRoleId;
180
+
181
+ ObjectType[] memory authorizedDomains = serviceAuthorization.getAuthorizedDomains(serviceDomain);
182
+
183
+ for (uint256 i = 0; i < authorizedDomains.length; i++) {
184
+ authorizedDomain = authorizedDomains[i];
185
+
186
+ // derive authorized role from authorized domain
187
+ if (authorizedDomain == ALL()) {
188
+ authorizedRoleId = PUBLIC_ROLE();
189
+ } else {
190
+ authorizedRoleId = RoleIdLib.roleForTypeAndVersion(
191
+ authorizedDomain,
192
+ releaseVersion);
193
+ }
194
+
195
+ if(!roleExists(authorizedRoleId)) {
196
+ // create role for authorized domain
197
+ _createRole(
198
+ authorizedRoleId,
199
+ toRole({
200
+ adminRoleId: ADMIN_ROLE(),
201
+ roleType: RoleType.Contract,
202
+ maxMemberCount: 1,
203
+ name: ObjectTypeLib.toVersionedName(
204
+ ObjectTypeLib.toName(authorizedDomain),
205
+ "Role",
206
+ releaseVersion.toInt())}));
207
+ }
208
+
209
+ // get authorized functions for authorized domain
210
+ IAccess.FunctionInfo[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
211
+ serviceDomain,
212
+ authorizedDomain);
213
+
214
+ _authorizeTargetFunctions(
215
+ address(service),
216
+ authorizedRoleId,
217
+ authorizatedFunctions);
218
+ }
219
+ }
220
+
221
+ //--- private initialization functions -------------------------------------------//
222
+
223
+ function _setupReleaseRegistry(address releaseRegistry)
224
+ private
225
+ onlyInitializing()
226
+ {
227
+ _createTarget(address(this), RELEASE_ADMIN_TARGET_NAME, false, false);
228
+
229
+ _createRole(
230
+ RELEASE_REGISTRY_ROLE(),
231
+ toRole({
232
+ adminRoleId: ADMIN_ROLE(),
233
+ roleType: RoleType.Contract,
234
+ maxMemberCount: 1,
235
+ name: RELEASE_REGISTRY_ROLE_NAME}));
236
+
237
+ FunctionInfo[] memory functions;
238
+ functions = new FunctionInfo[](2);
239
+ functions[0] = toFunction(ReleaseAdmin.authorizeService.selector, "authorizeService");
240
+ functions[1] = toFunction(ReleaseAdmin.setServiceLocked.selector, "setServiceLocked");
241
+ _authorizeTargetFunctions(address(this), RELEASE_REGISTRY_ROLE(), functions);
242
+
243
+ _grantRoleToAccount(RELEASE_REGISTRY_ROLE(), releaseRegistry);
244
+ }
245
+ }
@@ -5,6 +5,8 @@ import {RELEASE} from "../type/ObjectType.sol";
5
5
  import {SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
6
6
  import {Lifecycle} from "../shared/Lifecycle.sol";
7
7
 
8
+ /// @dev Release lifeycle state machine.
9
+ /// Helper contract for ReleaseRegistry.
8
10
  contract ReleaseLifecycle is
9
11
  Lifecycle
10
12
  {
@@ -13,27 +13,37 @@ import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "
13
13
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
14
14
 
15
15
  import {IService} from "../shared/IService.sol";
16
- import {IRegisterable} from "../shared/IRegisterable.sol";
16
+
17
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
18
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
17
19
 
18
20
  import {IRegistry} from "./IRegistry.sol";
21
+ import {IRelease} from "./IRelease.sol";
19
22
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
20
23
  import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
21
24
  import {RegistryAdmin} from "./RegistryAdmin.sol";
22
25
  import {Registry} from "./Registry.sol";
23
26
  import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
24
-
25
-
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
- uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
41
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
32
42
 
33
- event LogReleaseCreation(VersionPart version, bytes32 salt);
34
- event LogReleaseActivation(VersionPart version);
35
- event LogReleaseDisabled(VersionPart version);
36
- 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);
37
47
 
38
48
  // constructor
39
49
  error ErrorReleaseRegistryNotRegistry(Registry registry);
@@ -41,7 +51,7 @@ contract ReleaseRegistry is
41
51
  // _verifyServiceAuthorization
42
52
  error ErrorReleaseRegistryNotServiceAuth(address notAuth);
43
53
  error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
44
- error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
54
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
45
55
 
46
56
  // registerService
47
57
  error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
@@ -66,13 +76,16 @@ contract ReleaseRegistry is
66
76
  RegistryAdmin public immutable _admin;
67
77
  Registry public immutable _registry;
68
78
 
69
- mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
70
- VersionPart [] internal _release; // array of all created releases
71
- VersionPart internal _latest; // latest active version
72
- VersionPart internal _next; // version to create and activate
79
+ mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
80
+ VersionPart [] internal _release; // array of all created releases
81
+ ReleaseAdmin internal _masterReleaseAdmin;
73
82
 
74
- uint256 internal _registeredServices;
75
- uint256 internal _servicesToRegister;
83
+ VersionPart internal _latest; // latest active release
84
+ VersionPart internal _next; // release version to create and activate
85
+
86
+ // counters per release
87
+ uint256 internal _registeredServices = 0;
88
+ uint256 internal _servicesToRegister = 0;
76
89
 
77
90
  constructor(Registry registry)
78
91
  AccessManaged(msg.sender)
@@ -86,28 +99,31 @@ contract ReleaseRegistry is
86
99
  _registry = registry;
87
100
  _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
88
101
 
102
+ _masterReleaseAdmin = new ReleaseAdmin();
103
+
89
104
  _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
90
105
  }
91
106
 
92
- /// @dev sets previous release into SKIPPED state if it was created but not activated
93
- /// 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.
94
110
  function createNextRelease()
95
111
  external
96
112
  restricted() // GIF_ADMIN_ROLE
97
113
  returns(VersionPart)
98
114
  {
99
- VersionPart version = _next;
115
+ VersionPart release = _next;
100
116
 
101
- if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
102
- _releaseInfo[version].state = SKIPPED();
117
+ if(isValidTransition(RELEASE(), _releaseInfo[release].state, SKIPPED())) {
118
+ _releaseInfo[release].state = SKIPPED();
103
119
  }
104
120
 
105
- version = VersionPartLib.toVersionPart(version.toInt() + 1);
106
- _release.push(version);
121
+ release = VersionPartLib.toVersionPart(release.toInt() + 1);
122
+ _release.push(release);
107
123
 
108
- _next = version;
109
- _releaseInfo[version].version = version;
110
- _releaseInfo[version].state = getInitialState(RELEASE());
124
+ _next = release;
125
+ _releaseInfo[release].version = release;
126
+ _releaseInfo[release].state = getInitialState(RELEASE());
111
127
  _servicesToRegister = 0;
112
128
  _registeredServices = 0;
113
129
 
@@ -121,7 +137,7 @@ contract ReleaseRegistry is
121
137
  external
122
138
  restricted() // GIF_MANAGER_ROLE
123
139
  returns(
124
- address releaseAuthority,
140
+ ReleaseAdmin releaseAdmin,
125
141
  VersionPart releaseVersion,
126
142
  bytes32 releaseSalt
127
143
  )
@@ -131,10 +147,13 @@ contract ReleaseRegistry is
131
147
  // release can transition into DEPLOYING state
132
148
  checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
133
149
 
150
+ // verify authorizations
134
151
  uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
135
152
 
136
- releaseAuthority = _admin.authority();
153
+ // create and initialize release admin
154
+ releaseAdmin = _cloneNewReleaseAdmin(releaseVersion);
137
155
  releaseSalt = salt;
156
+
138
157
  // ensures unique salt
139
158
  // TODO CreateX have clones capability also
140
159
  // what would releaseSalt look like if used with CreateX in pemissioned mode?
@@ -148,9 +167,9 @@ contract ReleaseRegistry is
148
167
  _releaseInfo[releaseVersion].salt = releaseSalt;
149
168
  // TODO allow for the same serviceAuthorization address to be used for multiple releases?
150
169
  _releaseInfo[releaseVersion].auth = serviceAuthorization;
151
- //_releaseInfo[releaseVersion].authority = releaseAuthority;
170
+ _releaseInfo[releaseVersion].releaseAdmin = address(releaseAdmin);
152
171
 
153
- emit LogReleaseCreation(releaseVersion, releaseSalt);
172
+ emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
154
173
  }
155
174
 
156
175
  function registerService(IService service)
@@ -163,9 +182,9 @@ contract ReleaseRegistry is
163
182
  // release can transition to DEPLOYED state
164
183
  checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
165
184
 
166
- address releaseAuthority = _admin.authority();
167
- IServiceAuthorization serviceAuth = _releaseInfo[releaseVersion].auth;
168
- 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);
169
188
 
170
189
  // service can work with release registry and release version
171
190
  (
@@ -195,89 +214,82 @@ contract ReleaseRegistry is
195
214
  // revert ErrorReleaseRegistryServiceAddressMismatch()
196
215
 
197
216
  // setup service authorization
198
- _admin.authorizeService(
199
- serviceAuth,
217
+ ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
218
+ releaseAdmin.setReleaseLocked(false);
219
+ releaseAdmin.authorizeService(
220
+ releaseAuth,
200
221
  service,
201
222
  serviceDomain,
202
223
  releaseVersion);
224
+ releaseAdmin.setReleaseLocked(true);
203
225
 
204
226
  // register service with registry
205
227
  nftId = _registry.registerService(info, serviceVersion, serviceDomain);
206
228
  service.linkToRegisteredNftId();
207
229
  }
230
+
231
+
208
232
  // TODO return activated version
209
233
  function activateNextRelease()
210
234
  external
211
235
  restricted // GIF_ADMIN_ROLE
212
236
  {
213
- VersionPart version = _next;
237
+ VersionPart release = _next;
214
238
 
215
239
  // release can transition to ACTIVE state
216
- checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
240
+ checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
217
241
 
218
- _latest = version;
219
- _releaseInfo[version].state = ACTIVE();
220
- _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();
221
246
 
222
247
  // grant special roles for registry/staking/pool services
223
248
  // this will enable access to core contracts functions
224
249
 
225
250
  // registry service MUST be registered for each release
226
- address service = _registry.getServiceAddress(REGISTRY(), version);
251
+ address service = _registry.getServiceAddress(REGISTRY(), release);
227
252
  if(service == address(0)) {
228
- revert ErrorReleaseRegistryRegistryServiceMissing(version);
253
+ revert ErrorReleaseRegistryRegistryServiceMissing(release);
229
254
  }
230
255
 
231
256
  _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
232
257
 
233
- service = _registry.getServiceAddress(STAKING(), version);
258
+ service = _registry.getServiceAddress(STAKING(), release);
234
259
  if(service != address(0)) {
235
260
  _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
236
261
  }
237
262
 
238
- service = _registry.getServiceAddress(POOL(), version);
263
+ service = _registry.getServiceAddress(POOL(), release);
239
264
  if(service != address(0)) {
240
265
  _admin.grantServiceRoleForAllVersions(IService(service), POOL());
241
266
  }
242
267
 
243
- // TODO may run out of gas
244
- // TODO test how many service can be locked in one transaction
245
- // -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
246
- _setReleaseLocked(version, false);
268
+ _setReleaseLocked(release, false);
247
269
 
248
- emit LogReleaseActivation(version);
270
+ emit LogReleaseActivation(release);
249
271
  }
250
272
 
251
- /// @dev stop all operations with release services
252
- function pauseRelease(VersionPart version)
253
- external
254
- restricted // GIF_ADMIN_ROLE
273
+ /// @dev stop/resume operations with restricted functions
274
+ function setActive(VersionPart release, bool active)
275
+ public
276
+ restricted
255
277
  {
256
- // release can transition to PAUSED state
257
- checkTransition(_releaseInfo[version].state, RELEASE(), ACTIVE(), PAUSED());
258
-
259
- _releaseInfo[version].state = PAUSED();
260
- _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
261
-
262
- _setReleaseLocked(version, true);
263
-
264
- emit LogReleaseDisabled(version);
265
- }
266
-
267
- /// @dev resume operations with release services
268
- function unpauseRelease(VersionPart version)
269
- external
270
- restricted // GIF_ADMIN_ROLE
271
- {
272
- // release can transition to ACTIVE state
273
- checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
274
-
275
- _releaseInfo[version].state = ACTIVE();
276
- _releaseInfo[version].disabledAt = zeroTimestamp();
277
-
278
- _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
+ }
279
291
 
280
- emit LogReleaseEnabled(version);
292
+ _setReleaseLocked(release, !active);
281
293
  }
282
294
 
283
295
  //--- view functions ----------------------------------------------------//
@@ -290,12 +302,12 @@ contract ReleaseRegistry is
290
302
  return Clones.predictDeterministicAddress(implementation, salt, deployer);
291
303
  }
292
304
 
293
- function isActiveRelease(VersionPart version) public view returns(bool) {
294
- return _releaseInfo[version].state == ACTIVE();
305
+ function isActiveRelease(VersionPart release) public view returns(bool) {
306
+ return _releaseInfo[release].state == ACTIVE();
295
307
  }
296
308
 
297
- function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
298
- return _releaseInfo[version];
309
+ function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
310
+ return _releaseInfo[release];
299
311
  }
300
312
 
301
313
  /// @dev Returns the number of created releases.
@@ -306,7 +318,7 @@ contract ReleaseRegistry is
306
318
 
307
319
  /// @dev Returns the n-th release version.
308
320
  /// Valid values for idx [0 .. releases() - 1]
309
- function getVersion(uint256 idx) external view returns (VersionPart version) {
321
+ function getVersion(uint256 idx) external view returns (VersionPart release) {
310
322
  // return _releases;
311
323
  return _release[idx];
312
324
  }
@@ -321,20 +333,20 @@ contract ReleaseRegistry is
321
333
  return _latest;
322
334
  }
323
335
 
324
- function getState(VersionPart version) external view returns (StateId stateId) {
325
- return _releaseInfo[version].state;
336
+ function getState(VersionPart release) external view returns (StateId stateId) {
337
+ return _releaseInfo[release].state;
326
338
  }
327
339
 
328
340
  function getRemainingServicesToRegister() external view returns (uint256 services) {
329
341
  return _servicesToRegister - _registeredServices;
330
342
  }
331
343
 
332
- function getServiceAuthorization(VersionPart version)
344
+ function getServiceAuthorization(VersionPart release)
333
345
  external
334
346
  view
335
347
  returns (IServiceAuthorization serviceAuthorization)
336
348
  {
337
- return _releaseInfo[version].auth;
349
+ return _releaseInfo[release].auth;
338
350
  }
339
351
 
340
352
  function getRegistryAdmin() external view returns (address) {
@@ -349,27 +361,41 @@ contract ReleaseRegistry is
349
361
 
350
362
  //--- private functions ----------------------------------------------------//
351
363
 
352
- // close / open service targets instead of revoking / granting roles
353
- function _setReleaseLocked(VersionPart version, bool locked)
364
+ function _setReleaseLocked(VersionPart release, bool locked)
354
365
  private
355
366
  {
356
- address service;
357
- ObjectType domain;
358
- IServiceAuthorization auth = _releaseInfo[version].auth;
359
-
360
- ObjectType[] memory domains = auth.getServiceDomains();
361
- for(uint idx = 0; idx < domains.length; idx++)
362
- {
363
- domain = domains[idx];
364
- service = _registry.getServiceAddress(domain, version);
365
- assert(service != address(0));
366
-
367
- _admin.setServiceLocked(IService(service), locked);
368
- }
367
+ ReleaseAdmin(
368
+ _releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
369
+ }
370
+
369
371
 
370
- // TODO add check for active/disabled release to core contracts functions interacting with releases
372
+ function _cloneNewReleaseAdmin(VersionPart release)
373
+ private
374
+ returns (ReleaseAdmin clonedAdmin)
375
+ {
376
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
377
+ Clones.clone(
378
+ _masterReleaseAdmin.authority()
379
+ )
380
+ );
381
+
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);
371
396
  }
372
397
 
398
+
373
399
  function _verifyServiceAuthorization(
374
400
  IServiceAuthorization serviceAuthorization,
375
401
  VersionPart releaseVersion,