@etherisc/gif-next 0.0.2-8a352ce → 0.0.2-8a72793-100

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 (649) hide show
  1. package/README.md +427 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1643 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → authorization/AccessAdmin.sol/IAccessManagedChecker.json} +4 -4
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +615 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1349 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +382 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +644 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1016 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1509 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +864 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +915 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1008 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +412 -486
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +789 -0
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +511 -577
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2229 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +716 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2429 -0
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3718 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  102. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  107. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  108. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  110. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  111. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  112. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  114. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -0
  116. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  118. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +774 -0
  120. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  122. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +875 -0
  124. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  126. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  128. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  130. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  132. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1261 -0
  134. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  136. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +880 -0
  138. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +907 -0
  140. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  143. package/artifacts/contracts/pool/Pool.sol/Pool.json +1027 -0
  144. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  150. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +813 -0
  152. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +728 -0
  154. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  156. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1496 -0
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -0
  162. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +597 -0
  164. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  166. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +981 -0
  168. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +602 -0
  170. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1018 -0
  172. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +453 -0
  174. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1333 -0
  176. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  178. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +808 -0
  180. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.json +930 -0
  182. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +784 -0
  184. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  185. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  186. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  188. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  190. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  192. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1044 -113
  194. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1043 -0
  196. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  198. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  200. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/Registry.sol/Registry.json +1534 -178
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2203 -0
  204. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  206. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1269 -0
  208. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +735 -0
  210. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2099 -0
  212. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  214. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1361 -0
  216. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  218. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  220. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  221. package/artifacts/contracts/shared/Component.sol/Component.json +707 -0
  222. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1532 -0
  224. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  226. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +578 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  233. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  235. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  236. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +632 -0
  238. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1180 -0
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  241. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  242. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  244. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  246. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  247. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +57 -76
  248. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  249. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  250. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  251. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +162 -160
  252. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  253. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  254. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  255. package/artifacts/contracts/shared/IService.sol/IService.json +399 -0
  256. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  258. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  259. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +797 -0
  260. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  261. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  262. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  263. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  264. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  266. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  267. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  268. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  269. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  270. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  271. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +378 -0
  272. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  273. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  274. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  275. package/artifacts/contracts/shared/Service.sol/Service.json +453 -0
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  280. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  281. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  282. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  283. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
  284. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  285. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1096 -0
  286. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  288. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  289. package/artifacts/contracts/staking/Staking.sol/Staking.json +1849 -0
  290. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  292. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +788 -0
  294. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  296. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1301 -0
  298. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +732 -0
  300. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  301. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  302. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  303. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  304. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  305. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  306. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  308. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  310. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  312. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  314. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  332. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +199 -0
  334. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  336. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  342. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  344. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  346. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  348. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  350. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  352. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  354. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  356. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  358. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  360. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  362. package/contracts/accounting/AccountingService.sol +262 -0
  363. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  364. package/contracts/accounting/IAccountingService.sol +45 -0
  365. package/contracts/authorization/AccessAdmin.sol +831 -0
  366. package/contracts/authorization/AccessManagerCloneable.sol +159 -0
  367. package/contracts/authorization/Authorization.sol +365 -0
  368. package/contracts/authorization/IAccess.sol +49 -0
  369. package/contracts/authorization/IAccessAdmin.sol +171 -0
  370. package/contracts/authorization/IAuthorization.sol +80 -0
  371. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  372. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  373. package/contracts/distribution/BasicDistribution.sol +141 -0
  374. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  375. package/contracts/distribution/Distribution.sol +289 -0
  376. package/contracts/distribution/DistributionService.sol +358 -0
  377. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  378. package/contracts/distribution/IDistributionComponent.sol +52 -0
  379. package/contracts/distribution/IDistributionService.sol +101 -0
  380. package/contracts/examples/fire/DamageLevel.sol +59 -0
  381. package/contracts/examples/fire/FirePool.sol +90 -0
  382. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  383. package/contracts/examples/fire/FireProduct.sol +438 -0
  384. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  385. package/contracts/examples/fire/FireUSD.sol +26 -0
  386. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  387. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  388. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  389. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  390. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  391. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  392. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  393. package/contracts/instance/BundleSet.sol +130 -0
  394. package/contracts/instance/IInstance.sol +98 -15
  395. package/contracts/instance/IInstanceService.sol +83 -0
  396. package/contracts/instance/Instance.sol +271 -46
  397. package/contracts/instance/InstanceAdmin.sol +451 -0
  398. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  399. package/contracts/instance/InstanceReader.sol +637 -0
  400. package/contracts/instance/InstanceService.sol +450 -0
  401. package/contracts/instance/InstanceServiceManager.sol +39 -0
  402. package/contracts/instance/InstanceStore.sol +298 -0
  403. package/contracts/instance/RiskSet.sol +118 -0
  404. package/contracts/instance/base/BalanceStore.sol +123 -0
  405. package/contracts/instance/base/Cloneable.sol +28 -0
  406. package/contracts/instance/base/ObjectCounter.sol +20 -0
  407. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  408. package/contracts/instance/base/ObjectSet.sol +77 -0
  409. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  410. package/contracts/instance/module/IBundle.sol +20 -0
  411. package/contracts/instance/module/IComponents.sol +51 -0
  412. package/contracts/instance/module/IDistribution.sol +42 -0
  413. package/contracts/instance/module/IPolicy.sol +85 -0
  414. package/contracts/instance/module/IRisk.sol +14 -0
  415. package/contracts/mock/Dip.sol +26 -0
  416. package/contracts/oracle/BasicOracle.sol +47 -0
  417. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  418. package/contracts/oracle/IOracle.sol +36 -0
  419. package/contracts/oracle/IOracleComponent.sol +33 -0
  420. package/contracts/oracle/IOracleService.sol +66 -0
  421. package/contracts/oracle/Oracle.sol +156 -0
  422. package/contracts/oracle/OracleService.sol +310 -0
  423. package/contracts/oracle/OracleServiceManager.sol +39 -0
  424. package/contracts/pool/BasicPool.sol +175 -0
  425. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  426. package/contracts/pool/BundleService.sol +395 -0
  427. package/contracts/pool/BundleServiceManager.sol +39 -0
  428. package/contracts/pool/IBundleService.sol +115 -0
  429. package/contracts/pool/IPoolComponent.sol +62 -0
  430. package/contracts/pool/IPoolService.sol +165 -0
  431. package/contracts/pool/Pool.sol +345 -0
  432. package/contracts/pool/PoolLib.sol +216 -0
  433. package/contracts/pool/PoolService.sol +757 -0
  434. package/contracts/pool/PoolServiceManager.sol +39 -0
  435. package/contracts/product/ApplicationService.sol +259 -0
  436. package/contracts/product/ApplicationServiceManager.sol +38 -0
  437. package/contracts/product/BasicProduct.sol +51 -0
  438. package/contracts/product/BasicProductAuthorization.sol +56 -0
  439. package/contracts/product/ClaimService.sol +632 -0
  440. package/contracts/product/ClaimServiceManager.sol +38 -0
  441. package/contracts/product/IApplicationService.sol +66 -0
  442. package/contracts/product/IClaimService.sol +135 -0
  443. package/contracts/product/IPolicyService.sol +95 -0
  444. package/contracts/product/IPricingService.sol +39 -0
  445. package/contracts/product/IProductComponent.sol +62 -0
  446. package/contracts/product/IRiskService.sol +33 -0
  447. package/contracts/product/PolicyService.sol +664 -0
  448. package/contracts/product/PolicyServiceLib.sol +65 -0
  449. package/contracts/product/PolicyServiceManager.sol +39 -0
  450. package/contracts/product/PricingService.sol +304 -0
  451. package/contracts/product/PricingServiceManager.sol +39 -0
  452. package/contracts/product/Product.sol +478 -0
  453. package/contracts/product/RiskService.sol +145 -0
  454. package/contracts/product/RiskServiceManager.sol +39 -0
  455. package/contracts/registry/ChainNft.sol +176 -100
  456. package/contracts/registry/IRegistry.sol +148 -52
  457. package/contracts/registry/IRegistryService.sol +62 -0
  458. package/contracts/registry/IRelease.sol +26 -0
  459. package/contracts/registry/ITransferInterceptor.sol +6 -0
  460. package/contracts/registry/Registry.sol +665 -117
  461. package/contracts/registry/RegistryAdmin.sol +473 -0
  462. package/contracts/registry/RegistryAuthorization.sol +266 -0
  463. package/contracts/registry/RegistryService.sol +241 -0
  464. package/contracts/registry/RegistryServiceManager.sol +53 -0
  465. package/contracts/registry/ReleaseAdmin.sol +252 -0
  466. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  467. package/contracts/registry/ReleaseRegistry.sol +517 -0
  468. package/contracts/registry/ServiceAuthorizationV3.sol +329 -0
  469. package/contracts/registry/TokenRegistry.sol +313 -0
  470. package/contracts/shared/Component.sol +227 -0
  471. package/contracts/shared/ComponentService.sol +689 -0
  472. package/contracts/shared/ComponentServiceManager.sol +38 -0
  473. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  474. package/contracts/shared/ContractLib.sol +263 -0
  475. package/contracts/shared/IComponent.sol +61 -0
  476. package/contracts/shared/IComponentService.sol +110 -0
  477. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  478. package/contracts/shared/IKeyValueStore.sol +54 -0
  479. package/contracts/shared/ILifecycle.sol +31 -0
  480. package/contracts/shared/INftOwnable.sol +25 -0
  481. package/contracts/shared/IPolicyHolder.sol +35 -0
  482. package/contracts/shared/IRegisterable.sol +37 -0
  483. package/contracts/shared/IRegistryLinked.sol +11 -0
  484. package/contracts/shared/IService.sol +23 -0
  485. package/contracts/shared/InitializableERC165.sol +35 -0
  486. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  487. package/contracts/shared/KeyValueStore.sol +131 -0
  488. package/contracts/shared/Lifecycle.sol +88 -0
  489. package/contracts/shared/NftIdSet.sol +65 -0
  490. package/contracts/shared/NftOwnable.sol +127 -0
  491. package/contracts/shared/PolicyHolder.sol +62 -0
  492. package/contracts/shared/Registerable.sol +106 -0
  493. package/contracts/shared/RegistryLinked.sol +38 -0
  494. package/contracts/shared/Service.sol +65 -0
  495. package/contracts/shared/TokenHandler.sol +342 -0
  496. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  497. package/contracts/staking/IStaking.sol +169 -0
  498. package/contracts/staking/IStakingService.sol +165 -0
  499. package/contracts/staking/StakeManagerLib.sol +224 -0
  500. package/contracts/staking/Staking.sol +526 -0
  501. package/contracts/staking/StakingLifecycle.sol +23 -0
  502. package/contracts/staking/StakingManager.sol +52 -0
  503. package/contracts/staking/StakingReader.sol +190 -0
  504. package/contracts/staking/StakingService.sol +430 -0
  505. package/contracts/staking/StakingServiceManager.sol +45 -0
  506. package/contracts/staking/StakingStore.sol +605 -0
  507. package/contracts/staking/TargetManagerLib.sol +211 -0
  508. package/contracts/type/AddressSet.sol +58 -0
  509. package/contracts/type/Amount.sol +150 -0
  510. package/contracts/type/Blocknumber.sol +142 -0
  511. package/contracts/type/ClaimId.sol +80 -0
  512. package/contracts/type/DistributorType.sol +55 -0
  513. package/contracts/type/Fee.sol +66 -0
  514. package/contracts/type/Key32.sol +50 -0
  515. package/contracts/type/Key32Set.sol +62 -0
  516. package/contracts/type/NftId.sol +85 -0
  517. package/contracts/type/NftIdSet.sol +62 -0
  518. package/contracts/type/ObjectType.sol +294 -0
  519. package/contracts/type/PayoutId.sol +82 -0
  520. package/contracts/type/Referral.sol +90 -0
  521. package/contracts/type/RequestId.sol +75 -0
  522. package/contracts/type/RiskId.sol +74 -0
  523. package/contracts/type/RoleId.sol +182 -0
  524. package/contracts/type/Seconds.sol +101 -0
  525. package/contracts/type/Selector.sol +107 -0
  526. package/contracts/type/StateId.sol +149 -0
  527. package/contracts/type/String.sol +53 -0
  528. package/contracts/type/Timestamp.sol +141 -0
  529. package/contracts/type/UFixed.sol +245 -0
  530. package/contracts/type/Version.sol +159 -0
  531. package/contracts/upgradeability/IVersionable.sol +53 -0
  532. package/contracts/upgradeability/ProxyManager.sol +232 -0
  533. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  534. package/contracts/upgradeability/Versionable.sol +59 -0
  535. package/package.json +26 -7
  536. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  537. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  538. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  539. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  540. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  542. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  543. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  544. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  545. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  546. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  547. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  548. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  549. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  550. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  551. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  552. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  554. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  556. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  558. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  560. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  562. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  564. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  566. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  568. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  570. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  572. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  573. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  574. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  575. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  576. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  577. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  578. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  579. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  580. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  581. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  583. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  584. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  585. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  586. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  587. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  588. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  589. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  590. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  591. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  592. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  593. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  594. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  595. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  596. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  597. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  598. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  599. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  600. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  601. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  602. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  603. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  604. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  605. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  606. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  607. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  608. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  609. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  610. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  611. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  612. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  613. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  614. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  615. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  616. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  617. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  618. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  620. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  622. package/contracts/components/Component.sol +0 -62
  623. package/contracts/components/IPool.sol +0 -9
  624. package/contracts/components/IProduct.sol +0 -12
  625. package/contracts/components/Pool.sol +0 -29
  626. package/contracts/components/Product.sol +0 -66
  627. package/contracts/experiment/errors/Require.sol +0 -33
  628. package/contracts/experiment/errors/Revert.sol +0 -39
  629. package/contracts/experiment/inheritance/A.sol +0 -56
  630. package/contracts/experiment/inheritance/B.sol +0 -23
  631. package/contracts/experiment/inheritance/C.sol +0 -28
  632. package/contracts/experiment/inheritance/IA.sol +0 -18
  633. package/contracts/experiment/inheritance/IB.sol +0 -9
  634. package/contracts/experiment/inheritance/IC.sol +0 -11
  635. package/contracts/experiment/types/TypeA.sol +0 -42
  636. package/contracts/experiment/types/TypeB.sol +0 -24
  637. package/contracts/instance/access/Access.sol +0 -218
  638. package/contracts/instance/access/IAccess.sol +0 -83
  639. package/contracts/instance/component/ComponentModule.sol +0 -248
  640. package/contracts/instance/component/IComponent.sol +0 -95
  641. package/contracts/instance/policy/IPolicy.sol +0 -66
  642. package/contracts/instance/policy/PolicyModule.sol +0 -107
  643. package/contracts/instance/pool/IPoolModule.sol +0 -41
  644. package/contracts/instance/pool/PoolModule.sol +0 -86
  645. package/contracts/instance/product/IProductService.sol +0 -46
  646. package/contracts/instance/product/ProductService.sol +0 -108
  647. package/contracts/registry/IChainNft.sol +0 -18
  648. package/contracts/types/ChainId.sol +0 -30
  649. package/contracts/types/NftId.sol +0 -35
