@etherisc/gif-next 0.0.2-7177fd8-761 → 0.0.2-71cf987-554

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 (452) hide show
  1. package/README.md +5 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +121 -70
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +124 -5
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -37
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +157 -273
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -239
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +188 -290
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -123
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -31
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +248 -164
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +446 -81
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +85 -242
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +79 -87
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +131 -247
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  91. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -80
  94. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  96. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +79 -227
  98. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  100. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  102. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -235
  104. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  106. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +170 -226
  108. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -110
  110. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
  112. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +91 -77
  114. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +232 -131
  116. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -222
  118. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +300 -319
  120. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -97
  122. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
  124. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
  126. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -243
  128. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  130. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +280 -235
  132. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -112
  134. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  136. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
  138. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -16
  140. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  142. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +124 -97
  144. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  145. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -295
  148. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -131
  150. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
  152. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  154. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  155. package/artifacts/contracts/product/Product.sol/Product.json +136 -243
  156. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  158. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  160. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +289 -32
  164. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +495 -93
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +219 -166
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  176. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  177. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1696 -0
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +377 -235
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Component.sol/Component.json +68 -201
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +341 -324
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -132
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  216. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +79 -227
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  220. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  224. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  233. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +288 -16
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
  245. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  246. package/artifacts/contracts/staking/Staking.sol/Staking.json +167 -270
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +100 -97
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  267. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  269. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  271. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  273. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  275. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  277. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  279. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  281. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  283. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  285. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  287. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  289. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  291. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  295. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  302. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  304. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  306. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  307. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  308. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  309. package/contracts/authorization/AccessAdmin.sol +130 -120
  310. package/contracts/authorization/AccessManagerCloneable.sol +67 -3
  311. package/contracts/authorization/Authorization.sol +111 -40
  312. package/contracts/authorization/IAccess.sol +1 -0
  313. package/contracts/authorization/IAccessAdmin.sol +4 -4
  314. package/contracts/authorization/IAuthorization.sol +13 -7
  315. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  316. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  317. package/contracts/distribution/BasicDistribution.sol +2 -1
  318. package/contracts/distribution/Distribution.sol +7 -17
  319. package/contracts/distribution/DistributionService.sol +82 -50
  320. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  321. package/contracts/distribution/IDistributionComponent.sol +1 -1
  322. package/contracts/distribution/IDistributionService.sol +8 -2
  323. package/contracts/examples/fire/DamageLevel.sol +59 -0
  324. package/contracts/examples/fire/FirePool.sol +73 -0
  325. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  326. package/contracts/examples/fire/FireProduct.sol +415 -0
  327. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  328. package/contracts/examples/fire/FireUSD.sol +26 -0
  329. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  330. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  331. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  332. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  333. package/contracts/instance/IInstance.sol +10 -30
  334. package/contracts/instance/IInstanceService.sol +0 -20
  335. package/contracts/instance/Instance.sol +29 -51
  336. package/contracts/instance/InstanceAdmin.sol +102 -73
  337. package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
  338. package/contracts/instance/InstanceReader.sol +106 -19
  339. package/contracts/instance/InstanceService.sol +33 -88
  340. package/contracts/instance/InstanceServiceManager.sol +6 -7
  341. package/contracts/instance/InstanceStore.sol +11 -1
  342. package/contracts/instance/base/ObjectLifecycle.sol +7 -1
  343. package/contracts/instance/module/IComponents.sol +10 -5
  344. package/contracts/instance/module/IPolicy.sol +23 -23
  345. package/contracts/oracle/BasicOracle.sol +0 -1
  346. package/contracts/oracle/IOracleService.sol +2 -1
  347. package/contracts/oracle/Oracle.sol +6 -16
  348. package/contracts/oracle/OracleService.sol +47 -34
  349. package/contracts/oracle/OracleServiceManager.sol +6 -6
  350. package/contracts/pool/BasicPool.sol +14 -26
  351. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  352. package/contracts/pool/BundleService.sol +92 -36
  353. package/contracts/pool/BundleServiceManager.sol +6 -6
  354. package/contracts/pool/IBundleService.sol +10 -0
  355. package/contracts/pool/IPoolComponent.sol +18 -8
  356. package/contracts/pool/IPoolService.sol +49 -29
  357. package/contracts/pool/Pool.sol +53 -46
  358. package/contracts/pool/PoolService.sol +156 -136
  359. package/contracts/pool/PoolServiceManager.sol +4 -4
  360. package/contracts/product/ApplicationService.sol +22 -13
  361. package/contracts/product/ApplicationServiceManager.sol +4 -4
  362. package/contracts/product/BasicProduct.sol +7 -6
  363. package/contracts/product/BasicProductAuthorization.sol +0 -1
  364. package/contracts/product/ClaimService.sol +310 -115
  365. package/contracts/product/ClaimServiceManager.sol +4 -4
  366. package/contracts/product/IClaimService.sol +30 -7
  367. package/contracts/product/IPolicyService.sol +16 -20
  368. package/contracts/product/IPricingService.sol +10 -10
  369. package/contracts/product/IProductComponent.sol +23 -4
  370. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
  371. package/contracts/product/PolicyService.sol +220 -129
  372. package/contracts/product/PolicyServiceManager.sol +4 -4
  373. package/contracts/product/PricingService.sol +49 -53
  374. package/contracts/product/PricingServiceManager.sol +3 -3
  375. package/contracts/product/Product.sol +108 -66
  376. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  377. package/contracts/product/RiskServiceManager.sol +39 -0
  378. package/contracts/registry/ChainNft.sol +68 -38
  379. package/contracts/registry/IRegistry.sol +57 -18
  380. package/contracts/registry/IRegistryService.sol +5 -12
  381. package/contracts/registry/ITransferInterceptor.sol +1 -2
  382. package/contracts/registry/Registry.sol +342 -201
  383. package/contracts/registry/RegistryAdmin.sol +147 -179
  384. package/contracts/registry/RegistryService.sol +35 -46
  385. package/contracts/registry/RegistryServiceManager.sol +2 -2
  386. package/contracts/registry/ReleaseAdmin.sol +248 -0
  387. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  388. package/contracts/registry/ReleaseRegistry.sol +223 -203
  389. package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
  390. package/contracts/shared/Component.sol +36 -52
  391. package/contracts/shared/ComponentService.sol +245 -140
  392. package/contracts/shared/ComponentServiceManager.sol +8 -5
  393. package/contracts/shared/ComponentVerifyingService.sol +23 -14
  394. package/contracts/shared/ContractLib.sol +38 -0
  395. package/contracts/shared/IComponent.sol +6 -3
  396. package/contracts/shared/IComponentService.sol +25 -13
  397. package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
  398. package/contracts/shared/ILifecycle.sol +3 -1
  399. package/contracts/shared/INftOwnable.sol +2 -0
  400. package/contracts/shared/IPolicyHolder.sol +12 -22
  401. package/contracts/shared/IRegisterable.sol +11 -0
  402. package/contracts/shared/InitializableERC165.sol +2 -2
  403. package/contracts/shared/InstanceLinkedComponent.sol +72 -31
  404. package/contracts/shared/KeyValueStore.sol +1 -1
  405. package/contracts/shared/Lifecycle.sol +15 -4
  406. package/contracts/shared/NftOwnable.sol +27 -7
  407. package/contracts/shared/PolicyHolder.sol +15 -52
  408. package/contracts/shared/Registerable.sol +19 -9
  409. package/contracts/shared/RegistryLinked.sol +3 -2
  410. package/contracts/shared/Service.sol +20 -18
  411. package/contracts/shared/TokenHandler.sol +99 -22
  412. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  413. package/contracts/staking/IStaking.sol +2 -1
  414. package/contracts/staking/IStakingService.sol +0 -3
  415. package/contracts/staking/StakeManagerLib.sol +18 -25
  416. package/contracts/staking/Staking.sol +13 -32
  417. package/contracts/staking/StakingManager.sol +8 -6
  418. package/contracts/staking/StakingReader.sol +12 -5
  419. package/contracts/staking/StakingService.sol +17 -17
  420. package/contracts/staking/StakingServiceManager.sol +2 -2
  421. package/contracts/staking/TargetManagerLib.sol +7 -3
  422. package/contracts/type/Amount.sol +15 -0
  423. package/contracts/type/ClaimId.sol +6 -1
  424. package/contracts/type/NftId.sol +1 -0
  425. package/contracts/type/ObjectType.sol +16 -11
  426. package/contracts/type/PayoutId.sol +10 -10
  427. package/contracts/type/RiskId.sol +15 -1
  428. package/contracts/type/RoleId.sol +2 -11
  429. package/contracts/type/Seconds.sol +8 -0
  430. package/contracts/type/StateId.sol +15 -1
  431. package/contracts/type/UFixed.sol +4 -0
  432. package/contracts/upgradeability/ProxyManager.sol +68 -34
  433. package/contracts/upgradeability/Versionable.sol +2 -2
  434. package/package.json +2 -1
  435. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  436. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  437. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  438. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  439. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  440. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  441. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  442. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  443. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  444. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  445. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  446. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
  447. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
  448. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  449. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  450. package/contracts/product/ProductServiceManager.sol +0 -39
  451. package/contracts/shared/InitializableCustom.sol +0 -177
  452. package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -1,47 +1,38 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
