@etherisc/gif-next 0.0.2-b1fff40-773 → 0.0.2-b2070b1-995

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 (591) hide show
  1. package/README.md +109 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +549 -209
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +183 -487
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -387
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +644 -392
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +209 -133
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -191
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +476 -137
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  52. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1208 -0
  53. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1476 -0
  57. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  59. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2609 -0
  61. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  63. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  64. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  65. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  81. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  82. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  83. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  85. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  86. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  87. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  88. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +578 -65
  89. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +395 -60
  91. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  92. package/artifacts/contracts/instance/Instance.sol/Instance.json +616 -183
  93. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  94. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1021 -363
  95. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  96. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +328 -92
  97. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  98. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1799 -789
  99. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +409 -231
  101. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +143 -105
  103. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +960 -1163
  105. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  106. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +1539 -0
  107. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  108. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  109. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  110. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  111. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  112. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  113. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  114. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  116. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  118. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  120. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  121. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  122. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  123. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  124. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  125. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  126. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  127. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  128. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +127 -355
  129. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +424 -37
  131. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  132. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  133. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +103 -133
  134. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  135. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  136. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  137. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +103 -323
  138. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  139. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
  140. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
  142. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  143. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +160 -438
  144. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  145. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  146. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  147. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +502 -364
  148. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +194 -114
  150. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  151. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +340 -112
  152. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  153. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -236
  154. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  155. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
  156. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  157. package/artifacts/contracts/pool/Pool.sol/Pool.json +129 -416
  158. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  159. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  160. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  161. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
  162. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
  164. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  165. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
  166. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
  168. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  169. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +272 -431
  170. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  171. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  172. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  173. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
  174. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
  176. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  177. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
  178. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  179. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
  180. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  181. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
  182. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  183. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
  184. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  185. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +257 -226
  186. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  187. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
  188. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  189. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
  190. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  191. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  192. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  193. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -108
  194. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  195. package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
  196. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
  198. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  199. package/artifacts/contracts/product/Product.sol/Product.json +264 -423
  200. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  201. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  202. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  203. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  204. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  206. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -48
  208. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  209. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
  210. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  211. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  212. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  213. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  214. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/Registry.sol/Registry.json +565 -109
  216. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  217. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +791 -377
  218. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  219. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  220. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  221. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
  222. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  223. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
  224. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  225. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  226. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  227. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  228. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  229. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
  230. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  231. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  232. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  233. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  234. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  235. package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
  236. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  237. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +493 -638
  238. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  239. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +183 -133
  240. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  241. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  242. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  243. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  244. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  246. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  248. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -93
  250. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
  252. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +103 -133
  254. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  255. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +79 -6
  256. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  257. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  258. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  260. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  261. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  262. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  264. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  265. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  266. package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
  267. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  268. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  269. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  270. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +102 -322
  271. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  272. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +85 -7
  273. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  274. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  275. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  276. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  277. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  278. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  279. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  280. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  281. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  282. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  283. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  284. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  285. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  286. package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
  287. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  288. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  289. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  290. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  291. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  292. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  293. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  294. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1510 -191
  295. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  296. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
  297. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  298. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  299. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  300. package/artifacts/contracts/staking/Staking.sol/Staking.json +1635 -455
  301. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  302. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  303. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  304. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +191 -105
  305. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  306. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
  307. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  308. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
  309. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  310. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
  311. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  312. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1645 -790
  313. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  314. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  315. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  316. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +180 -77
  317. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  318. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
  320. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  322. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  324. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  326. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  328. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  330. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  332. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  333. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  334. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  336. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  337. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  338. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +49 -50
  340. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  342. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  344. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  346. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
  347. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
  348. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  350. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  352. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +112 -2
  354. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  356. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  358. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  360. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  361. package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
  362. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +56 -5
  364. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  365. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
  366. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  367. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  368. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  369. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  370. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  371. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  372. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  373. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +118 -79
  374. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  375. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  376. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  377. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  378. package/contracts/accounting/AccountingService.sol +274 -0
  379. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  380. package/contracts/accounting/IAccountingService.sol +47 -0
  381. package/contracts/authorization/AccessAdmin.sol +458 -269
  382. package/contracts/authorization/AccessAdminLib.sol +396 -0
  383. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  384. package/contracts/authorization/Authorization.sol +159 -208
  385. package/contracts/authorization/IAccess.sol +25 -6
  386. package/contracts/authorization/IAccessAdmin.sol +87 -79
  387. package/contracts/authorization/IAuthorization.sol +9 -37
  388. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  389. package/contracts/authorization/ServiceAuthorization.sol +255 -25
  390. package/contracts/distribution/BasicDistribution.sol +22 -30
  391. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  392. package/contracts/distribution/Distribution.sol +44 -98
  393. package/contracts/distribution/DistributionService.sol +243 -132
  394. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  395. package/contracts/distribution/IDistributionComponent.sol +4 -11
  396. package/contracts/distribution/IDistributionService.sol +47 -29
  397. package/contracts/examples/fire/DamageLevel.sol +59 -0
  398. package/contracts/examples/fire/FirePool.sol +86 -0
  399. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  400. package/contracts/examples/fire/FireProduct.sol +433 -0
  401. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  402. package/contracts/examples/fire/FireUSD.sol +26 -0
  403. package/contracts/examples/flight/FlightOracle.sol +167 -0
  404. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  405. package/contracts/examples/flight/FlightPool.sol +89 -0
  406. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  407. package/contracts/examples/flight/FlightProduct.sol +728 -0
  408. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  409. package/contracts/examples/flight/FlightUSD.sol +26 -0
  410. package/contracts/examples/flight/originalV1.sol +396 -0
  411. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  412. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  413. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  414. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  415. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  416. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  417. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  418. package/contracts/instance/BaseStore.sol +93 -0
  419. package/contracts/instance/BundleSet.sol +42 -38
  420. package/contracts/instance/IBaseStore.sol +37 -0
  421. package/contracts/instance/IInstance.sol +113 -43
  422. package/contracts/instance/IInstanceService.sol +61 -34
  423. package/contracts/instance/Instance.sol +201 -104
  424. package/contracts/instance/InstanceAdmin.sol +275 -162
  425. package/contracts/instance/InstanceAuthorizationV3.sol +142 -71
  426. package/contracts/instance/InstanceReader.sol +502 -251
  427. package/contracts/instance/InstanceService.sol +333 -262
  428. package/contracts/instance/InstanceServiceManager.sol +6 -7
  429. package/contracts/instance/InstanceStore.sol +27 -36
  430. package/contracts/instance/ProductStore.sol +119 -0
  431. package/contracts/instance/RiskSet.sol +126 -0
  432. package/contracts/instance/TargetNames.sol +10 -0
  433. package/contracts/instance/base/BalanceStore.sol +4 -6
  434. package/contracts/instance/base/ObjectCounter.sol +1 -2
  435. package/contracts/instance/base/ObjectLifecycle.sol +13 -10
  436. package/contracts/instance/base/ObjectSet.sol +31 -33
  437. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  438. package/contracts/instance/module/IBundle.sol +6 -5
  439. package/contracts/instance/module/IComponents.sol +30 -19
  440. package/contracts/instance/module/IDistribution.sol +21 -8
  441. package/contracts/instance/module/IPolicy.sol +50 -29
  442. package/contracts/instance/module/IRisk.sol +5 -0
  443. package/contracts/mock/Dip.sol +1 -1
  444. package/contracts/oracle/BasicOracle.sol +2 -5
  445. package/contracts/oracle/BasicOracleAuthorization.sol +14 -8
  446. package/contracts/oracle/IOracle.sol +9 -4
  447. package/contracts/oracle/IOracleService.sol +14 -13
  448. package/contracts/oracle/Oracle.sol +11 -27
  449. package/contracts/oracle/OracleService.sol +119 -87
  450. package/contracts/oracle/OracleServiceManager.sol +6 -6
  451. package/contracts/pool/BasicPool.sol +39 -41
  452. package/contracts/pool/BasicPoolAuthorization.sol +39 -13
  453. package/contracts/pool/BundleService.sol +200 -155
  454. package/contracts/pool/BundleServiceManager.sol +6 -6
  455. package/contracts/pool/IBundleService.sol +42 -46
  456. package/contracts/pool/IPoolComponent.sol +19 -15
  457. package/contracts/pool/IPoolService.sol +97 -77
  458. package/contracts/pool/Pool.sol +143 -138
  459. package/contracts/pool/PoolLib.sol +341 -0
  460. package/contracts/pool/PoolService.sol +413 -233
  461. package/contracts/pool/PoolServiceManager.sol +4 -4
  462. package/contracts/product/ApplicationService.sol +144 -47
  463. package/contracts/product/ApplicationServiceManager.sol +4 -4
  464. package/contracts/product/BasicProduct.sol +13 -46
  465. package/contracts/product/BasicProductAuthorization.sol +33 -12
  466. package/contracts/product/ClaimService.sol +394 -185
  467. package/contracts/product/ClaimServiceManager.sol +4 -4
  468. package/contracts/product/IApplicationService.sol +29 -3
  469. package/contracts/product/IClaimService.sol +48 -11
  470. package/contracts/product/IPolicyService.sol +61 -37
  471. package/contracts/product/IPricingService.sol +11 -10
  472. package/contracts/product/IProductComponent.sol +27 -5
  473. package/contracts/product/IRiskService.sol +48 -0
  474. package/contracts/product/PolicyService.sol +445 -276
  475. package/contracts/product/PolicyServiceLib.sol +139 -0
  476. package/contracts/product/PolicyServiceManager.sol +4 -4
  477. package/contracts/product/PricingService.sol +90 -84
  478. package/contracts/product/PricingServiceManager.sol +4 -4
  479. package/contracts/product/Product.sol +201 -100
  480. package/contracts/product/RiskService.sol +190 -0
  481. package/contracts/product/RiskServiceManager.sol +39 -0
  482. package/contracts/registry/ChainNft.sol +72 -40
  483. package/contracts/registry/IRegistry.sol +70 -32
  484. package/contracts/registry/IRegistryService.sol +5 -12
  485. package/contracts/registry/IRelease.sol +29 -0
  486. package/contracts/registry/ITransferInterceptor.sol +1 -2
  487. package/contracts/registry/Registry.sol +367 -207
  488. package/contracts/registry/RegistryAdmin.sol +114 -288
  489. package/contracts/registry/RegistryAuthorization.sol +336 -0
  490. package/contracts/registry/RegistryService.sol +38 -49
  491. package/contracts/registry/RegistryServiceManager.sol +3 -3
  492. package/contracts/registry/ReleaseAdmin.sol +195 -0
  493. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  494. package/contracts/registry/ReleaseRegistry.sol +279 -241
  495. package/contracts/registry/ServiceAuthorizationV3.sol +205 -63
  496. package/contracts/registry/TokenRegistry.sol +61 -59
  497. package/contracts/shared/Component.sol +70 -136
  498. package/contracts/shared/ComponentService.sol +423 -387
  499. package/contracts/shared/ComponentServiceManager.sol +8 -5
  500. package/contracts/shared/ContractLib.sol +312 -0
  501. package/contracts/shared/IComponent.sol +6 -18
  502. package/contracts/shared/IComponentService.sol +43 -40
  503. package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
  504. package/contracts/shared/IKeyValueStore.sol +9 -1
  505. package/contracts/shared/ILifecycle.sol +3 -1
  506. package/contracts/shared/INftOwnable.sol +4 -0
  507. package/contracts/shared/IPolicyHolder.sol +12 -22
  508. package/contracts/shared/IRegisterable.sol +22 -1
  509. package/contracts/shared/IService.sol +3 -5
  510. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  511. package/contracts/shared/InstanceLinkedComponent.sol +116 -54
  512. package/contracts/shared/KeyValueStore.sol +4 -4
  513. package/contracts/shared/Lifecycle.sol +15 -4
  514. package/contracts/shared/NftOwnable.sol +33 -11
  515. package/contracts/shared/PolicyHolder.sol +20 -59
  516. package/contracts/shared/Registerable.sol +52 -21
  517. package/contracts/shared/RegistryLinked.sol +9 -14
  518. package/contracts/shared/Service.sol +20 -35
  519. package/contracts/shared/TokenHandler.sol +310 -26
  520. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  521. package/contracts/staking/IStaking.sol +271 -71
  522. package/contracts/staking/IStakingService.sol +45 -78
  523. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  524. package/contracts/staking/Staking.sol +525 -243
  525. package/contracts/staking/StakingLib.sol +195 -0
  526. package/contracts/staking/StakingManager.sol +12 -9
  527. package/contracts/staking/StakingReader.sol +70 -82
  528. package/contracts/staking/StakingService.sol +62 -152
  529. package/contracts/staking/StakingServiceManager.sol +7 -5
  530. package/contracts/staking/StakingStore.sol +1093 -330
  531. package/contracts/staking/TargetHandler.sol +132 -0
  532. package/contracts/staking/TargetManagerLib.sol +73 -46
  533. package/contracts/type/Amount.sol +19 -0
  534. package/contracts/type/Blocknumber.sol +22 -16
  535. package/contracts/type/ChainId.sol +101 -0
  536. package/contracts/type/ClaimId.sol +6 -1
  537. package/contracts/type/Fee.sol +8 -8
  538. package/contracts/type/Key32.sol +2 -2
  539. package/contracts/type/Key32Set.sol +62 -0
  540. package/contracts/type/NftId.sol +7 -0
  541. package/contracts/type/ObjectType.sol +74 -67
  542. package/contracts/type/PayoutId.sol +10 -10
  543. package/contracts/type/Referral.sol +6 -0
  544. package/contracts/type/RequestIdSet.sol +62 -0
  545. package/contracts/type/RiskId.sol +38 -6
  546. package/contracts/type/RoleId.sol +61 -55
  547. package/contracts/type/Seconds.sol +44 -1
  548. package/contracts/type/Selector.sol +5 -0
  549. package/contracts/type/StateId.sol +15 -1
  550. package/contracts/type/String.sol +42 -0
  551. package/contracts/type/Timestamp.sol +24 -8
  552. package/contracts/type/UFixed.sol +38 -126
  553. package/contracts/type/Version.sol +54 -5
  554. package/contracts/upgradeability/IVersionable.sol +3 -0
  555. package/contracts/upgradeability/ProxyManager.sol +93 -45
  556. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  557. package/contracts/upgradeability/Versionable.sol +8 -5
  558. package/package.json +5 -4
  559. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  560. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  561. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  562. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  563. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  564. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  565. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  566. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
  567. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  568. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  569. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  570. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  571. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  572. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  573. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  574. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  575. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  576. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  577. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
  578. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  579. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
  580. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  581. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  582. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  583. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  584. package/contracts/instance/module/IAccess.sol +0 -46
  585. package/contracts/product/IProductService.sol +0 -33
  586. package/contracts/product/ProductService.sol +0 -99
  587. package/contracts/product/ProductServiceManager.sol +0 -39
  588. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  589. package/contracts/shared/InitializableCustom.sol +0 -177
  590. package/contracts/staking/StakeManagerLib.sol +0 -231
  591. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,85 +1,67 @@
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
-
11
- import {NftId} from "../type/NftId.sol";
12
- import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
- 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";
19
-
20
- 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";
24
6
 
