@etherisc/gif-next 0.0.2-f1e0c66-773 → 0.0.2-f1f3b2c-994

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