5
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
6
- import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
7
- import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
8
5
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
9
- import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
10
6
 
11
7
  import {NftId} from "../type/NftId.sol";
12
- import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
8
  import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
14
- import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
15
- import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
16
- import {Seconds, SecondsLib} from "../type/Seconds.sol";
17
- import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
18
- import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
9
+ import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
10
+ import {Seconds} from "../type/Seconds.sol";
11
+ import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "../type/StateId.sol";
12
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
19
13
 
20
14
  import {IService} from "../shared/IService.sol";
21
- import {ILifecycle} from "../shared/ILifecycle.sol";
22
- import {INftOwnable} from "../shared/INftOwnable.sol";
23
- import {IRegisterable} from "../shared/IRegisterable.sol";
15
+
16
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
17
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
24
18
 
25
19
  import {IRegistry} from "./IRegistry.sol";
26
20
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
27
- import {IRegistryService} from "./IRegistryService.sol";
28
21
  import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
29
- import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
30
22
  import {RegistryAdmin} from "./RegistryAdmin.sol";
31
23
  import {Registry} from "./Registry.sol";
32
- import {TokenRegistry} from "./TokenRegistry.sol";
33
24
  import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
25
+ import {ReleaseAdmin} from "./ReleaseAdmin.sol";
26
+
34
27
 