7
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
8
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
25
9
  import {IRegistry} from "./IRegistry.sol";
10
+ import {IRelease} from "./IRelease.sol";
26
11
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
27
- import {IRegistryService} from "./IRegistryService.sol";
12
+ import {IService} from "../shared/IService.sol";
28
13
  import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
29
- import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
14
+
15
+ import {ContractLib} from "../shared/ContractLib.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {ObjectType, ObjectTypeLib, COMPONENT, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
30
18
  import {RegistryAdmin} from "./RegistryAdmin.sol";
31
19
  import {Registry} from "./Registry.sol";
32
- import {TokenRegistry} from "./TokenRegistry.sol";
20
+ import {ReleaseAdmin} from "./ReleaseAdmin.sol";
33
21
  import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
34
-
35
- // TODO rename to something that does not end with 'Manager'
36
- // everywhere else *Manager points to an upgradeable contract
22
+ import {Seconds} from "../type/Seconds.sol";
23
+ import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "../type/StateId.sol";
24
+ import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
25
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
26
+
27
+ /// @dev The ReleaseRegistry manages the lifecycle of major GIF releases and their services.
28
+ /// The creation of a new GIF release is a multi-step process:
29
+ /// 1. The creation of a new GIF release is initiated by the GIF admin.
30
+ /// 2. A GIF manager then prepares the release by setting up the service authorization contract.
31
+ /// 3. The GIF manager deploys and registers all related service contracts with the release registry.
32
+ /// 4. The GIF admin verifies and activates the release.
33
+ /// 3. The GIF admin may pause and resume a release.
37
34
  contract ReleaseRegistry is
