@etherisc/gif-next 0.0.2-ff282a4-523 → 0.0.2-ffa91a6-022

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 (584) hide show
  1. package/README.md +77 -10
  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 +1494 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +615 -0
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  19. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1224 -0
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +382 -0
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1209 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +644 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +152 -598
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +470 -446
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +200 -112
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +164 -335
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +340 -109
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1445 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2002 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1388 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1612 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2389 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +262 -79
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +274 -88
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +278 -196
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2036 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +716 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1386 -502
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +308 -239
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +161 -83
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1417 -536
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  108. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +753 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +333 -360
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +196 -92
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +215 -70
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -423
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +509 -356
  139. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  140. package/artifacts/contracts/pool/Pool.sol/Pool.json +223 -624
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  142. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +641 -689
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +202 -102
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +205 -244
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +170 -78
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  154. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +442 -332
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +204 -104
  159. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +155 -9
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +327 -16
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +399 -69
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  166. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +195 -82
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  168. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +367 -231
  169. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  170. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +100 -62
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +446 -394
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  174. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +183 -115
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingService.sol/PricingService.json +265 -318
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +193 -97
  181. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  182. package/artifacts/contracts/product/Product.sol/Product.json +403 -503
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  186. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +462 -56
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  192. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +251 -127
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  194. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  197. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  198. package/artifacts/contracts/registry/Registry.sol/Registry.json +905 -121
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  200. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2018 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  202. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +303 -245
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +159 -81
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1337 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  214. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  216. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +315 -139
  217. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Component.sol/Component.json +109 -296
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1172 -247
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  223. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +597 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  233. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +116 -141
  235. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1196 -0
  237. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  239. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  240. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
  241. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  242. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  243. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
  245. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  247. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +154 -0
  249. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IService.sol/IService.json +74 -2
  252. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  254. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  256. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  257. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -90
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  270. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  271. package/artifacts/contracts/shared/Service.sol/Service.json +67 -102
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +615 -6
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1301 -119
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +684 -62
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +1567 -176
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  286. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +232 -63
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +560 -0
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +762 -179
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +177 -73
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  301. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  306. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  308. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  310. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
  312. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  314. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  316. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +66 -4
  318. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  319. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  320. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  322. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  324. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  326. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  328. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  330. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +283 -6
  332. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
  334. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  338. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  340. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  342. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  344. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  346. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  348. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  350. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  351. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  352. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  354. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  356. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  357. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  358. package/contracts/accounting/AccountingService.sol +262 -0
  359. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  360. package/contracts/accounting/IAccountingService.sol +45 -0
  361. package/contracts/authorization/AccessAdmin.sol +704 -0
  362. package/contracts/authorization/AccessAdminLib.sol +183 -0
  363. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  364. package/contracts/authorization/Authorization.sol +365 -0
  365. package/contracts/authorization/IAccess.sol +49 -0
  366. package/contracts/authorization/IAccessAdmin.sol +170 -0
  367. package/contracts/authorization/IAuthorization.sol +80 -0
  368. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  369. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  370. package/contracts/distribution/BasicDistribution.sol +141 -0
  371. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  372. package/contracts/distribution/Distribution.sol +134 -175
  373. package/contracts/distribution/DistributionService.sol +233 -197
  374. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  375. package/contracts/distribution/IDistributionComponent.sol +22 -50
  376. package/contracts/distribution/IDistributionService.sol +45 -29
  377. package/contracts/examples/fire/DamageLevel.sol +59 -0
  378. package/contracts/examples/fire/FirePool.sol +86 -0
  379. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  380. package/contracts/examples/fire/FireProduct.sol +433 -0
  381. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  382. package/contracts/examples/fire/FireUSD.sol +26 -0
  383. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  384. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  385. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  386. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  387. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  388. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  389. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  390. package/contracts/instance/BundleSet.sol +130 -0
  391. package/contracts/instance/IInstance.sol +76 -48
  392. package/contracts/instance/IInstanceService.sol +48 -37
  393. package/contracts/instance/Instance.sol +195 -128
  394. package/contracts/instance/InstanceAdmin.sol +450 -0
  395. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  396. package/contracts/instance/InstanceReader.sol +358 -76
  397. package/contracts/instance/InstanceService.sol +327 -173
  398. package/contracts/instance/InstanceServiceManager.sol +14 -29
  399. package/contracts/instance/InstanceStore.sol +151 -64
  400. package/contracts/instance/RiskSet.sol +118 -0
  401. package/contracts/instance/base/BalanceStore.sol +123 -0
  402. package/contracts/instance/base/Cloneable.sol +2 -25
  403. package/contracts/instance/base/ObjectCounter.sol +20 -0
  404. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  405. package/contracts/instance/base/ObjectSet.sol +77 -0
  406. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  407. package/contracts/instance/module/IBundle.sol +1 -4
  408. package/contracts/instance/module/IComponents.sol +24 -15
  409. package/contracts/instance/module/IDistribution.sol +5 -3
  410. package/contracts/instance/module/IPolicy.sol +33 -26
  411. package/contracts/instance/module/IRisk.sol +3 -0
  412. package/contracts/mock/Dip.sol +26 -0
  413. package/contracts/oracle/BasicOracle.sol +45 -0
  414. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  415. package/contracts/oracle/IOracle.sol +36 -0
  416. package/contracts/oracle/IOracleComponent.sol +33 -0
  417. package/contracts/oracle/IOracleService.sol +66 -0
  418. package/contracts/oracle/Oracle.sol +154 -0
  419. package/contracts/oracle/OracleService.sol +310 -0
  420. package/contracts/oracle/OracleServiceManager.sol +39 -0
  421. package/contracts/pool/BasicPool.sol +173 -0
  422. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  423. package/contracts/pool/BundleService.sol +237 -224
  424. package/contracts/pool/BundleServiceManager.sol +13 -25
  425. package/contracts/pool/IBundleService.sol +35 -38
  426. package/contracts/pool/IPoolComponent.sol +23 -75
  427. package/contracts/pool/IPoolService.sol +107 -56
  428. package/contracts/pool/Pool.sol +209 -168
  429. package/contracts/pool/PoolLib.sol +216 -0
  430. package/contracts/pool/PoolService.sol +608 -256
  431. package/contracts/pool/PoolServiceManager.sol +12 -24
  432. package/contracts/product/ApplicationService.sol +173 -85
  433. package/contracts/product/ApplicationServiceManager.sol +12 -9
  434. package/contracts/product/BasicProduct.sol +49 -0
  435. package/contracts/product/BasicProductAuthorization.sol +56 -0
  436. package/contracts/product/ClaimService.sol +373 -183
  437. package/contracts/product/ClaimServiceManager.sol +12 -9
  438. package/contracts/product/IApplicationService.sol +10 -3
  439. package/contracts/product/IClaimService.sol +48 -6
  440. package/contracts/product/IPolicyService.sol +54 -39
  441. package/contracts/product/IPricingService.sol +14 -11
  442. package/contracts/product/IProductComponent.sol +31 -10
  443. package/contracts/product/IRiskService.sol +33 -0
  444. package/contracts/product/PolicyService.sol +522 -234
  445. package/contracts/product/PolicyServiceLib.sol +65 -0
  446. package/contracts/product/PolicyServiceManager.sol +12 -27
  447. package/contracts/product/PricingService.sol +117 -83
  448. package/contracts/product/PricingServiceManager.sol +12 -24
  449. package/contracts/product/Product.sol +236 -148
  450. package/contracts/product/RiskService.sol +154 -0
  451. package/contracts/product/RiskServiceManager.sol +39 -0
  452. package/contracts/registry/ChainNft.sol +72 -39
  453. package/contracts/registry/IRegistry.sol +90 -34
  454. package/contracts/registry/IRegistryService.sol +28 -35
  455. package/contracts/registry/IRelease.sol +26 -0
  456. package/contracts/registry/ITransferInterceptor.sol +1 -2
  457. package/contracts/registry/Registry.sol +444 -219
  458. package/contracts/registry/RegistryAdmin.sol +258 -0
  459. package/contracts/registry/RegistryAuthorization.sol +267 -0
  460. package/contracts/registry/RegistryService.sol +74 -137
  461. package/contracts/registry/RegistryServiceManager.sol +23 -30
  462. package/contracts/registry/ReleaseAdmin.sol +253 -0
  463. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  464. package/contracts/registry/ReleaseRegistry.sol +517 -0
  465. package/contracts/registry/ServiceAuthorizationV3.sol +331 -0
  466. package/contracts/registry/TokenRegistry.sol +261 -64
  467. package/contracts/shared/Component.sol +122 -183
  468. package/contracts/shared/ComponentService.sol +655 -97
  469. package/contracts/shared/ComponentServiceManager.sol +38 -0
  470. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  471. package/contracts/shared/ContractLib.sol +281 -0
  472. package/contracts/shared/IComponent.sol +17 -49
  473. package/contracts/shared/IComponentService.sol +112 -0
  474. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  475. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  476. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  477. package/contracts/shared/INftOwnable.sol +3 -1
  478. package/contracts/shared/IPolicyHolder.sol +12 -17
  479. package/contracts/shared/IRegisterable.sol +23 -1
  480. package/contracts/shared/IService.sol +11 -6
  481. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  482. package/contracts/shared/InstanceLinkedComponent.sol +195 -0
  483. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
  484. package/contracts/shared/Lifecycle.sol +88 -0
  485. package/contracts/shared/NftIdSet.sol +65 -0
  486. package/contracts/shared/NftOwnable.sol +33 -24
  487. package/contracts/shared/PolicyHolder.sol +18 -50
  488. package/contracts/shared/Registerable.sol +54 -23
  489. package/contracts/shared/RegistryLinked.sol +9 -14
  490. package/contracts/shared/Service.sol +33 -40
  491. package/contracts/shared/TokenHandler.sol +320 -13
  492. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  493. package/contracts/staking/IStaking.sol +166 -6
  494. package/contracts/staking/IStakingService.sol +107 -40
  495. package/contracts/staking/Staking.sol +509 -27
  496. package/contracts/staking/StakingLib.sol +281 -0
  497. package/contracts/staking/StakingLifecycle.sol +23 -0
  498. package/contracts/staking/StakingManager.sol +24 -16
  499. package/contracts/staking/StakingReader.sol +180 -0
  500. package/contracts/staking/StakingService.sol +308 -48
  501. package/contracts/staking/StakingServiceManager.sol +12 -8
  502. package/contracts/staking/StakingStore.sol +606 -0
  503. package/contracts/staking/TargetManagerLib.sol +211 -0
  504. package/contracts/type/AddressSet.sol +1 -1
  505. package/contracts/type/Amount.sol +44 -3
  506. package/contracts/type/Blocknumber.sol +26 -3
  507. package/contracts/type/ClaimId.sol +6 -1
  508. package/contracts/type/Fee.sol +17 -16
  509. package/contracts/type/Key32.sol +2 -2
  510. package/contracts/type/Key32Set.sol +62 -0
  511. package/contracts/type/NftId.sol +21 -16
  512. package/contracts/type/NftIdSet.sol +1 -1
  513. package/contracts/type/ObjectType.sol +191 -63
  514. package/contracts/type/PayoutId.sol +10 -10
  515. package/contracts/type/Referral.sol +2 -1
  516. package/contracts/type/RequestId.sol +75 -0
  517. package/contracts/type/RiskId.sol +39 -7
  518. package/contracts/type/RoleId.sol +118 -68
  519. package/contracts/type/Seconds.sol +48 -1
  520. package/contracts/type/Selector.sol +107 -0
  521. package/contracts/type/StateId.sol +41 -2
  522. package/contracts/type/String.sol +53 -0
  523. package/contracts/type/Timestamp.sol +16 -7
  524. package/contracts/type/UFixed.sol +40 -121
  525. package/contracts/type/Version.sol +58 -7
  526. package/contracts/{shared → upgradeability}/ProxyManager.sol +90 -27
  527. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  528. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  529. package/package.json +12 -8
  530. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  531. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  532. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  533. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  534. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  535. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  536. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  538. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  539. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  540. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  541. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  542. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  543. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  544. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  546. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  549. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  550. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  551. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
  552. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  553. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  554. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  555. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  556. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  557. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -620
  558. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  559. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  560. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  561. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  562. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  563. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  564. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  565. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  566. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  567. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  568. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  569. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  570. package/contracts/instance/BundleManager.sol +0 -126
  571. package/contracts/instance/InstanceAccessManager.sol +0 -543
  572. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  573. package/contracts/instance/base/Lifecycle.sol +0 -121
  574. package/contracts/instance/base/ObjectManager.sol +0 -82
  575. package/contracts/instance/module/IAccess.sol +0 -54
  576. package/contracts/instance/module/ISetup.sol +0 -33
  577. package/contracts/instance/module/ITreasury.sol +0 -23
  578. package/contracts/product/IProductService.sol +0 -40
  579. package/contracts/product/ProductService.sol +0 -210
  580. package/contracts/product/ProductServiceManager.sol +0 -54
  581. package/contracts/registry/RegistryAccessManager.sol +0 -207
  582. package/contracts/registry/ReleaseManager.sol +0 -360
  583. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  584. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,32 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {RELEASE} from "../type/ObjectType.sol";