35
28
  contract ReleaseRegistry is
36
29
  AccessManaged,
37
30
  ReleaseLifecycle,
38
31
  IRegistryLinked
39
32
  {
40
- using ObjectTypeLib for ObjectType;
33
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
41
34
 
42
- uint256 public constant INITIAL_GIF_VERSION = 3;
43
-
44
- event LogReleaseCreation(VersionPart version, bytes32 salt);
35
+ event LogReleaseCreation(IAccessAdmin admin, VersionPart version, bytes32 salt);
45
36
  event LogReleaseActivation(VersionPart version);
46
37
  event LogReleaseDisabled(VersionPart version);
47
38
  event LogReleaseEnabled(VersionPart version);
@@ -49,35 +40,22 @@ contract ReleaseRegistry is
49
40
  // constructor
50
41
  error ErrorReleaseRegistryNotRegistry(Registry registry);
51
42
 
52
- // createNextRelease
53
- error ErrorReleaseRegistryReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
54
-
55
- // prepareRelease
56
- error ErrorReleaseRegistryReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
57
- error ErrorReleaseRegistryReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
58
- error ErrorReleaseRegistryVersionMismatch(VersionPart expected, VersionPart actual);
59
- error ErrorReleaseRegistryNoDomains(VersionPart version);
43
+ // _verifyServiceAuthorization
44
+ error ErrorReleaseRegistryNotServiceAuth(address notAuth);
45
+ error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
46
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
60
47
 
61
48
  // registerService
62
- error ErrorReleaseRegistryNoServiceRegistrationExpected();
63
- error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
64
- error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
65
- error ErrorReleaseRegistryNotService(address notService);
66
49
  error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
67
50
 
68
51
  // activateNextRelease
69
- error ErrorReleaseRegistryReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
70
- error ErrorReleaseRegistryReleaseNotCreated(VersionPart releaseVersion);
71
- error ErrorReleaseRegistryReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
72
- error ErrorReleaseRegistryReleaseAlreadyActivated(VersionPart releaseVersion);
73
-
74
- // disableRelease
75
- error ErrorReleaseRegistryReleaseNotActivated(VersionPart releaseVersion);
76
- error ErrorReleaseRegistryReleaseAlreadyDisabled(VersionPart releaseVersion);
52
+ error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
77
53
 
78
54
  // _verifyService
79
- error ErrorReleaseRegistryServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
80
- error ErrorReleaseRegistryServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
55
+ error ErrorReleaseRegistryNotService(address notService);
56
+ error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
57
+ error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
58
+ error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
81
59
 
82
60
  // _verifyServiceInfo
83
61
  error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
@@ -87,23 +65,15 @@ contract ReleaseRegistry is
87
65
  error ErrorReleaseRegistryServiceSelfRegistration(IService service);
88
66
  error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
89
67
 
90
- Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
91
-
92
68
  RegistryAdmin public immutable _admin;
93
69
  Registry public immutable _registry;
94
- IRegisterable private _staking;
95
- address private _stakingOwner;
96
70
 
97
71
  mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
98
- mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
72
+ VersionPart [] internal _release; // array of all created releases
73
+ ReleaseAdmin _masterReleaseAdmin;
99
74
 
100
- // TODO check where/why this is used
101
- mapping(address registryService => VersionPart version) _releaseVersionByAddress;
102
-
103
- VersionPart private _initial;// first active version
104
75
  VersionPart internal _latest; // latest active version
105
76
  VersionPart internal _next; // version to create and activate
106
- mapping(VersionPart verson => StateId releaseState) private _state;
107
77
 
108
78
  uint256 internal _registeredServices;
109
79
  uint256 internal _servicesToRegister;
@@ -121,21 +91,32 @@ contract ReleaseRegistry is
121
91
  _registry = registry;
122
92
  _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
123
93
 
124
- _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
94
+ _masterReleaseAdmin = new ReleaseAdmin();
95
+
125
96
  _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
126
97
  }
