@etherisc/gif-next 0.0.2-da0f894-204 → 0.0.2-da2c7dd-538

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