@@ -0,0 +1,517 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
6
+
7
+ import {ContractLib} from "../shared/ContractLib.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
10
+ import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
+ import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "../type/StateId.sol";
13
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
14
+
15
+ import {IService} from "../shared/IService.sol";
16
+
17
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
18
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
19
+
20
+ import {IRegistry} from "./IRegistry.sol";
21
+ import {IRelease} from "./IRelease.sol";
22
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
23
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
24
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
25
+ import {Registry} from "./Registry.sol";
26
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
27
+ import {ReleaseAdmin} from "./ReleaseAdmin.sol";
28
+
29
+ /// @dev The ReleaseRegistry manages the lifecycle of major GIF releases and their services.
30
+ /// The creation of a new GIF release is a multi-step process:
31
+ /// 1. The creation of a new GIF release is initiated by the GIF admin.
32
+ /// 2. A GIF manager then prepares the release by setting up the service authorization contract.
33
+ /// 3. The GIF manager deploys and registers all related service contracts with the release registry.
34
+ /// 4. The GIF admin verifies and activates the release.
35
+ /// 3. The GIF admin may pause and resume a release.
36
+ contract ReleaseRegistry is
37
+ AccessManaged,
38
+ ReleaseLifecycle,
39
+ IRegistryLinked
40
+ {
41
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
42
+
43
+ event LogReleaseCreation(IAccessAdmin admin, VersionPart release, bytes32 salt);
44
+ event LogReleaseActivation(VersionPart release);
45
+ event LogReleaseDisabled(VersionPart release);
46
+ event LogReleaseEnabled(VersionPart release);
47
+
48
+ // constructor
49
+ error ErrorReleaseRegistryNotRegistry(Registry registry);
50
+
51
+ // _verifyServiceAuthorization
52
+ error ErrorReleaseRegistryNotServiceAuth(address notAuth);
53
+ error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
54
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
55
+
56
+ // registerService
57
+ error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
58
+
59
+ // activateNextRelease
60
+ error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
61
+
62
+ // _verifyService
63
+ error ErrorReleaseRegistryNotService(address notService);
64
+ error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
65
+ error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
66
+ error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
67
+
68
+ // _verifyServiceInfo
69
+ error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
70
+ error ErrorReleaseRegistryServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
71
+ error ErrorReleaseRegistryServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
72
+ error ErrorReleaseRegistryServiceInfoOwnerInvalid(IService service, address expected, address found);
73
+ error ErrorReleaseRegistryServiceSelfRegistration(IService service);
74
+ error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
75
+
76
+ RegistryAdmin public immutable _admin;
77
+ Registry public immutable _registry;
78
+
79
+ mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
80
+ VersionPart [] internal _release; // array of all created releases
81
+ ReleaseAdmin internal _masterReleaseAdmin;
82
+
83
+ VersionPart internal _latest; // latest active release
84
+ VersionPart internal _next; // release version to create and activate
85
+
86
+ // counters per release
87
+ uint256 internal _registeredServices = 0;
88
+ uint256 internal _servicesToRegister = 0;
89
+
90
+ constructor(Registry registry)
91
+ AccessManaged(msg.sender)
92
+ {
93
+ if (!ContractLib.isRegistry(address(registry))) {
94
+ revert ErrorReleaseRegistryNotRegistry(registry);
95
+ }
96
+
97
+ setAuthority(registry.getAuthority());
98
+
99
+ _registry = registry;
100
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
101
+
102
+ _masterReleaseAdmin = new ReleaseAdmin(
103
+ address(new AccessManagerCloneable()));
104
+
105
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
106
+ }
107
+
108
+ /// @dev Initiates the creation of a new GIF release by the GIF admin.
109
+ /// Sets previous release into SKIPPED state if it was created but not activated.
110
+ /// Sets the new release into state SCHEDULED.
111
+ function createNextRelease()
112
+ external
113
+ restricted() // GIF_ADMIN_ROLE
114
+ returns(VersionPart)
115
+ {
116
+ VersionPart release = _next;
117
+
118
+ if(isValidTransition(RELEASE(), _releaseInfo[release].state, SKIPPED())) {
119
+ _releaseInfo[release].state = SKIPPED();
120
+ }
121
+
122
+ release = VersionPartLib.toVersionPart(release.toInt() + 1);
123
+ _release.push(release);
124
+
125
+ _next = release;
126
+ _releaseInfo[release].version = release;
127
+ _releaseInfo[release].state = getInitialState(RELEASE());
128
+ _servicesToRegister = 0;
129
+ _registeredServices = 0;
130
+
131
+ return _next;
132
+ }
133
+
134
+ function prepareNextRelease(
135
+ IServiceAuthorization serviceAuthorization,
136
+ bytes32 salt
137
+ )
138
+ external
139
+ restricted() // GIF_MANAGER_ROLE
140
+ returns(
141
+ ReleaseAdmin releaseAdmin,
142
+ VersionPart releaseVersion,
143
+ bytes32 releaseSalt
144
+ )
145
+ {
146
+ releaseVersion = _next;
147
+
148
+ // release can transition into DEPLOYING state
149
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
150
+
151
+ // verify authorizations
152
+ uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
153
+
154
+ // create and initialize release admin
155
+ releaseAdmin = _cloneNewReleaseAdmin(releaseVersion);
156
+ releaseSalt = salt;
157
+
158
+ // ensures unique salt
159
+ // TODO CreateX have clones capability also
160
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
161
+ /*releaseSalt = keccak256(
162
+ bytes.concat(
163
+ bytes32(releaseVersion.toInt()),
164
+ salt));*/
165
+
166
+ _servicesToRegister = serviceDomainsCount;
167
+ _releaseInfo[releaseVersion].state = DEPLOYING();
168
+ _releaseInfo[releaseVersion].salt = releaseSalt;
169
+ // TODO allow for the same serviceAuthorization address to be used for multiple releases?
170
+ _releaseInfo[releaseVersion].auth = serviceAuthorization;
171
+ _releaseInfo[releaseVersion].releaseAdmin = address(releaseAdmin);
172
+
173
+ emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
174
+ }
175
+
176
+ function registerService(IService service)
177
+ external
178
+ restricted // GIF_MANAGER_ROLE
179
+ returns(NftId nftId)
180
+ {
181
+ VersionPart releaseVersion = _next;
182
+
183
+ // release can transition to DEPLOYED state
184
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
185
+
186
+ address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
187
+ IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
188
+ ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
189
+
190
+ // service can work with release registry and release version
191
+ (
192
+ IRegistry.ObjectInfo memory info,
193
+ ObjectType serviceDomain,
194
+ VersionPart serviceVersion
195
+ //,string memory serviceName
196
+ ) = _verifyService(
197
+ service,
198
+ releaseAuthority,
199
+ releaseVersion,
200
+ expectedDomain
201
+ );
202
+
203
+ //_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
204
+ //_releaseInfo[releaseVersion].domains.push(serviceDomain);
205
+ //_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
206
+
207
+ _registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
208
+
209
+ // release fully deployed
210
+ if(_servicesToRegister == _registeredServices) {
211
+ _releaseInfo[releaseVersion].state = DEPLOYED();
212
+ }
213
+
214
+ // TODO: service address matches defined in release auth (precalculated one)
215
+ // revert ErrorReleaseRegistryServiceAddressMismatch()
216
+
217
+ // setup service authorization
218
+ ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
219
+ releaseAdmin.setReleaseLocked(false);
220
+ releaseAdmin.authorizeService(
221
+ releaseAuth,
222
+ service,
223
+ serviceDomain,
224
+ releaseVersion);
225
+ releaseAdmin.setReleaseLocked(true);
226
+
227
+ // register service with registry
228
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
229
+ service.linkToRegisteredNftId();
230
+ }
231
+
232
+
233
+ // TODO return activated version
234
+ function activateNextRelease()
235
+ external
236
+ restricted // GIF_ADMIN_ROLE
237
+ {
238
+ VersionPart release = _next;
239
+
240
+ // release can transition to ACTIVE state
241
+ checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
242
+
243
+ _latest = release;
244
+ _releaseInfo[release].state = ACTIVE();
245
+ _releaseInfo[release].activatedAt = TimestampLib.blockTimestamp();
246
+ _releaseInfo[release].disabledAt = TimestampLib.max();
247
+
248
+ // grant special roles for registry/staking/pool services
249
+ // this will enable access to core contracts functions
250
+
251
+ // registry service MUST be registered for each release
252
+ address service = _registry.getServiceAddress(REGISTRY(), release);
253
+ if(service == address(0)) {
254
+ revert ErrorReleaseRegistryRegistryServiceMissing(release);
255
+ }
256
+
257
+ _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
258
+
259
+ service = _registry.getServiceAddress(STAKING(), release);
260
+ if(service != address(0)) {
261
+ _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
262
+ }
263
+
264
+ service = _registry.getServiceAddress(POOL(), release);
265
+ if(service != address(0)) {
266
+ _admin.grantServiceRoleForAllVersions(IService(service), POOL());
267
+ }
268
+
269
+ _setReleaseLocked(release, false);
270
+
271
+ emit LogReleaseActivation(release);
272
+ }
273
+
274
+ /// @dev stop/resume operations with restricted functions
275
+ function setActive(VersionPart release, bool active)
276
+ public
277
+ restricted
278
+ {
279
+ StateId state = _releaseInfo[release].state;
280
+
281
+ if(active) {
282
+ checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
283
+ _releaseInfo[release].state = ACTIVE();
284
+ _releaseInfo[release].disabledAt = TimestampLib.max();
285
+ emit LogReleaseEnabled(release);
286
+ } else {
287
+ checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
288
+ _releaseInfo[release].state = PAUSED();
289
+ _releaseInfo[release].disabledAt = TimestampLib.blockTimestamp();
290
+ emit LogReleaseDisabled(release);
291
+ }
292
+
293
+ _setReleaseLocked(release, !active);
294
+ }
295
+
296
+ //--- view functions ----------------------------------------------------//
297
+
298
+ function predictDeterministicAddress(
299
+ address implementation,
300
+ bytes32 salt,
301
+ address deployer
302
+ ) external pure returns (address predicted) {
303
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
304
+ }
305
+
306
+ function isActiveRelease(VersionPart release) public view returns(bool) {
307
+ return _releaseInfo[release].state == ACTIVE();
308
+ }
309
+
310
+ function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
311
+ return _releaseInfo[release];
312
+ }
313
+
314
+ /// @dev Returns the number of created releases.
315
+ /// Releases might be in another state than ACTIVE.
316
+ function releases() external view returns (uint) {
317
+ return _release.length;
318
+ }
319
+
320
+ /// @dev Returns the n-th release version.
321
+ /// Valid values for idx [0 .. releases() - 1]
322
+ function getVersion(uint256 idx) external view returns (VersionPart release) {
323
+ // return _releases;
324
+ return _release[idx];
325
+ }
326
+
327
+ function getNextVersion() public view returns(VersionPart) {
328
+ return _next;
329
+ }
330
+
331
+ /// @dev Returns the latest activated relase version.
332
+ /// There is no guarantee that the release is not currently paused.
333
+ function getLatestVersion() external view returns(VersionPart) {
334
+ return _latest;
335
+ }
336
+
337
+ function getState(VersionPart release) external view returns (StateId stateId) {
338
+ return _releaseInfo[release].state;
339
+ }
340
+
341
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
342
+ return _servicesToRegister - _registeredServices;
343
+ }
344
+
345
+ function getServiceAuthorization(VersionPart release)
346
+ external
347
+ view
348
+ returns (IServiceAuthorization serviceAuthorization)
349
+ {
350
+ return _releaseInfo[release].auth;
351
+ }
352
+
353
+ function getRegistryAdmin() external view returns (address) {
354
+ return address(_admin);
355
+ }
356
+
357
+ //--- IRegistryLinked ------------------------------------------------------//
358
+
359
+ function getRegistry() external view returns (IRegistry) {
360
+ return _registry;
361
+ }
362
+
363
+ //--- private functions ----------------------------------------------------//
364
+
365
+ function _setReleaseLocked(VersionPart release, bool locked)
366
+ private
367
+ {
368
+ ReleaseAdmin(
369
+ _releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
370
+ }
371
+
372
+
373
+ function _cloneNewReleaseAdmin(VersionPart release)
374
+ private
375
+ returns (ReleaseAdmin clonedAdmin)
376
+ {
377
+ // clone release specific access manager
378
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
379
+ Clones.clone(
380
+ _masterReleaseAdmin.authority()));
381
+
382
+ // clone and setup release specific release admin
383
+ clonedAdmin = ReleaseAdmin(
384
+ Clones.clone(address(_masterReleaseAdmin)));
385
+
386
+ string memory releaseAdminName = string(
387
+ abi.encodePacked(
388
+ "ReleaseAdmin_v",
389
+ release.toString()));
390
+
391
+ clonedAdmin.initialize(
392
+ address(clonedAccessManager),
393
+ releaseAdminName);
394
+
395
+ clonedAdmin.completeSetup(
396
+ address(_registry),
397
+ address(this), // release registry (this contract)
398
+ release);
399
+
400
+ // lock release (remains locked until activation)
401
+ clonedAdmin.setReleaseLocked(true);
402
+ }
403
+
404
+
405
+ function _verifyServiceAuthorization(
406
+ IServiceAuthorization serviceAuthorization,
407
+ VersionPart releaseVersion,
408
+ bytes32 salt
409
+ )
410
+ private
411
+ view
412
+ returns (uint256 serviceDomainsCount)
413
+ {
414
+ // authorization contract supports IServiceAuthorization interface
415
+ if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
416
+ revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
417
+ }
418
+
419
+ // authorizaions contract version matches with release version
420
+ VersionPart authVersion = serviceAuthorization.getRelease();
421
+ if (releaseVersion != authVersion) {
422
+ revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
423
+ }
424
+
425
+ // sanity check to ensure service domain list is not empty
426
+ serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
427
+ if (serviceDomainsCount == 0) {
428
+ revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
429
+ }
430
+ }
431
+
432
+ // TODO get service names
433
+ function _verifyService(
434
+ IService service,
435
+ address expectedAuthority,
436
+ VersionPart expectedVersion,
437
+ ObjectType expectedDomain
438
+ )
439
+ internal
440
+ view
441
+ returns(
442
+ IRegistry.ObjectInfo memory serviceInfo,
443
+ ObjectType serviceDomain,
444
+ VersionPart serviceVersion
445
+ )
446
+ {
447
+ if(!service.supportsInterface(type(IService).interfaceId)) {
448
+ revert ErrorReleaseRegistryNotService(address(service));
449
+ }
450
+
451
+ address owner = msg.sender;
452
+ address serviceAuthority = service.authority();
453
+ serviceVersion = service.getVersion().toMajorPart();
454
+ serviceDomain = service.getDomain();// checked in registry
455
+ serviceInfo = service.getInitialInfo();
456
+
457
+ _verifyServiceInfo(service, serviceInfo, owner);
458
+
459
+ if(serviceAuthority != expectedAuthority) {
460
+ revert ErrorReleaseRegistryServiceAuthorityMismatch(
461
+ service,
462
+ serviceAuthority,
463
+ expectedAuthority);
464
+ }
465
+
466
+ if(serviceVersion != expectedVersion) {
467
+ revert ErrorReleaseRegistryServiceVersionMismatch(
468
+ service,
469
+ serviceVersion,
470
+ expectedVersion);
471
+ }
472
+
473
+ if(serviceDomain != expectedDomain) {
474
+ revert ErrorReleaseRegistryServiceDomainMismatch(
475
+ service,
476
+ expectedDomain,
477
+ serviceDomain);
478
+ }
479
+ }
480
+
481
+
482
+ function _verifyServiceInfo(
483
+ IService service,
484
+ IRegistry.ObjectInfo memory info,
485
+ address expectedOwner // assume always valid, can not be 0
486
+ )
487
+ internal
488
+ view
489
+ {
490
+ if(info.objectAddress != address(service)) {
491
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
492
+ }
493
+
494
+ if(info.isInterceptor != false) { // service is never interceptor
495
+ revert ErrorReleaseRegistryServiceInfoInterceptorInvalid(service, info.isInterceptor);
496
+ }
497
+
498
+ if(info.objectType != SERVICE()) {
499
+ revert ErrorReleaseRegistryServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
500
+ }
501
+
502
+ address owner = info.initialOwner;
503
+
504
+ if(owner != expectedOwner) { // registerable owner protection
505
+ revert ErrorReleaseRegistryServiceInfoOwnerInvalid(service, expectedOwner, owner);
506
+ }
507
+
508
+ if(owner == address(service)) {
509
+ revert ErrorReleaseRegistryServiceSelfRegistration(service);
510
+ }
511
+
512
+ if(_registry.isRegistered(owner)) {
513
+ revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
514
+ }
515
+ }
516
+ }
517
+