127
98
 
128
- /// @dev skips previous release if was not activated
99
+ /// @dev sets previous release into SKIPPED state if it was created but not activated
129
100
  /// sets next release into state SCHEDULED
130
101
  function createNextRelease()
131
102
  external
132
103
  restricted() // GIF_ADMIN_ROLE
133
104
  returns(VersionPart)
134
105
  {
135
- _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
106
+ VersionPart version = _next;
107
+
108
+ if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
109
+ _releaseInfo[version].state = SKIPPED();
110
+ }
111
+
112
+ version = VersionPartLib.toVersionPart(version.toInt() + 1);
113
+ _release.push(version);
114
+
115
+ _next = version;
116
+ _releaseInfo[version].version = version;
117
+ _releaseInfo[version].state = getInitialState(RELEASE());
136
118
  _servicesToRegister = 0;
137
119
  _registeredServices = 0;
138
- _state[_next] = getInitialState(RELEASE());
139
120
 
140
121
  return _next;
141
122
  }
@@ -147,183 +128,155 @@ contract ReleaseRegistry is
147
128
  external
148
129
  restricted() // GIF_MANAGER_ROLE
149
130
  returns(
150
- address authority,
151
- VersionPart version,
131
+ IAccessAdmin releaseAdmin,
132
+ VersionPart releaseVersion,
152
133
  bytes32 releaseSalt
153
134
  )