38
35
  AccessManaged,
39
36
  ReleaseLifecycle,
40
37
  IRegistryLinked
41
38
  {
42
- using ObjectTypeLib for ObjectType;
43
-
44
- uint256 public constant INITIAL_GIF_VERSION = 3;
39
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
45
40
 
46
- event LogReleaseCreation(VersionPart version, bytes32 salt);
47
- event LogReleaseActivation(VersionPart version);
48
- event LogReleaseDisabled(VersionPart version);
49
- event LogReleaseEnabled(VersionPart version);
41
+ event LogReleaseCreation(IAccessAdmin admin, VersionPart release, bytes32 salt);
42
+ event LogReleaseActivation(VersionPart release);
43
+ event LogReleaseDisabled(VersionPart release);
44
+ event LogReleaseEnabled(VersionPart release);
50
45
 
51
46
  // constructor
52
47
  error ErrorReleaseRegistryNotRegistry(Registry registry);
53
48
 
54
- // createNextRelease
55
- error ErrorReleaseRegistryReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
56
-
57
- // prepareRelease
58
- error ErrorReleaseRegistryReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
59
- error ErrorReleaseRegistryReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
60
- error ErrorReleaseRegistryVersionMismatch(VersionPart expected, VersionPart actual);
61
- error ErrorReleaseRegistryNoDomains(VersionPart version);
49
+ // _verifyServiceAuthorization
50
+ error ErrorReleaseRegistryNotServiceAuth(address notAuth);
51
+ error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
52
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
62
53
 
63
54
  // registerService
64
- error ErrorReleaseRegistryNoServiceRegistrationExpected();
65
- error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
66
- error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
67
- error ErrorReleaseRegistryNotService(address notService);
68
55
  error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
69
56
 
70
57
  // activateNextRelease
71
- error ErrorReleaseRegistryReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
72
- error ErrorReleaseRegistryReleaseNotCreated(VersionPart releaseVersion);
73
- error ErrorReleaseRegistryReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
74
- error ErrorReleaseRegistryReleaseAlreadyActivated(VersionPart releaseVersion);
75
-
76
- // disableRelease
77
- error ErrorReleaseRegistryReleaseNotActivated(VersionPart releaseVersion);
78
- error ErrorReleaseRegistryReleaseAlreadyDisabled(VersionPart releaseVersion);
58
+ error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
79
59
 
80
60
  // _verifyService
81
- error ErrorReleaseRegistryServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
82
- error ErrorReleaseRegistryServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
61
+ error ErrorReleaseRegistryNotService(address notService);
62
+ error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
63
+ error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
64
+ error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
83
65
 
84
66
  // _verifyServiceInfo
85
67
  error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
@@ -89,55 +71,60 @@ contract ReleaseRegistry is
89
71
  error ErrorReleaseRegistryServiceSelfRegistration(IService service);
90
72
  error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
91
73
 
92
- Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
93
-
94
- RegistryAdmin public immutable _admin;
74
+ RegistryAdmin public immutable _registryAdmin;
95
75
  Registry public immutable _registry;
96
- IRegisterable private _staking;
97
- address private _stakingOwner;
98
76
 
99
- mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
100
- mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
77
+ mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
78
+ VersionPart [] internal _release; // array of all created releases
79
+ ReleaseAdmin internal _masterReleaseAdmin;
101
80
 
102
- // TODO check where/why this is used
103
- mapping(address registryService => VersionPart version) _releaseVersionByAddress;
81
+ VersionPart internal _latest; // latest active release
82
+ VersionPart internal _next; // release version to create and activate
104
83
 
105
- VersionPart private _initial;// first active version
106
- VersionPart internal _latest; // latest active version
107
- VersionPart internal _next; // version to create and activate
108
- mapping(VersionPart verson => StateId releaseState) private _state;
109
-
110
- uint256 internal _registeredServices;
111
- uint256 internal _servicesToRegister;
84
+ // counters per release
85
+ uint256 internal _registeredServices = 0;
86
+ uint256 internal _servicesToRegister = 0;
112
87
 
88
+ // TODO move master relase admin outside constructor (same construction as for registry admin)
113
89
  constructor(Registry registry)
114
90
  AccessManaged(msg.sender)
115
91
  {
116
- // TODO move this part to RegistryLinked constructor
117
- if(!_isRegistry(address(registry))) {
92
+ if (!ContractLib.isRegistry(address(registry))) {
118
93
  revert ErrorReleaseRegistryNotRegistry(registry);
119
94
  }
120
95
 
121
96
  setAuthority(registry.getAuthority());
122
97
 
123
98
  _registry = registry;
124
- _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
99
+ _registryAdmin = RegistryAdmin(_registry.getRegistryAdminAddress());
100
+ _masterReleaseAdmin = new ReleaseAdmin(
101
+ _cloneNewAccessManager());
125
102
 
126
- _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
127
103
  _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
128
104
  }
129
105
 
130
- /// @dev skips previous release if was not activated
131
- /// sets next release into state SCHEDULED
106
+ /// @dev Initiates the creation of a new GIF release by the GIF admin.
107
+ /// Sets previous release into SKIPPED state if it was created but not activated.
108
+ /// Sets the new release into state SCHEDULED.
132
109
  function createNextRelease()
133
110
  external
134
111
  restricted() // GIF_ADMIN_ROLE
135
112
  returns(VersionPart)
136
113
  {
137
- _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
114
+ VersionPart release = _next;
115
+
116
+ if(isValidTransition(RELEASE(), _releaseInfo[release].state, SKIPPED())) {
117
+ _releaseInfo[release].state = SKIPPED();
118
+ }
119
+
120
+ release = VersionPartLib.toVersionPart(release.toInt() + 1);
121
+ _release.push(release);
122
+
123
+ _next = release;
124
+ _releaseInfo[release].version = release;
125
+ _releaseInfo[release].state = getInitialState(RELEASE());
138
126
  _servicesToRegister = 0;
139
127
  _registeredServices = 0;
140
- _state[_next] = getInitialState(RELEASE());
141
128
 
142
129
  return _next;
143
130
  }
@@ -149,183 +136,163 @@ contract ReleaseRegistry is
149
136
  external
150
137
  restricted() // GIF_MANAGER_ROLE
151
138
  returns(
152
- address authority,
153
- VersionPart version,
139
+ ReleaseAdmin releaseAdmin,
140
+ VersionPart releaseVersion,
154
141
  bytes32 releaseSalt
155
142
  )
156
143
  {
157
- authority = _admin.authority();
158
- version = _next;
144
+ releaseVersion = _next;
145
+
146
+ // release can transition into DEPLOYING state
147
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
148
+
149
+ // verify authorizations
150
+ uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
151
+
152
+ // create and initialize release admin
153
+ releaseAdmin = _cloneNewReleaseAdmin(serviceAuthorization, releaseVersion);
154
+ releaseSalt = salt;
159
155
 
160
156
  // ensures unique salt
161
157
  // TODO CreateX have clones capability also
162
158
  // what would releaseSalt look like if used with CreateX in pemissioned mode?
163
- releaseSalt = keccak256(
159
+ /*releaseSalt = keccak256(
164
160
  bytes.concat(
165
- bytes32(version.toInt()),
166
- salt));
167
-
168
- // verify release in state SCHEDULED
169
- if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
170
- revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
171
- }
172
-
173
- _state[version] = DEPLOYING();
174
-
175
- // verify authorizaion contract release matches with expected version
176
- VersionPart releaseVersion = serviceAuthorization.getRelease();
177
- if (releaseVersion != version) {
178
- revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
179
- }
180
-
181
-
182
- // sanity check to ensure service domain list is not empty
183
- uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
184
- if (serviceDomainsCount == 0) {
185
- revert ErrorReleaseRegistryNoDomains(version);
186
- }
187
-
188
- // verify prepareNextRelease is only called once per release
189
- if(_servicesToRegister > 0) {
190
- revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
191
- }
161
+ bytes32(releaseVersion.toInt()),
162
+ salt));*/
192
163
 
193
164
  _servicesToRegister = serviceDomainsCount;
194
- _serviceAuthorization[version] = serviceAuthorization;
165
+ _releaseInfo[releaseVersion].state = DEPLOYING();
166
+ _releaseInfo[releaseVersion].salt = releaseSalt;
167
+ // TODO allow for the same serviceAuthorization address to be used for multiple releases?
168
+ _releaseInfo[releaseVersion].auth = serviceAuthorization;
169
+ _releaseInfo[releaseVersion].releaseAdmin = address(releaseAdmin);
195
170
 
196
- emit LogReleaseCreation(version, releaseSalt);
171
+ emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
197
172
  }
198
173
 
199
- // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
200
174
  function registerService(IService service)
201
175
  external
202
176
  restricted // GIF_MANAGER_ROLE
203
177
  returns(NftId nftId)
204
178
  {
205
179
  VersionPart releaseVersion = _next;
206
- StateId state = _state[releaseVersion];
207
180
 
208
- // verify release in state DEPLOYING
209
- if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
210
- // TOOD name must represent failed state transition
211
- revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
212
- }
181
+ // release can transition to DEPLOYED state
182
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
213
183
 
214
- _state[releaseVersion] = DEPLOYING();
184
+ address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
185
+ IServiceAuthorization releaseAuthz = _releaseInfo[releaseVersion].auth;
186
+ ObjectType expectedDomain = releaseAuthz.getServiceDomain(_registeredServices);
215
187
 
216
- // not all services are registered
217
- if (_servicesToRegister == _registeredServices) {
218
- revert ErrorReleaseRegistryNoServiceRegistrationExpected();
219
- }
220
-
221
- // service can work with release manager
188
+ // service can work with release registry and release version
222
189
  (
223
190
  IRegistry.ObjectInfo memory info,
224
191
  ObjectType serviceDomain,
225
192
  VersionPart serviceVersion
226
- ) = _verifyService(service);
193
+ //,string memory serviceName
194
+ ) = _verifyService(
195
+ service,
196
+ releaseAuthority,
197
+ releaseVersion,
198
+ expectedDomain
199
+ );
200
+
201
+ //_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
202
+ //_releaseInfo[releaseVersion].domains.push(serviceDomain);
203
+ //_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
204
+
205
+ _registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
227
206
 
228
- // service domain matches defined in release config
229
- ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
230
- if (serviceDomain != expectedDomain) {
231
- revert ErrorReleaseRegistryServiceDomainMismatch(expectedDomain, serviceDomain);
207
+ // release fully deployed
208
+ if(_servicesToRegister == _registeredServices) {
209
+ _releaseInfo[releaseVersion].state = DEPLOYED();
232
210
  }
233
211
 
212
+ // TODO: service address matches defined in release auth (precalculated one)
213
+ // revert ErrorReleaseRegistryServiceAddressMismatch()
214
+
215
+ // setup service authorization
216
+ ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
217
+ releaseAdmin.setReleaseLocked(false);
218
+ releaseAdmin.authorizeService(
219
+ service,
220
+ serviceDomain,
221
+ releaseVersion);
222
+ releaseAdmin.setReleaseLocked(true);
223
+
234
224
  // register service with registry
235
225
  nftId = _registry.registerService(info, serviceVersion, serviceDomain);
236
226
  service.linkToRegisteredNftId();
237
- _registeredServices++;
238
-
239
- // setup service authorization
240
- _admin.authorizeService(
241
- _serviceAuthorization[releaseVersion],
242
- service);
243
-
244
- // TODO consider to extend this to REGISTRY
245
- // special roles for registry/staking/pool service
246
- if (serviceDomain == STAKING() || serviceDomain == POOL()) {
247
- // TODO rename to grantServiceDomainRole()
248
- _admin.grantServiceRoleForAllVersions(service, serviceDomain);
249
- }
250
227
  }
251
228
 
252
229
 
230
+ // TODO return activated version
253
231
  function activateNextRelease()
254
232
  external
255
233
  restricted // GIF_ADMIN_ROLE
256
234
  {
257
- VersionPart version = _next;
258
- StateId state = _state[version];
259
- StateId newState = ACTIVE();
235
+ VersionPart release = _next;
260
236
 
261
- // verify release in state DEPLOYING
262
- if (!isValidTransition(RELEASE(), state, newState)) {
263
- revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
264
- }
237
+ // release can transition to ACTIVE state
238
+ checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
265
239
 
266
- // release fully deployed
267
- if(_registeredServices < _servicesToRegister) {
268
- revert ErrorReleaseRegistryReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
269
- }
240
+ _latest = release;
241
+ _releaseInfo[release].state = ACTIVE();
242
+ _releaseInfo[release].activatedAt = TimestampLib.current();
243
+ _releaseInfo[release].disabledAt = TimestampLib.max();
270
244
 
271
- // release exists, registry service MUST exist
272
- address service = _registry.getServiceAddress(REGISTRY(), version);
245
+ // grant special roles for registry/staking/pool services
246
+ // this will enable access to core contracts functions
247
+
248
+ // registry service MUST be registered for each release
249
+ address service = _registry.getServiceAddress(REGISTRY(), release);
273
250
  if(service == address(0)) {
274
- revert ErrorReleaseRegistryReleaseNotCreated(version);
251
+ revert ErrorReleaseRegistryRegistryServiceMissing(release);
275
252
  }
276
253
 
277
- _latest = version;
278
- _state[version] = newState;
279
-
280
- _releaseVersionByAddress[service] = version;
281
- _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
254
+ _registryAdmin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
282
255
 
283
- emit LogReleaseActivation(version);
284
- }
285
-
286
- /// @dev stop all operations with release services
287
- function pauseRelease(VersionPart version)
288
- external
289
- restricted // GIF_ADMIN_ROLE
290
- {
291
- StateId state = _state[version];
292
- StateId newState = PAUSED();
256
+ service = _registry.getServiceAddress(STAKING(), release);
257
+ if(service != address(0)) {
258
+ _registryAdmin.grantServiceRoleForAllVersions(IService(service), STAKING());
259
+ }
293
260
 
294
- // verify release in state ACTIVE
295
- if (!isValidTransition(RELEASE(), state, newState)) {
296
- revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
261
+ service = _registry.getServiceAddress(COMPONENT(), release);
262
+ if(service != address(0)) {
263
+ _registryAdmin.grantServiceRoleForAllVersions(IService(service), COMPONENT());
297
264
  }
298
265
 
299
- // TODO come up with a substitute
300
- //_releaseAccessManager[version].disable();
266
+ service = _registry.getServiceAddress(POOL(), release);
267
+ if(service != address(0)) {
268
+ _registryAdmin.grantServiceRoleForAllVersions(IService(service), POOL());
269
+ }
301
270
 
302
- _state[version] = newState;
303
- _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
271
+ _setReleaseLocked(release, false);
304
272
 
305
- emit LogReleaseDisabled(version);
273
+ emit LogReleaseActivation(release);
306
274
  }
307
275
 
308
- // TODO consider revert if some delay is expired -> becomes disabled automatically
309
- /// @dev resume operations with release services
310
- function unpauseRelease(VersionPart version)
311
- external
312
- restricted // GIF_ADMIN_ROLE
276
+ /// @dev stop/resume operations with restricted functions
277
+ function setActive(VersionPart release, bool active)
278
+ public
279
+ restricted
313
280
  {
314
- StateId state = _state[version];
315
- StateId newState = ACTIVE();
316
-
317
- // verify release in state PAUSED
318
- if (!isValidTransition(RELEASE(), state, newState)) {
319
- revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
281
+ StateId state = _releaseInfo[release].state;
282
+
283
+ if(active) {
284
+ checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
285
+ _releaseInfo[release].state = ACTIVE();
286
+ _releaseInfo[release].disabledAt = TimestampLib.max();
287
+ emit LogReleaseEnabled(release);
288
+ } else {
289
+ checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
290
+ _releaseInfo[release].state = PAUSED();
291
+ _releaseInfo[release].disabledAt = TimestampLib.current();
292
+ emit LogReleaseDisabled(release);
320
293
  }
321
294
 
322
- // TODO come up with a substitute
323
- // _releaseAccessManager[version].enable();
324
-
325
- _state[version] = newState;
326
- _releaseInfo[version].disabledAt = zeroTimestamp();
327
-
328
- emit LogReleaseEnabled(version);
295
+ _setReleaseLocked(release, !active);
329
296
  }
330
297
 
331
298
  //--- view functions ----------------------------------------------------//
@@ -338,49 +305,55 @@ contract ReleaseRegistry is
338
305
  return Clones.predictDeterministicAddress(implementation, salt, deployer);
339
306
  }
340
307
 
341
- function isActiveRegistryService(address service) external view returns(bool) {
342
- VersionPart version = _releaseVersionByAddress[service];
343
- return isActiveRelease(version);
308
+ function isActiveRelease(VersionPart release) public view returns(bool) {
309
+ return _releaseInfo[release].state == ACTIVE();
344
310
  }
345
311
 
346
- function isActiveRelease(VersionPart version) public view returns(bool) {
347
- return _state[version] == ACTIVE();
312
+ function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
313
+ return _releaseInfo[release];
348
314
  }
349
315
 
350
- function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
351
- return _releaseInfo[version];
316
+ /// @dev Returns the number of created releases.
317
+ /// Releases might be in another state than ACTIVE.
318
+ function releases() external view returns (uint) {
319
+ return _release.length;
320
+ }
321
+
322
+ /// @dev Returns the n-th release version.
323
+ /// Valid values for idx [0 .. releases() - 1]
324
+ function getVersion(uint256 idx) external view returns (VersionPart release) {
325
+ // return _releases;
326
+ return _release[idx];
352
327
  }
353
328
 
354
329
  function getNextVersion() public view returns(VersionPart) {
355
330
  return _next;
356
331
  }
357
332
 
333
+ /// @dev Returns the latest activated relase version.
334
+ /// There is no guarantee that the release is not currently paused.
358
335
  function getLatestVersion() external view returns(VersionPart) {
359
336
  return _latest;
360
337
  }
361
338
 
362
- function getInitialVersion() external view returns(VersionPart) {
363
- return _initial;
364
- }
365
-
366
- function getState(VersionPart version) external view returns (StateId stateId) {
367
- return _state[version];
339
+ function getState(VersionPart release) external view returns (StateId stateId) {
340
+ return _releaseInfo[release].state;
368
341
  }
369
342
 
370
343
  function getRemainingServicesToRegister() external view returns (uint256 services) {
371
344
  return _servicesToRegister - _registeredServices;
372
345
  }
373
346
 
374
- function getServiceAuthorization(VersionPart version)
347
+ function getServiceAuthorization(VersionPart release)
375
348
  external
376
349
  view
377
350
  returns (IServiceAuthorization serviceAuthorization)
378
351
  {
379
- return _serviceAuthorization[version];
352
+ return _releaseInfo[release].auth;
380
353
  }
381
354
 
382
355
  function getRegistryAdmin() external view returns (address) {
383
- return address(_admin);
356
+ return address(_registryAdmin);
384
357
  }
385
358
 
386
359
  //--- IRegistryLinked ------------------------------------------------------//
@@ -391,7 +364,86 @@ contract ReleaseRegistry is
391
364
 
392
365
  //--- private functions ----------------------------------------------------//
393
366
 
394
- function _verifyService(IService service)
367
+ function _setReleaseLocked(VersionPart release, bool locked)
368
+ private
369
+ {
370
+ ReleaseAdmin(
371
+ _releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
372
+ }
373
+
374
+ function _cloneNewReleaseAdmin(
375
+ IServiceAuthorization serviceAuthorization,
376
+ VersionPart release
377
+ )
378
+ private
379
+ returns (ReleaseAdmin clonedAdmin)
380
+ {
381
+ // clone and setup release specific release admin
382
+ clonedAdmin = ReleaseAdmin(
383
+ Clones.clone(address(_masterReleaseAdmin)));
384
+
385
+ string memory releaseAdminName = string(
386
+ abi.encodePacked(
387
+ "ReleaseAdminV",
388
+ release.toString()));
389
+
390
+ clonedAdmin.initialize(
391
+ address(_cloneNewAccessManager()),
392
+ releaseAdminName);
393
+
394
+ clonedAdmin.completeSetup(
395
+ address(_registry),
396
+ address(serviceAuthorization),
397
+ release,
398
+ address(this)); // release registry (this contract)
399
+
400
+ // lock release (remains locked until activation)
401
+ clonedAdmin.setReleaseLocked(true);
402
+ }
403
+
404
+
405
+ function _cloneNewAccessManager()
406
+ private
407
+ returns (address accessManager)
408
+ {
409
+ return Clones.clone(address(_registryAdmin.authority()));
410
+ }
411
+
412
+
413
+ function _verifyServiceAuthorization(
414
+ IServiceAuthorization serviceAuthorization,
415
+ VersionPart releaseVersion,
416
+ bytes32 salt
417
+ )
418
+ private
419
+ view
420
+ returns (uint256 serviceDomainsCount)
421
+ {
422
+ // authorization contract supports IServiceAuthorization interface
423
+ if(!ContractLib.supportsInterface(address(serviceAuthorization), type(IServiceAuthorization).interfaceId)) {
424
+ revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
425
+ }
426
+
427
+ // authorizaions contract version matches with release version
428
+ VersionPart authVersion = serviceAuthorization.getRelease();
429
+ if (releaseVersion != authVersion) {
430
+ revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
431
+ }
432
+
433
+ // sanity check to ensure service domain list is not empty
434
+ serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
435
+ if (serviceDomainsCount == 0) {
436
+ revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
437
+ }
438
+ }
439
+
440
+ // TODO get service names
441
+ function _verifyService(
442
+ IService service,
443
+ address expectedAuthority,
444
+ VersionPart expectedVersion,
445
+ ObjectType expectedDomain
446
+ )
395
447
  internal
396
448
  view
397
449
  returns(
@@ -412,22 +464,25 @@ contract ReleaseRegistry is
412
464
 
413
465
  _verifyServiceInfo(service, serviceInfo, owner);
414
466
 
415
- VersionPart releaseVersion = _next; // never 0
416
- address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
417
-
418
- // IMPORTANT: can not guarantee service access is actually controlled by authority
419
467
  if(serviceAuthority != expectedAuthority) {
420
- revert ErrorReleaseRegistryServiceReleaseAuthorityMismatch(
468
+ revert ErrorReleaseRegistryServiceAuthorityMismatch(
421
469
  service,
422
470
  serviceAuthority,
423
471
  expectedAuthority);
424
472
  }
425
473
 
426
- if(serviceVersion != releaseVersion) {
427
- revert ErrorReleaseRegistryServiceReleaseVersionMismatch(
474
+ if(serviceVersion != expectedVersion) {
475
+ revert ErrorReleaseRegistryServiceVersionMismatch(
428
476
  service,
429
477
  serviceVersion,
430
- releaseVersion);
478
+ expectedVersion);
479
+ }
480
+
481
+ if(serviceDomain != expectedDomain) {
482
+ revert ErrorReleaseRegistryServiceDomainMismatch(
483
+ service,
484
+ expectedDomain,
485
+ serviceDomain);
431
486
  }
432
487
  }
433
488
 
@@ -441,7 +496,7 @@ contract ReleaseRegistry is
441
496
  view
442
497
  {
443
498
  if(info.objectAddress != address(service)) {
444
- revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, address(service));
499
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
445
500
  }
446
501
 
447
502
  if(info.isInterceptor != false) { // service is never interceptor
@@ -466,22 +521,5 @@ contract ReleaseRegistry is
466
521
  revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
467
522
  }
468
523
  }
469
-
470
- /// @dev returns true iff a the address passes some simple proxy tests.
471
- function _isRegistry(address registryAddress) internal view returns (bool) {
472
-
473
- // zero address is certainly not registry
474
- if (registryAddress == address(0)) {
475
- return false;
476
- }
477
- // TODO try catch and return false in case of revert
478
- // or just panic
479
- // check if contract returns a zero nft id for its own address
480
- if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
481
- return false;
482
- }
483
-
484
- return true;
485
- }
486
524
  }
487
525