5
+ import {SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
6
+ import {Lifecycle} from "../shared/Lifecycle.sol";
7
+
8
+ /// @dev Release lifeycle state machine.
9
+ /// Helper contract for ReleaseRegistry.
10
+ contract ReleaseLifecycle is
11
+ Lifecycle
12
+ {
13
+ constructor() {
14
+ _setupLifecycle();
15
+ }
16
+
17
+ function _setupLifecycle()
18
+ internal
19
+ override
20
+ {
21
+ setInitialState(RELEASE(), SCHEDULED());
22
+
23
+ setStateTransition(RELEASE(), SCHEDULED(), SKIPPED());
24
+ setStateTransition(RELEASE(), SCHEDULED(), DEPLOYING());
25
+ setStateTransition(RELEASE(), DEPLOYING(), SKIPPED());
26
+ setStateTransition(RELEASE(), DEPLOYING(), DEPLOYED());
27
+ setStateTransition(RELEASE(), DEPLOYED(), SKIPPED());
28
+ setStateTransition(RELEASE(), DEPLOYED(), ACTIVE());
29
+ setStateTransition(RELEASE(), ACTIVE(), PAUSED());
30
+ setStateTransition(RELEASE(), PAUSED(), ACTIVE());
31
+ }
32
+ }
@@ -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 {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
8
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
9
+ import {IRegistry} from "./IRegistry.sol";
10
+ import {IRelease} from "./IRelease.sol";
11
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
12
+ import {IService} from "../shared/IService.sol";
13
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
14
+
15
+ import {ContractLib} from "../shared/ContractLib.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
18
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
19
+ import {Registry} from "./Registry.sol";
20
+ import {ReleaseAdmin} from "./ReleaseAdmin.sol";
21
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
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.
34
+ contract ReleaseRegistry is
35
+ AccessManaged,
36
+ ReleaseLifecycle,
37
+ IRegistryLinked
38
+ {
39
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
40
+
41
+ event LogReleaseCreation(IAccessAdmin admin, VersionPart release, bytes32 salt);
42
+ event LogReleaseActivation(VersionPart release);
43
+ event LogReleaseDisabled(VersionPart release);
44
+ event LogReleaseEnabled(VersionPart release);
45
+
46
+ // constructor
47
+ error ErrorReleaseRegistryNotRegistry(Registry registry);
48
+
49
+ // _verifyServiceAuthorization
50
+ error ErrorReleaseRegistryNotServiceAuth(address notAuth);
51
+ error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
52
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
53
+
54
+ // registerService
55
+ error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
56
+
57
+ // activateNextRelease
58
+ error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
59
+
60
+ // _verifyService
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);
65
+
66
+ // _verifyServiceInfo
67
+ error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
68
+ error ErrorReleaseRegistryServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
69
+ error ErrorReleaseRegistryServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
70
+ error ErrorReleaseRegistryServiceInfoOwnerInvalid(IService service, address expected, address found);
71
+ error ErrorReleaseRegistryServiceSelfRegistration(IService service);
72
+ error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
73
+
74
+ RegistryAdmin public immutable _registryAdmin;
75
+ Registry public immutable _registry;
76
+
77
+ mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
78
+ VersionPart [] internal _release; // array of all created releases
79
+ ReleaseAdmin internal _masterReleaseAdmin;
80
+
81
+ VersionPart internal _latest; // latest active release
82
+ VersionPart internal _next; // release version to create and activate
83
+
84
+ // counters per release
85
+ uint256 internal _registeredServices = 0;
86
+ uint256 internal _servicesToRegister = 0;
87
+
88
+ // TODO move master relase admin outside constructor (same construction as for registry admin)
89
+ constructor(Registry registry)
90
+ AccessManaged(msg.sender)
91
+ {
92
+ if (!ContractLib.isRegistry(address(registry))) {
93
+ revert ErrorReleaseRegistryNotRegistry(registry);
94
+ }
95
+
96
+ setAuthority(registry.getAuthority());
97
+
98
+ _registry = registry;
99
+ _registryAdmin = RegistryAdmin(_registry.getRegistryAdminAddress());
100
+ _masterReleaseAdmin = new ReleaseAdmin(
101
+ _cloneNewAccessManager());
102
+
103
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
104
+ }
105
+
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.
109
+ function createNextRelease()
110
+ external
111
+ restricted() // GIF_ADMIN_ROLE
112
+ returns(VersionPart)
113
+ {
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());
126
+ _servicesToRegister = 0;
127
+ _registeredServices = 0;
128
+
129
+ return _next;
130
+ }
131
+
132
+ function prepareNextRelease(
133
+ IServiceAuthorization serviceAuthorization,
134
+ bytes32 salt
135
+ )
136
+ external
137
+ restricted() // GIF_MANAGER_ROLE
138
+ returns(
139
+ ReleaseAdmin releaseAdmin,
140
+ VersionPart releaseVersion,
141
+ bytes32 releaseSalt
142
+ )
143
+ {
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(releaseVersion);
154
+ releaseSalt = salt;
155
+
156
+ // ensures unique salt
157
+ // TODO CreateX have clones capability also
158
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
159
+ /*releaseSalt = keccak256(
160
+ bytes.concat(
161
+ bytes32(releaseVersion.toInt()),
162
+ salt));*/
163
+
164
+ _servicesToRegister = serviceDomainsCount;
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);
170
+
171
+ emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
172
+ }
173
+
174
+ function registerService(IService service)
175
+ external
176
+ restricted // GIF_MANAGER_ROLE
177
+ returns(NftId nftId)
178
+ {
179
+ VersionPart releaseVersion = _next;
180
+
181
+ // release can transition to DEPLOYED state
182
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
183
+
184
+ address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
185
+ IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
186
+ ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
187
+
188
+ // service can work with release registry and release version
189
+ (
190
+ IRegistry.ObjectInfo memory info,
191
+ ObjectType serviceDomain,
192
+ VersionPart serviceVersion
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
206
+
207
+ // release fully deployed
208
+ if(_servicesToRegister == _registeredServices) {
209
+ _releaseInfo[releaseVersion].state = DEPLOYED();
210
+ }
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
+ releaseAuth,
220
+ service,
221
+ serviceDomain,
222
+ releaseVersion);
223
+ releaseAdmin.setReleaseLocked(true);
224
+
225
+ // register service with registry
226
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
227
+ service.linkToRegisteredNftId();
228
+ }
229
+
230
+
231
+ // TODO return activated version
232
+ function activateNextRelease()
233
+ external
234
+ restricted // GIF_ADMIN_ROLE
235
+ {
236
+ VersionPart release = _next;
237
+
238
+ // release can transition to ACTIVE state
239
+ checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
240
+
241
+ _latest = release;
242
+ _releaseInfo[release].state = ACTIVE();
243
+ _releaseInfo[release].activatedAt = TimestampLib.blockTimestamp();
244
+ _releaseInfo[release].disabledAt = TimestampLib.max();
245
+
246
+ // grant special roles for registry/staking/pool services
247
+ // this will enable access to core contracts functions
248
+
249
+ // registry service MUST be registered for each release
250
+ address service = _registry.getServiceAddress(REGISTRY(), release);
251
+ if(service == address(0)) {
252
+ revert ErrorReleaseRegistryRegistryServiceMissing(release);
253
+ }
254
+
255
+ _registryAdmin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
256
+
257
+ service = _registry.getServiceAddress(STAKING(), release);
258
+ if(service != address(0)) {
259
+ _registryAdmin.grantServiceRoleForAllVersions(IService(service), STAKING());
260
+ }
261
+
262
+ service = _registry.getServiceAddress(POOL(), release);
263
+ if(service != address(0)) {
264
+ _registryAdmin.grantServiceRoleForAllVersions(IService(service), POOL());
265
+ }
266
+
267
+ _setReleaseLocked(release, false);
268
+
269
+ emit LogReleaseActivation(release);
270
+ }
271
+
272
+ /// @dev stop/resume operations with restricted functions
273
+ function setActive(VersionPart release, bool active)
274
+ public
275
+ restricted
276
+ {
277
+ StateId state = _releaseInfo[release].state;
278
+
279
+ if(active) {
280
+ checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
281
+ _releaseInfo[release].state = ACTIVE();
282
+ _releaseInfo[release].disabledAt = TimestampLib.max();
283
+ emit LogReleaseEnabled(release);
284
+ } else {
285
+ checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
286
+ _releaseInfo[release].state = PAUSED();
287
+ _releaseInfo[release].disabledAt = TimestampLib.blockTimestamp();
288
+ emit LogReleaseDisabled(release);
289
+ }
290
+
291
+ _setReleaseLocked(release, !active);
292
+ }
293
+
294
+ //--- view functions ----------------------------------------------------//
295
+
296
+ function predictDeterministicAddress(
297
+ address implementation,
298
+ bytes32 salt,
299
+ address deployer
300
+ ) external pure returns (address predicted) {
301
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
302
+ }
303
+
304
+ function isActiveRelease(VersionPart release) public view returns(bool) {
305
+ return _releaseInfo[release].state == ACTIVE();
306
+ }
307
+
308
+ function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
309
+ return _releaseInfo[release];
310
+ }
311
+
312
+ /// @dev Returns the number of created releases.
313
+ /// Releases might be in another state than ACTIVE.
314
+ function releases() external view returns (uint) {
315
+ return _release.length;
316
+ }
317
+
318
+ /// @dev Returns the n-th release version.
319
+ /// Valid values for idx [0 .. releases() - 1]
320
+ function getVersion(uint256 idx) external view returns (VersionPart release) {
321
+ // return _releases;
322
+ return _release[idx];
323
+ }
324
+
325
+ function getNextVersion() public view returns(VersionPart) {
326
+ return _next;
327
+ }
328
+
329
+ /// @dev Returns the latest activated relase version.
330
+ /// There is no guarantee that the release is not currently paused.
331
+ function getLatestVersion() external view returns(VersionPart) {
332
+ return _latest;
333
+ }
334
+
335
+ function getState(VersionPart release) external view returns (StateId stateId) {
336
+ return _releaseInfo[release].state;
337
+ }
338
+
339
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
340
+ return _servicesToRegister - _registeredServices;
341
+ }
342
+
343
+ function getServiceAuthorization(VersionPart release)
344
+ external
345
+ view
346
+ returns (IServiceAuthorization serviceAuthorization)
347
+ {
348
+ return _releaseInfo[release].auth;
349
+ }
350
+
351
+ function getRegistryAdmin() external view returns (address) {
352
+ return address(_registryAdmin);
353
+ }
354
+
355
+ //--- IRegistryLinked ------------------------------------------------------//
356
+
357
+ function getRegistry() external view returns (IRegistry) {
358
+ return _registry;
359
+ }
360
+
361
+ //--- private functions ----------------------------------------------------//
362
+
363
+ function _setReleaseLocked(VersionPart release, bool locked)
364
+ private
365
+ {
366
+ ReleaseAdmin(
367
+ _releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
368
+ }
369
+
370
+ function _cloneNewReleaseAdmin(VersionPart release)
371
+ private
372
+ returns (ReleaseAdmin clonedAdmin)
373
+ {
374
+ // clone and setup release specific release admin
375
+ clonedAdmin = ReleaseAdmin(
376
+ Clones.clone(address(_masterReleaseAdmin)));
377
+
378
+ string memory releaseAdminName = string(
379
+ abi.encodePacked(
380
+ "ReleaseAdmin_v",
381
+ release.toString()));
382
+
383
+ clonedAdmin.initialize(
384
+ address(_cloneNewAccessManager()),
385
+ releaseAdminName);
386
+
387
+ clonedAdmin.completeSetup(
388
+ address(_registry),
389
+ address(this), // release registry (this contract)
390
+ release);
391
+
392
+ // lock release (remains locked until activation)
393
+ clonedAdmin.setReleaseLocked(true);
394
+ }
395
+
396
+
397
+ function _cloneNewAccessManager()
398
+ private
399
+ returns (address accessManager)
400
+ {
401
+ return Clones.clone(address(_registryAdmin.authority()));
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
+