154
135
  {
155
- authority = _admin.authority();
156
- version = _next;
136
+ releaseVersion = _next;
157
137
 
138
+ // release can transition into DEPLOYING state
139
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
140
+
141
+ // verify authorizations
142
+ uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
143
+
144
+ // create and initialize release admin
145
+ releaseAdmin = _createReleaseAdmin();
146
+ releaseSalt = salt;
158
147
  // ensures unique salt
159
148
  // TODO CreateX have clones capability also
160
149
  // what would releaseSalt look like if used with CreateX in pemissioned mode?
161
- releaseSalt = keccak256(
150
+ /*releaseSalt = keccak256(
162
151
  bytes.concat(
163
- bytes32(version.toInt()),
164
- salt));
165
-
166
- // verify release in state SCHEDULED
167
- if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
168
- revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
169
- }
170
-
171
- _state[version] = DEPLOYING();
172
-
173
- // verify authorizaion contract release matches with expected version
174
- VersionPart releaseVersion = serviceAuthorization.getRelease();
175
- if (releaseVersion != version) {
176
- revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
177
- }
178
-
179
-
180
- // sanity check to ensure service domain list is not empty
181
- uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
182
- if (serviceDomainsCount == 0) {
183
- revert ErrorReleaseRegistryNoDomains(version);
184
- }
185
-
186
- // verify prepareNextRelease is only called once per release
187
- if(_servicesToRegister > 0) {
188
- revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
189
- }
152
+ bytes32(releaseVersion.toInt()),
153
+ salt));*/
190
154
 
191
155
  _servicesToRegister = serviceDomainsCount;
192
- _serviceAuthorization[version] = serviceAuthorization;
156
+ _releaseInfo[releaseVersion].state = DEPLOYING();
157
+ _releaseInfo[releaseVersion].salt = releaseSalt;
158
+ // TODO allow for the same serviceAuthorization address to be used for multiple releases?
159
+ _releaseInfo[releaseVersion].auth = serviceAuthorization;
160
+ _releaseInfo[releaseVersion].admin = releaseAdmin;
193
161
 
194
- emit LogReleaseCreation(version, releaseSalt);
162
+ emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
195
163
  }
196
164
 
197
- // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
198
165
  function registerService(IService service)
199
166
  external
200
167
  restricted // GIF_MANAGER_ROLE
201
168
  returns(NftId nftId)
202
169
  {
203
170
  VersionPart releaseVersion = _next;
204
- StateId state = _state[releaseVersion];
205
171
 
206
- // verify release in state DEPLOYING
207
- if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
208
- // TOOD name must represent failed state transition
209
- revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
210
- }
172
+ // release can transition to DEPLOYED state
173
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
211
174
 
212
- _state[releaseVersion] = DEPLOYING();
175
+ address releaseAuthority = _releaseInfo[releaseVersion].admin.authority();
176
+ IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
177
+ ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
213
178
 
214
- // not all services are registered
215
- if (_servicesToRegister == _registeredServices) {
216
- revert ErrorReleaseRegistryNoServiceRegistrationExpected();
217
- }
218
-
219
- // service can work with release manager
179
+ // service can work with release registry and release version
220
180
  (
221
181
  IRegistry.ObjectInfo memory info,
222
182
  ObjectType serviceDomain,
223
183
  VersionPart serviceVersion
224
- ) = _verifyService(service);
184
+ //,string memory serviceName
185
+ ) = _verifyService(
186
+ service,
187
+ releaseAuthority,
188
+ releaseVersion,
189
+ expectedDomain
190
+ );
191
+
192
+ //_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
193
+ //_releaseInfo[releaseVersion].domains.push(serviceDomain);
194
+ //_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
195
+
196
+ _registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
225
197
 
226
- // service domain matches defined in release config
227
- ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
228
- if (serviceDomain != expectedDomain) {
229
- revert ErrorReleaseRegistryServiceDomainMismatch(expectedDomain, serviceDomain);
198
+ // release fully deployed
199
+ if(_servicesToRegister == _registeredServices) {
200
+ _releaseInfo[releaseVersion].state = DEPLOYED();
230
201
  }
231
202
 
203
+ // TODO: service address matches defined in release auth (precalculated one)
204
+ // revert ErrorReleaseRegistryServiceAddressMismatch()
205
+
206
+ // setup service authorization
207
+ ReleaseAdmin releaseAdmin = ReleaseAdmin(address(_releaseInfo[releaseVersion].admin));
208
+ releaseAdmin.setReleaseLocked(false);
209
+ releaseAdmin.authorizeService(
210
+ releaseAuth,
211
+ service,
212
+ serviceDomain,
213
+ releaseVersion);
214
+ releaseAdmin.setReleaseLocked(true);
215
+
232
216
  // register service with registry
233
217
  nftId = _registry.registerService(info, serviceVersion, serviceDomain);
234
218
  service.linkToRegisteredNftId();
235
- _registeredServices++;
236
-
237
- // setup service authorization
238
- _admin.authorizeService(
239
- _serviceAuthorization[releaseVersion],
240
- service);
241
-
242
- // TODO consider to extend this to REGISTRY
243
- // special roles for registry/staking/pool service
244
- if (serviceDomain == STAKING() || serviceDomain == POOL()) {
245
- // TODO rename to grantServiceDomainRole()
246
- _admin.grantServiceRoleForAllVersions(service, serviceDomain);
247
- }
248
219
  }
249
-
250
-
220
+ // TODO return activated version
251
221
  function activateNextRelease()
252
222
  external
253
223
  restricted // GIF_ADMIN_ROLE
254
224
  {
255
225
  VersionPart version = _next;
256
- StateId state = _state[version];
257
- StateId newState = ACTIVE();
258
226
 
259
- // verify release in state DEPLOYING
260
- if (!isValidTransition(RELEASE(), state, newState)) {
261
- revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
262
- }
227
+ // release can transition to ACTIVE state
228
+ checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
263
229
 
264
- // release fully deployed
265
- if(_registeredServices < _servicesToRegister) {
266
- revert ErrorReleaseRegistryReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
267
- }
230
+ _latest = version;
231
+ _releaseInfo[version].state = ACTIVE();
232
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
233
+
234
+ // grant special roles for registry/staking/pool services
235
+ // this will enable access to core contracts functions
268
236
 
269
- // release exists, registry service MUST exist
237
+ // registry service MUST be registered for each release
270
238
  address service = _registry.getServiceAddress(REGISTRY(), version);
271
239
  if(service == address(0)) {
272
- revert ErrorReleaseRegistryReleaseNotCreated(version);
240
+ revert ErrorReleaseRegistryRegistryServiceMissing(version);
273
241
  }
274
242
 
275
- _latest = version;
276
- _state[version] = newState;
277
-
278
- _releaseVersionByAddress[service] = version;
279
- _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
243
+ _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
280
244
 
281
- emit LogReleaseActivation(version);
282
- }
283
-
284
- /// @dev stop all operations with release services
285
- function pauseRelease(VersionPart version)
286
- external
287
- restricted // GIF_ADMIN_ROLE
288
- {
289
- StateId state = _state[version];
290
- StateId newState = PAUSED();
291
-
292
- // verify release in state ACTIVE
293
- if (!isValidTransition(RELEASE(), state, newState)) {
294
- revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
245
+ service = _registry.getServiceAddress(STAKING(), version);
246
+ if(service != address(0)) {
247
+ _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
295
248
  }
296
249
 
297
- // TODO come up with a substitute
298
- //_releaseAccessManager[version].disable();
250
+ service = _registry.getServiceAddress(POOL(), version);
251
+ if(service != address(0)) {
252
+ _admin.grantServiceRoleForAllVersions(IService(service), POOL());
253
+ }
299
254
 
300
- _state[version] = newState;
301
- _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
255
+ _setReleaseLocked(version, false);
302
256
 
303
- emit LogReleaseDisabled(version);
257
+ emit LogReleaseActivation(version);
304
258
  }
305
259
 
306
- // TODO consider revert if some delay is expired -> becomes disabled automatically
307
- /// @dev resume operations with release services
308
- function unpauseRelease(VersionPart version)
309
- external
310
- restricted // GIF_ADMIN_ROLE
260
+ /// @dev stop/resume operations with restricted functions
261
+ function setActive(VersionPart version, bool active)
262
+ public
263
+ restricted
311
264
  {
312
- StateId state = _state[version];
313
- StateId newState = ACTIVE();
314
-
315
- // verify release in state PAUSED
316
- if (!isValidTransition(RELEASE(), state, newState)) {
317
- revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
265
+ StateId state = _releaseInfo[version].state;
266
+
267
+ if(active) {
268
+ checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
269
+ _releaseInfo[version].state = ACTIVE();
270
+ _releaseInfo[version].disabledAt = zeroTimestamp();
271
+ emit LogReleaseEnabled(version);
272
+ } else {
273
+ checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
274
+ _releaseInfo[version].state = PAUSED();
275
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
276
+ emit LogReleaseDisabled(version);
318
277
  }
319
278
 
320
- // TODO come up with a substitute
321
- // _releaseAccessManager[version].enable();
322
-
323
- _state[version] = newState;
324
- _releaseInfo[version].disabledAt = zeroTimestamp();
325
-
326
- emit LogReleaseEnabled(version);
279
+ _setReleaseLocked(version, !active);
327
280
  }
328
281
 
329
282
  //--- view functions ----------------------------------------------------//
@@ -336,33 +289,39 @@ contract ReleaseRegistry is
336
289
  return Clones.predictDeterministicAddress(implementation, salt, deployer);
337
290
  }
338
291
 
339
- function isActiveRegistryService(address service) external view returns(bool) {
340
- VersionPart version = _releaseVersionByAddress[service];
341
- return isActiveRelease(version);
342
- }
343
-
344
292
  function isActiveRelease(VersionPart version) public view returns(bool) {
345
- return _state[version] == ACTIVE();
293
+ return _releaseInfo[version].state == ACTIVE();
346
294
  }
347
295
 
348
296
  function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
349
297
  return _releaseInfo[version];
350
298
  }
351
299
 
300
+ /// @dev Returns the number of created releases.
301
+ /// Releases might be in another state than ACTIVE.
302
+ function releases() external view returns (uint) {
303
+ return _release.length;
304
+ }
305
+
306
+ /// @dev Returns the n-th release version.
307
+ /// Valid values for idx [0 .. releases() - 1]
308
+ function getVersion(uint256 idx) external view returns (VersionPart version) {
309
+ // return _releases;
310
+ return _release[idx];
311
+ }
312
+
352
313
  function getNextVersion() public view returns(VersionPart) {
353
314
  return _next;
354
315
  }
355
316
 
317
+ /// @dev Returns the latest activated relase version.
318
+ /// There is no guarantee that the release is not currently paused.
356
319
  function getLatestVersion() external view returns(VersionPart) {
357
320
  return _latest;
358
321
  }
359
322
 
360
- function getInitialVersion() external view returns(VersionPart) {
361
- return _initial;
362
- }
363
-
364
323
  function getState(VersionPart version) external view returns (StateId stateId) {
365
- return _state[version];
324
+ return _releaseInfo[version].state;
366
325
  }
367
326
 
368
327
  function getRemainingServicesToRegister() external view returns (uint256 services) {
@@ -374,7 +333,7 @@ contract ReleaseRegistry is
374
333
  view
375
334
  returns (IServiceAuthorization serviceAuthorization)
376
335
  {
377
- return _serviceAuthorization[version];
336
+ return _releaseInfo[version].auth;
378
337
  }
379
338
 
380
339
  function getRegistryAdmin() external view returns (address) {
@@ -389,7 +348,66 @@ contract ReleaseRegistry is
389
348
 
390
349
  //--- private functions ----------------------------------------------------//
391
350
 
392
- function _verifyService(IService service)
351
+ function _setReleaseLocked(VersionPart version, bool locked)
352
+ private
353
+ {
354
+ ReleaseAdmin releaseAdmin = ReleaseAdmin(address(_releaseInfo[version].admin));
355
+ releaseAdmin.setReleaseLocked(locked);
356
+ }
357
+
358
+ function _createReleaseAdmin()
359
+ private
360
+ returns (ReleaseAdmin clonedAdmin)
361
+ {
362
+ AccessManagerCloneable releaseAccessManager = AccessManagerCloneable(
363
+ Clones.clone(
364
+ _masterReleaseAdmin.authority()
365
+ )
366
+ );
367
+ clonedAdmin = ReleaseAdmin(
368
+ Clones.clone(
369
+ address(_masterReleaseAdmin)
370
+ )
371
+ );
372
+ clonedAdmin.initialize(releaseAccessManager);
373
+ clonedAdmin.completeSetup(address(_registry), address(this), _next);
374
+ clonedAdmin.setReleaseLocked(true);
375
+ }
376
+
377
+ function _verifyServiceAuthorization(
378
+ IServiceAuthorization serviceAuthorization,
379
+ VersionPart releaseVersion,
380
+ bytes32 salt
381
+ )
382
+ private
383
+ view
384
+ returns (uint256 serviceDomainsCount)
385
+ {
386
+ // authorization contract supports IServiceAuthorization interface
387
+ if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
388
+ revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
389
+ }
390
+
391
+ // authorizaions contract version matches with release version
392
+ VersionPart authVersion = serviceAuthorization.getRelease();
393
+ if (releaseVersion != authVersion) {
394
+ revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
395
+ }
396
+
397
+ // sanity check to ensure service domain list is not empty
398
+ serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
399
+ if (serviceDomainsCount == 0) {
400
+ revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
401
+ }
402
+ }
403
+
404
+ // TODO get service names
405
+ function _verifyService(
406
+ IService service,
407
+ address expectedAuthority,
408
+ VersionPart expectedVersion,
409
+ ObjectType expectedDomain
410
+ )
393
411
  internal
394
412
  view
395
413
  returns(
@@ -410,22 +428,25 @@ contract ReleaseRegistry is
410
428
 
411
429
  _verifyServiceInfo(service, serviceInfo, owner);
412
430
 
413
- VersionPart releaseVersion = _next; // never 0
414
- address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
415
-
416
- // IMPORTANT: can not guarantee service access is actually controlled by authority
417
431
  if(serviceAuthority != expectedAuthority) {
418
- revert ErrorReleaseRegistryServiceReleaseAuthorityMismatch(
432
+ revert ErrorReleaseRegistryServiceAuthorityMismatch(
419
433
  service,
420
434
  serviceAuthority,
421
435
  expectedAuthority);
422
436
  }
423
437
 
424
- if(serviceVersion != releaseVersion) {
425
- revert ErrorReleaseRegistryServiceReleaseVersionMismatch(
438
+ if(serviceVersion != expectedVersion) {
439
+ revert ErrorReleaseRegistryServiceVersionMismatch(
426
440
  service,
427
441
  serviceVersion,
428
- releaseVersion);
442
+ expectedVersion);
443
+ }
444
+
445
+ if(serviceDomain != expectedDomain) {
446
+ revert ErrorReleaseRegistryServiceDomainMismatch(
447
+ service,
448
+ expectedDomain,
449
+ serviceDomain);
429
450
  }
430
451
  }
431
452
 
@@ -439,7 +460,7 @@ contract ReleaseRegistry is
439
460
  view
440
461
  {
441
462
  if(info.objectAddress != address(service)) {
442
- revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, address(service));
463
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
443
464
  }
444
465
 
445
466
  if(info.isInterceptor != false) { // service is never interceptor
@@ -472,10 +493,9 @@ contract ReleaseRegistry is
472
493
  if (registryAddress == address(0)) {
473
494
  return false;
474
495
  }
475
- // TODO try catch and return false in case of revert
476
- // or just panic
496
+ // TODO try catch and return false in case of revert or just panic
477
497
  // check if contract returns a zero nft id for its own address
478
- if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
498
+ if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
479
499
  return false;
480
500
  }
481
501