@etherisc/gif-next 0.0.2-cff6256-424 → 0.0.2-cff7366-494

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 (708) hide show
  1. package/README.md +146 -22
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  6. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  10. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  12. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  14. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  18. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  19. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +125 -11
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1310 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1004 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1494 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +862 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +903 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +984 -0
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1415 -0
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1965 -0
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1163 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2267 -0
  56. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  57. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +585 -309
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +400 -171
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +399 -3011
  64. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1684 -0
  66. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  68. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1541 -538
  70. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +487 -296
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +370 -92
  74. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3668 -0
  76. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  77. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  78. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  80. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  81. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  82. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  84. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  86. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  88. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  90. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  92. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  93. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  96. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  97. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  105. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +382 -371
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1240 -0
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  119. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1360 -0
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  121. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  123. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +922 -0
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  125. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1285 -0
  128. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  130. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  131. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1619 -0
  132. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +794 -0
  134. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  135. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +806 -0
  136. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  138. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  139. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1134 -0
  140. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  141. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  142. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  143. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1439 -0
  144. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +858 -0
  146. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +268 -256
  148. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  150. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +944 -0
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  153. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  154. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  155. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +991 -0
  156. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +150 -187
  158. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  159. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1313 -0
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +810 -0
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  163. package/artifacts/contracts/product/PricingService.sol/PricingService.json +923 -0
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  165. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  166. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  167. package/artifacts/contracts/product/Product.sol/Product.json +1092 -0
  168. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  169. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  170. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  172. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  174. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +606 -173
  176. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +371 -205
  178. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  180. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/Registry.sol/Registry.json +938 -206
  182. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  183. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  184. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  185. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +347 -322
  186. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  187. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +340 -128
  188. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  190. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  191. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  192. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  193. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  194. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  195. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  196. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  197. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  198. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1908 -0
  200. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +850 -0
  202. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +182 -189
  204. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  205. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  206. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  207. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  208. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  209. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  210. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +346 -172
  212. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  213. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1467 -0
  214. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  215. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  216. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  218. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  219. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  220. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  221. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  222. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  223. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  224. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +40 -31
  226. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  227. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  228. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IService.sol/IService.json +119 -165
  230. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  231. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  232. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  233. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  234. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  235. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  236. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  239. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  243. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +96 -48
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  247. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  248. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  249. package/artifacts/contracts/shared/Service.sol/Service.json +150 -176
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +734 -8
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  255. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  256. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  257. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  259. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  262. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  263. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  269. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1265 -0
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  273. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +734 -0
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  275. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  277. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  278. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  279. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  280. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  282. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  284. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  286. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  288. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  290. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  292. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  293. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  294. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  296. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  297. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  298. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  300. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  302. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  304. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  306. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +180 -0
  308. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  310. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  312. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  314. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  316. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  318. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  320. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  322. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  324. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  326. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  328. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  330. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  331. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  335. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  336. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  337. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  338. package/contracts/authorization/AccessAdmin.sol +616 -0
  339. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  340. package/contracts/authorization/Authorization.sol +289 -0
  341. package/contracts/authorization/IAccess.sol +49 -0
  342. package/contracts/authorization/IAccessAdmin.sol +137 -0
  343. package/contracts/authorization/IAuthorization.sol +60 -0
  344. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  345. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  346. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  347. package/contracts/distribution/BasicDistribution.sol +139 -0
  348. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  349. package/contracts/distribution/Distribution.sol +284 -0
  350. package/contracts/distribution/DistributionService.sol +354 -0
  351. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  352. package/contracts/distribution/IDistributionComponent.sol +52 -0
  353. package/contracts/distribution/IDistributionService.sol +100 -0
  354. package/contracts/examples/fire/DamageLevel.sol +59 -0
  355. package/contracts/examples/fire/FirePool.sol +86 -0
  356. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  357. package/contracts/examples/fire/FireProduct.sol +431 -0
  358. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  359. package/contracts/examples/fire/FireUSD.sol +26 -0
  360. package/contracts/examples/unpermissioned/SimpleDistribution.sol +65 -0
  361. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  362. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  363. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  364. package/contracts/instance/BundleSet.sol +130 -0
  365. package/contracts/instance/IInstance.sol +57 -19
  366. package/contracts/instance/IInstanceService.sol +57 -17
  367. package/contracts/instance/Instance.sol +169 -373
  368. package/contracts/instance/InstanceAdmin.sol +285 -0
  369. package/contracts/instance/InstanceAuthorizationV3.sol +218 -0
  370. package/contracts/instance/InstanceReader.sol +362 -73
  371. package/contracts/instance/InstanceService.sol +336 -103
  372. package/contracts/instance/InstanceServiceManager.sol +14 -31
  373. package/contracts/instance/InstanceStore.sol +287 -0
  374. package/contracts/instance/RiskSet.sol +119 -0
  375. package/contracts/instance/base/BalanceStore.sol +123 -0
  376. package/contracts/instance/base/Cloneable.sol +28 -0
  377. package/contracts/instance/base/ObjectCounter.sol +21 -0
  378. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  379. package/contracts/instance/base/ObjectSet.sol +78 -0
  380. package/contracts/instance/module/IAccess.sol +29 -21
  381. package/contracts/instance/module/IBundle.sol +8 -7
  382. package/contracts/instance/module/IComponents.sol +50 -0
  383. package/contracts/instance/module/IDistribution.sol +6 -4
  384. package/contracts/instance/module/IPolicy.sol +59 -19
  385. package/contracts/instance/module/IRisk.sol +2 -1
  386. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  387. package/contracts/oracle/BasicOracle.sol +47 -0
  388. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  389. package/contracts/oracle/IOracle.sol +36 -0
  390. package/contracts/oracle/IOracleComponent.sol +33 -0
  391. package/contracts/oracle/IOracleService.sol +66 -0
  392. package/contracts/oracle/Oracle.sol +156 -0
  393. package/contracts/oracle/OracleService.sol +309 -0
  394. package/contracts/oracle/OracleServiceManager.sol +39 -0
  395. package/contracts/pool/BasicPool.sol +175 -0
  396. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  397. package/contracts/pool/BundleService.sol +423 -0
  398. package/contracts/pool/BundleServiceManager.sol +39 -0
  399. package/contracts/pool/IBundleService.sol +122 -0
  400. package/contracts/pool/IPoolComponent.sol +62 -0
  401. package/contracts/pool/IPoolService.sol +153 -0
  402. package/contracts/pool/Pool.sol +345 -0
  403. package/contracts/pool/PoolService.sol +612 -0
  404. package/contracts/pool/PoolServiceManager.sol +39 -0
  405. package/contracts/product/ApplicationService.sol +259 -0
  406. package/contracts/product/ApplicationServiceManager.sol +38 -0
  407. package/contracts/product/BasicProduct.sol +49 -0
  408. package/contracts/product/BasicProductAuthorization.sol +42 -0
  409. package/contracts/product/ClaimService.sol +614 -0
  410. package/contracts/product/ClaimServiceManager.sol +38 -0
  411. package/contracts/product/IApplicationService.sol +66 -0
  412. package/contracts/product/IClaimService.sol +123 -0
  413. package/contracts/product/IPolicyService.sol +90 -0
  414. package/contracts/product/IPricingService.sol +39 -0
  415. package/contracts/product/IProductComponent.sol +59 -0
  416. package/contracts/product/IRiskService.sol +33 -0
  417. package/contracts/product/PolicyService.sol +733 -0
  418. package/contracts/product/PolicyServiceManager.sol +39 -0
  419. package/contracts/product/PricingService.sol +300 -0
  420. package/contracts/product/PricingServiceManager.sol +39 -0
  421. package/contracts/product/Product.sol +427 -0
  422. package/contracts/product/RiskService.sol +107 -0
  423. package/contracts/product/RiskServiceManager.sol +39 -0
  424. package/contracts/registry/ChainNft.sol +78 -33
  425. package/contracts/registry/IRegistry.sol +127 -48
  426. package/contracts/registry/IRegistryService.sol +45 -16
  427. package/contracts/registry/ITransferInterceptor.sol +1 -1
  428. package/contracts/registry/Registry.sol +540 -304
  429. package/contracts/registry/RegistryAdmin.sol +451 -0
  430. package/contracts/registry/RegistryService.sol +126 -284
  431. package/contracts/registry/RegistryServiceManager.sol +26 -53
  432. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  433. package/contracts/registry/ReleaseRegistry.sol +485 -0
  434. package/contracts/registry/ServiceAuthorizationV3.sol +176 -0
  435. package/contracts/registry/TokenRegistry.sol +261 -57
  436. package/contracts/shared/Component.sol +222 -0
  437. package/contracts/shared/ComponentService.sol +866 -0
  438. package/contracts/shared/ComponentServiceManager.sol +38 -0
  439. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  440. package/contracts/shared/ContractLib.sol +224 -0
  441. package/contracts/shared/IComponent.sol +67 -0
  442. package/contracts/shared/IComponentService.sol +134 -0
  443. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  444. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  445. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  446. package/contracts/shared/INftOwnable.sol +15 -12
  447. package/contracts/shared/IPolicyHolder.sol +35 -0
  448. package/contracts/shared/IRegisterable.sol +15 -6
  449. package/contracts/shared/IRegistryLinked.sol +11 -0
  450. package/contracts/shared/IService.sol +16 -6
  451. package/contracts/shared/InitializableERC165.sol +27 -0
  452. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  453. package/contracts/shared/KeyValueStore.sol +131 -0
  454. package/contracts/shared/Lifecycle.sol +88 -0
  455. package/contracts/shared/NftIdSet.sol +65 -0
  456. package/contracts/shared/NftOwnable.sol +75 -84
  457. package/contracts/shared/PolicyHolder.sol +62 -0
  458. package/contracts/shared/Registerable.sol +34 -41
  459. package/contracts/shared/RegistryLinked.sol +38 -0
  460. package/contracts/shared/Service.sol +61 -31
  461. package/contracts/shared/TokenHandler.sol +374 -12
  462. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  463. package/contracts/staking/IStaking.sol +173 -0
  464. package/contracts/staking/IStakingService.sol +157 -0
  465. package/contracts/staking/StakeManagerLib.sol +224 -0
  466. package/contracts/staking/Staking.sol +505 -0
  467. package/contracts/staking/StakingLifecycle.sol +23 -0
  468. package/contracts/staking/StakingManager.sol +52 -0
  469. package/contracts/staking/StakingReader.sol +190 -0
  470. package/contracts/staking/StakingService.sol +440 -0
  471. package/contracts/staking/StakingServiceManager.sol +44 -0
  472. package/contracts/staking/StakingStore.sol +605 -0
  473. package/contracts/staking/TargetManagerLib.sol +211 -0
  474. package/contracts/{types → type}/AddressSet.sol +1 -1
  475. package/contracts/type/Amount.sol +150 -0
  476. package/contracts/{types → type}/Blocknumber.sol +27 -3
  477. package/contracts/type/ClaimId.sol +80 -0
  478. package/contracts/{types → type}/DistributorType.sol +2 -2
  479. package/contracts/{types → type}/Fee.sol +33 -23
  480. package/contracts/{types → type}/Key32.sol +2 -2
  481. package/contracts/type/Key32Set.sol +62 -0
  482. package/contracts/{types → type}/NftId.sol +28 -15
  483. package/contracts/type/NftIdSet.sol +62 -0
  484. package/contracts/type/ObjectType.sol +278 -0
  485. package/contracts/type/PayoutId.sol +82 -0
  486. package/contracts/{types → type}/Referral.sol +6 -1
  487. package/contracts/type/RequestId.sol +75 -0
  488. package/contracts/{types → type}/RiskId.sol +31 -5
  489. package/contracts/type/RoleId.sol +162 -0
  490. package/contracts/type/Seconds.sol +101 -0
  491. package/contracts/type/Selector.sol +102 -0
  492. package/contracts/{types → type}/StateId.sol +48 -4
  493. package/contracts/type/String.sol +53 -0
  494. package/contracts/{types → type}/Timestamp.sol +34 -15
  495. package/contracts/{types → type}/UFixed.sol +39 -9
  496. package/contracts/{types → type}/Version.sol +5 -2
  497. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  498. package/contracts/upgradeability/ProxyManager.sol +232 -0
  499. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  500. package/contracts/upgradeability/Versionable.sol +59 -0
  501. package/package.json +11 -7
  502. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  503. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  504. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  505. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
  506. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  507. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  508. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  509. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
  510. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  511. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  512. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  513. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  514. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  515. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -790
  516. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  517. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  518. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  520. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  522. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  524. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  526. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  528. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  530. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  532. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  534. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  536. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  538. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  540. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  541. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  542. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  543. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  544. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  545. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  546. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  547. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  548. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  549. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  551. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  553. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  555. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  557. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  558. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  559. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  560. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  561. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  562. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  563. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  564. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  565. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  566. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  567. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  568. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  569. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  570. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  571. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  572. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  573. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  576. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -641
  578. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  580. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  584. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  585. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  586. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  587. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  588. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  589. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  590. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  591. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  592. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  593. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  594. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  595. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  596. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  597. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  598. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  599. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  600. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  601. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  602. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  603. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  604. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  605. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  606. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  607. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  608. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  609. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  610. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  611. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  612. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  613. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  614. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  615. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  616. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  618. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  620. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  622. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  624. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  626. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  628. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  629. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  630. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  632. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  634. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  636. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  638. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  640. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  642. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  644. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  646. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  648. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  649. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  650. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  652. package/contracts/components/BaseComponent.sol +0 -91
  653. package/contracts/components/Distribution.sol +0 -166
  654. package/contracts/components/IBaseComponent.sol +0 -25
  655. package/contracts/components/IDistributionComponent.sol +0 -46
  656. package/contracts/components/IPoolComponent.sol +0 -62
  657. package/contracts/components/IProductComponent.sol +0 -35
  658. package/contracts/components/Pool.sol +0 -258
  659. package/contracts/components/Product.sol +0 -297
  660. package/contracts/experiment/cloning/Cloner.sol +0 -47
  661. package/contracts/experiment/errors/Require.sol +0 -38
  662. package/contracts/experiment/errors/Revert.sol +0 -44
  663. package/contracts/experiment/inheritance/A.sol +0 -53
  664. package/contracts/experiment/inheritance/B.sol +0 -28
  665. package/contracts/experiment/inheritance/C.sol +0 -34
  666. package/contracts/experiment/inheritance/IA.sol +0 -13
  667. package/contracts/experiment/inheritance/IB.sol +0 -10
  668. package/contracts/experiment/inheritance/IC.sol +0 -12
  669. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  670. package/contracts/experiment/statemachine/ISM.sol +0 -25
  671. package/contracts/experiment/statemachine/SM.sol +0 -57
  672. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  673. package/contracts/experiment/types/TypeA.sol +0 -47
  674. package/contracts/experiment/types/TypeB.sol +0 -29
  675. package/contracts/instance/AccessManagedSimple.sol +0 -115
  676. package/contracts/instance/AccessManagerSimple.sol +0 -692
  677. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  678. package/contracts/instance/InstanceAccessManager.sol +0 -288
  679. package/contracts/instance/base/ComponentServiceBase.sol +0 -39
  680. package/contracts/instance/base/IInstanceBase.sol +0 -23
  681. package/contracts/instance/base/KeyValueStore.sol +0 -172
  682. package/contracts/instance/base/Lifecycle.sol +0 -100
  683. package/contracts/instance/module/ISetup.sol +0 -43
  684. package/contracts/instance/module/ITreasury.sol +0 -23
  685. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  686. package/contracts/instance/service/DistributionService.sol +0 -96
  687. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  688. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  689. package/contracts/instance/service/IDistributionService.sol +0 -12
  690. package/contracts/instance/service/IPoolService.sol +0 -37
  691. package/contracts/instance/service/IProductService.sol +0 -107
  692. package/contracts/shared/ContractDeployerLib.sol +0 -72
  693. package/contracts/shared/ERC165.sol +0 -25
  694. package/contracts/shared/ProxyManager.sol +0 -94
  695. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  696. package/contracts/shared/Versionable.sol +0 -147
  697. package/contracts/test/TestFee.sol +0 -25
  698. package/contracts/test/TestRegisterable.sol +0 -18
  699. package/contracts/test/TestRoleId.sol +0 -14
  700. package/contracts/test/TestService.sol +0 -24
  701. package/contracts/test/TestToken.sol +0 -26
  702. package/contracts/test/TestVersion.sol +0 -44
  703. package/contracts/test/TestVersionable.sol +0 -17
  704. package/contracts/types/ChainId.sol +0 -38
  705. package/contracts/types/NftIdSet.sol +0 -60
  706. package/contracts/types/NumberId.sol +0 -52
  707. package/contracts/types/ObjectType.sol +0 -152
  708. package/contracts/types/RoleId.sol +0 -88
@@ -0,0 +1,485 @@
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
+ import {IRegisterable} from "../shared/IRegisterable.sol";
17
+
18
+ import {IRegistry} from "./IRegistry.sol";
19
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
20
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
21
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
22
+ import {Registry} from "./Registry.sol";
23
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
24
+
25
+
26
+ contract ReleaseRegistry is
27
+ AccessManaged,
28
+ ReleaseLifecycle,
29
+ IRegistryLinked
30
+ {
31
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
32
+
33
+ event LogReleaseCreation(VersionPart version, bytes32 salt);
34
+ event LogReleaseActivation(VersionPart version);
35
+ event LogReleaseDisabled(VersionPart version);
36
+ event LogReleaseEnabled(VersionPart version);
37
+
38
+ // constructor
39
+ error ErrorReleaseRegistryNotRegistry(Registry registry);
40
+
41
+ // _verifyServiceAuthorization
42
+ error ErrorReleaseRegistryNotServiceAuth(address notAuth);
43
+ error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
44
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
45
+
46
+ // registerService
47
+ error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
48
+
49
+ // activateNextRelease
50
+ error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
51
+
52
+ // _verifyService
53
+ error ErrorReleaseRegistryNotService(address notService);
54
+ error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
55
+ error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
56
+ error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
57
+
58
+ // _verifyServiceInfo
59
+ error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
60
+ error ErrorReleaseRegistryServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
61
+ error ErrorReleaseRegistryServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
62
+ error ErrorReleaseRegistryServiceInfoOwnerInvalid(IService service, address expected, address found);
63
+ error ErrorReleaseRegistryServiceSelfRegistration(IService service);
64
+ error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
65
+
66
+ RegistryAdmin public immutable _admin;
67
+ Registry public immutable _registry;
68
+
69
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
70
+ VersionPart [] internal _release; // array of all created releases
71
+ VersionPart internal _latest; // latest active version
72
+ VersionPart internal _next; // version to create and activate
73
+
74
+ uint256 internal _registeredServices;
75
+ uint256 internal _servicesToRegister;
76
+
77
+ constructor(Registry registry)
78
+ AccessManaged(msg.sender)
79
+ {
80
+ if (!ContractLib.isRegistry(address(registry))) {
81
+ revert ErrorReleaseRegistryNotRegistry(registry);
82
+ }
83
+
84
+ setAuthority(registry.getAuthority());
85
+
86
+ _registry = registry;
87
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
88
+
89
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
90
+ }
91
+
92
+ /// @dev sets previous release into SKIPPED state if it was created but not activated
93
+ /// sets next release into state SCHEDULED
94
+ function createNextRelease()
95
+ external
96
+ restricted() // GIF_ADMIN_ROLE
97
+ returns(VersionPart)
98
+ {
99
+ VersionPart version = _next;
100
+
101
+ if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
102
+ _releaseInfo[version].state = SKIPPED();
103
+ }
104
+
105
+ version = VersionPartLib.toVersionPart(version.toInt() + 1);
106
+ _release.push(version);
107
+
108
+ _next = version;
109
+ _releaseInfo[version].version = version;
110
+ _releaseInfo[version].state = getInitialState(RELEASE());
111
+ _servicesToRegister = 0;
112
+ _registeredServices = 0;
113
+
114
+ return _next;
115
+ }
116
+
117
+ function prepareNextRelease(
118
+ IServiceAuthorization serviceAuthorization,
119
+ bytes32 salt
120
+ )
121
+ external
122
+ restricted() // GIF_MANAGER_ROLE
123
+ returns(
124
+ address releaseAuthority,
125
+ VersionPart releaseVersion,
126
+ bytes32 releaseSalt
127
+ )
128
+ {
129
+ releaseVersion = _next;
130
+
131
+ // release can transition into DEPLOYING state
132
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
133
+
134
+ uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
135
+
136
+ releaseAuthority = _admin.authority();
137
+ releaseSalt = salt;
138
+ // ensures unique salt
139
+ // TODO CreateX have clones capability also
140
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
141
+ /*releaseSalt = keccak256(
142
+ bytes.concat(
143
+ bytes32(releaseVersion.toInt()),
144
+ salt));*/
145
+
146
+ _servicesToRegister = serviceDomainsCount;
147
+ _releaseInfo[releaseVersion].state = DEPLOYING();
148
+ _releaseInfo[releaseVersion].salt = releaseSalt;
149
+ // TODO allow for the same serviceAuthorization address to be used for multiple releases?
150
+ _releaseInfo[releaseVersion].auth = serviceAuthorization;
151
+ //_releaseInfo[releaseVersion].authority = releaseAuthority;
152
+
153
+ emit LogReleaseCreation(releaseVersion, releaseSalt);
154
+ }
155
+
156
+ function registerService(IService service)
157
+ external
158
+ restricted // GIF_MANAGER_ROLE
159
+ returns(NftId nftId)
160
+ {
161
+ VersionPart releaseVersion = _next;
162
+
163
+ // release can transition to DEPLOYED state
164
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
165
+
166
+ address releaseAuthority = _admin.authority();
167
+ IServiceAuthorization serviceAuth = _releaseInfo[releaseVersion].auth;
168
+ ObjectType expectedDomain = serviceAuth.getServiceDomain(_registeredServices);
169
+
170
+ // service can work with release registry and release version
171
+ (
172
+ IRegistry.ObjectInfo memory info,
173
+ ObjectType serviceDomain,
174
+ VersionPart serviceVersion
175
+ //,string memory serviceName
176
+ ) = _verifyService(
177
+ service,
178
+ releaseAuthority,
179
+ releaseVersion,
180
+ expectedDomain
181
+ );
182
+
183
+ //_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
184
+ //_releaseInfo[releaseVersion].domains.push(serviceDomain);
185
+ //_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
186
+
187
+ _registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
188
+
189
+ // release fully deployed
190
+ if(_servicesToRegister == _registeredServices) {
191
+ _releaseInfo[releaseVersion].state = DEPLOYED();
192
+ }
193
+
194
+ // TODO: service address matches defined in release auth (precalculated one)
195
+ // revert ErrorReleaseRegistryServiceAddressMismatch()
196
+
197
+ // setup service authorization
198
+ _admin.authorizeService(
199
+ serviceAuth,
200
+ service,
201
+ serviceDomain,
202
+ releaseVersion);
203
+
204
+ // register service with registry
205
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
206
+ service.linkToRegisteredNftId();
207
+ }
208
+ // TODO return activated version
209
+ function activateNextRelease()
210
+ external
211
+ restricted // GIF_ADMIN_ROLE
212
+ {
213
+ VersionPart version = _next;
214
+
215
+ // release can transition to ACTIVE state
216
+ checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
217
+
218
+ _latest = version;
219
+ _releaseInfo[version].state = ACTIVE();
220
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
221
+
222
+ // grant special roles for registry/staking/pool services
223
+ // this will enable access to core contracts functions
224
+
225
+ // registry service MUST be registered for each release
226
+ address service = _registry.getServiceAddress(REGISTRY(), version);
227
+ if(service == address(0)) {
228
+ revert ErrorReleaseRegistryRegistryServiceMissing(version);
229
+ }
230
+
231
+ _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
232
+
233
+ service = _registry.getServiceAddress(STAKING(), version);
234
+ if(service != address(0)) {
235
+ _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
236
+ }
237
+
238
+ service = _registry.getServiceAddress(POOL(), version);
239
+ if(service != address(0)) {
240
+ _admin.grantServiceRoleForAllVersions(IService(service), POOL());
241
+ }
242
+
243
+ // TODO may run out of gas
244
+ // TODO test how many service can be locked in one transaction
245
+ // -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
246
+ _setReleaseLocked(version, false);
247
+
248
+ emit LogReleaseActivation(version);
249
+ }
250
+
251
+ /// @dev stop all operations with release services
252
+ function pauseRelease(VersionPart version)
253
+ external
254
+ restricted // GIF_ADMIN_ROLE
255
+ {
256
+ // release can transition to PAUSED state
257
+ checkTransition(_releaseInfo[version].state, RELEASE(), ACTIVE(), PAUSED());
258
+
259
+ _releaseInfo[version].state = PAUSED();
260
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
261
+
262
+ _setReleaseLocked(version, true);
263
+
264
+ emit LogReleaseDisabled(version);
265
+ }
266
+
267
+ /// @dev resume operations with release services
268
+ function unpauseRelease(VersionPart version)
269
+ external
270
+ restricted // GIF_ADMIN_ROLE
271
+ {
272
+ // release can transition to ACTIVE state
273
+ checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
274
+
275
+ _releaseInfo[version].state = ACTIVE();
276
+ _releaseInfo[version].disabledAt = zeroTimestamp();
277
+
278
+ _setReleaseLocked(version, false);
279
+
280
+ emit LogReleaseEnabled(version);
281
+ }
282
+
283
+ //--- view functions ----------------------------------------------------//
284
+
285
+ function predictDeterministicAddress(
286
+ address implementation,
287
+ bytes32 salt,
288
+ address deployer
289
+ ) external pure returns (address predicted) {
290
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
291
+ }
292
+
293
+ function isActiveRelease(VersionPart version) public view returns(bool) {
294
+ return _releaseInfo[version].state == ACTIVE();
295
+ }
296
+
297
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
298
+ return _releaseInfo[version];
299
+ }
300
+
301
+ /// @dev Returns the number of created releases.
302
+ /// Releases might be in another state than ACTIVE.
303
+ function releases() external view returns (uint) {
304
+ return _release.length;
305
+ }
306
+
307
+ /// @dev Returns the n-th release version.
308
+ /// Valid values for idx [0 .. releases() - 1]
309
+ function getVersion(uint256 idx) external view returns (VersionPart version) {
310
+ // return _releases;
311
+ return _release[idx];
312
+ }
313
+
314
+ function getNextVersion() public view returns(VersionPart) {
315
+ return _next;
316
+ }
317
+
318
+ /// @dev Returns the latest activated relase version.
319
+ /// There is no guarantee that the release is not currently paused.
320
+ function getLatestVersion() external view returns(VersionPart) {
321
+ return _latest;
322
+ }
323
+
324
+ function getState(VersionPart version) external view returns (StateId stateId) {
325
+ return _releaseInfo[version].state;
326
+ }
327
+
328
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
329
+ return _servicesToRegister - _registeredServices;
330
+ }
331
+
332
+ function getServiceAuthorization(VersionPart version)
333
+ external
334
+ view
335
+ returns (IServiceAuthorization serviceAuthorization)
336
+ {
337
+ return _releaseInfo[version].auth;
338
+ }
339
+
340
+ function getRegistryAdmin() external view returns (address) {
341
+ return address(_admin);
342
+ }
343
+
344
+ //--- IRegistryLinked ------------------------------------------------------//
345
+
346
+ function getRegistry() external view returns (IRegistry) {
347
+ return _registry;
348
+ }
349
+
350
+ //--- private functions ----------------------------------------------------//
351
+
352
+ // close / open service targets instead of revoking / granting roles
353
+ function _setReleaseLocked(VersionPart version, bool locked)
354
+ private
355
+ {
356
+ address service;
357
+ ObjectType domain;
358
+ IServiceAuthorization auth = _releaseInfo[version].auth;
359
+
360
+ ObjectType[] memory domains = auth.getServiceDomains();
361
+ for(uint idx = 0; idx < domains.length; idx++)
362
+ {
363
+ domain = domains[idx];
364
+ service = _registry.getServiceAddress(domain, version);
365
+ assert(service != address(0));
366
+
367
+ _admin.setServiceLocked(IService(service), locked);
368
+ }
369
+
370
+ // TODO add check for active/disabled release to core contracts functions interacting with releases
371
+ }
372
+
373
+ function _verifyServiceAuthorization(
374
+ IServiceAuthorization serviceAuthorization,
375
+ VersionPart releaseVersion,
376
+ bytes32 salt
377
+ )
378
+ private
379
+ view
380
+ returns (uint256 serviceDomainsCount)
381
+ {
382
+ // authorization contract supports IServiceAuthorization interface
383
+ if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
384
+ revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
385
+ }
386
+
387
+ // authorizaions contract version matches with release version
388
+ VersionPart authVersion = serviceAuthorization.getRelease();
389
+ if (releaseVersion != authVersion) {
390
+ revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
391
+ }
392
+
393
+ // sanity check to ensure service domain list is not empty
394
+ serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
395
+ if (serviceDomainsCount == 0) {
396
+ revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
397
+ }
398
+ }
399
+
400
+ // TODO get service names
401
+ function _verifyService(
402
+ IService service,
403
+ address expectedAuthority,
404
+ VersionPart expectedVersion,
405
+ ObjectType expectedDomain
406
+ )
407
+ internal
408
+ view
409
+ returns(
410
+ IRegistry.ObjectInfo memory serviceInfo,
411
+ ObjectType serviceDomain,
412
+ VersionPart serviceVersion
413
+ )
414
+ {
415
+ if(!service.supportsInterface(type(IService).interfaceId)) {
416
+ revert ErrorReleaseRegistryNotService(address(service));
417
+ }
418
+
419
+ address owner = msg.sender;
420
+ address serviceAuthority = service.authority();
421
+ serviceVersion = service.getVersion().toMajorPart();
422
+ serviceDomain = service.getDomain();// checked in registry
423
+ serviceInfo = service.getInitialInfo();
424
+
425
+ _verifyServiceInfo(service, serviceInfo, owner);
426
+
427
+ if(serviceAuthority != expectedAuthority) {
428
+ revert ErrorReleaseRegistryServiceAuthorityMismatch(
429
+ service,
430
+ serviceAuthority,
431
+ expectedAuthority);
432
+ }
433
+
434
+ if(serviceVersion != expectedVersion) {
435
+ revert ErrorReleaseRegistryServiceVersionMismatch(
436
+ service,
437
+ serviceVersion,
438
+ expectedVersion);
439
+ }
440
+
441
+ if(serviceDomain != expectedDomain) {
442
+ revert ErrorReleaseRegistryServiceDomainMismatch(
443
+ service,
444
+ expectedDomain,
445
+ serviceDomain);
446
+ }
447
+ }
448
+
449
+
450
+ function _verifyServiceInfo(
451
+ IService service,
452
+ IRegistry.ObjectInfo memory info,
453
+ address expectedOwner // assume always valid, can not be 0
454
+ )
455
+ internal
456
+ view
457
+ {
458
+ if(info.objectAddress != address(service)) {
459
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
460
+ }
461
+
462
+ if(info.isInterceptor != false) { // service is never interceptor
463
+ revert ErrorReleaseRegistryServiceInfoInterceptorInvalid(service, info.isInterceptor);
464
+ }
465
+
466
+ if(info.objectType != SERVICE()) {
467
+ revert ErrorReleaseRegistryServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
468
+ }
469
+
470
+ address owner = info.initialOwner;
471
+
472
+ if(owner != expectedOwner) { // registerable owner protection
473
+ revert ErrorReleaseRegistryServiceInfoOwnerInvalid(service, expectedOwner, owner);
474
+ }
475
+
476
+ if(owner == address(service)) {
477
+ revert ErrorReleaseRegistryServiceSelfRegistration(service);
478
+ }
479
+
480
+ if(_registry.isRegistered(owner)) {
481
+ revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
482
+ }
483
+ }
484
+ }
485
+
@@ -0,0 +1,176 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {
5
+ ALL, REGISTRY, RISK, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
6
+ } from "../../contracts/type/ObjectType.sol";
7
+
8
+ import {IAccess} from "../authorization/IAccess.sol";
9
+ import {IBundleService} from "../pool/IBundleService.sol";
10
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
11
+ import {IInstanceService} from "../instance/IInstanceService.sol";
12
+ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
13
+ import {IPoolService} from "../pool/IPoolService.sol";
14
+ import {IStakingService} from "../staking/IStakingService.sol";
15
+ import {IRegistryService} from "./IRegistryService.sol";
16
+ import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
17
+
18
+
19
+ contract ServiceAuthorizationV3
20
+ is ServiceAuthorization
21
+ {
22
+
23
+ constructor(string memory commitHash)
24
+ ServiceAuthorization(commitHash, 3)
25
+ {}
26
+
27
+ function _setupDomains()
28
+ internal
29
+ override
30
+ {
31
+ _authorizeDomain(REGISTRY(), address(1));
32
+ _authorizeDomain(STAKING(), address(2));
33
+ _authorizeDomain(INSTANCE(), address(3));
34
+ _authorizeDomain(COMPONENT(), address(4));
35
+ _authorizeDomain(DISTRIBUTION(), address(5));
36
+ _authorizeDomain(PRICE(), address(6));
37
+ _authorizeDomain(BUNDLE(), address(7));
38
+ _authorizeDomain(POOL(), address(8));
39
+ _authorizeDomain(ORACLE(), address(9));
40
+ _authorizeDomain(RISK(), address(10));
41
+ _authorizeDomain(POLICY(), address(11));
42
+ _authorizeDomain(CLAIM(), address(12));
43
+ _authorizeDomain(APPLICATION(), address(13));
44
+ }
45
+
46
+
47
+ function _setupDomainAuthorizations()
48
+ internal
49
+ override
50
+ {
51
+ _setupIRegistryServiceAuthorization();
52
+ _setupStakingServiceAuthorization();
53
+ _setupInstanceServiceAuthorization();
54
+ _setupComponentServiceAuthorization();
55
+ _setupDistributionServiceAuthorization();
56
+ _setupPoolServiceAuthorization();
57
+ _setupBundleServiceAuthorization();
58
+ }
59
+
60
+
61
+ /// @dev registry service authorization.
62
+ /// authorized functions MUST be implemented with a restricted modifier
63
+ function _setupIRegistryServiceAuthorization()
64
+ internal
65
+ {
66
+ IAccess.FunctionInfo[] storage functions;
67
+
68
+ functions = _authorizeForService(REGISTRY(), APPLICATION());
69
+ _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
70
+
71
+ functions = _authorizeForService(REGISTRY(), BUNDLE());
72
+ _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
73
+
74
+ functions = _authorizeForService(REGISTRY(), COMPONENT());
75
+ _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
76
+ _authorize(functions, IRegistryService.registerProductLinkedComponent.selector, "registerProductLinkedComponent");
77
+
78
+ functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
79
+ _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
80
+
81
+ functions = _authorizeForService(REGISTRY(), INSTANCE());
82
+ _authorize(functions, IRegistryService.registerInstance.selector, "registerInstance");
83
+
84
+ functions = _authorizeForService(REGISTRY(), STAKING());
85
+ _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
86
+ }
87
+
88
+
89
+ /// @dev staking service authorization.
90
+ /// authorized functions MUST be implemented with a restricted modifier
91
+ function _setupStakingServiceAuthorization()
92
+ internal
93
+ {
94
+ IAccess.FunctionInfo[] storage functions;
95
+
96
+ functions = _authorizeForService(STAKING(), INSTANCE());
97
+ _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
98
+ _authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
99
+ _authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
100
+ _authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
101
+ _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
102
+
103
+ functions = _authorizeForService(STAKING(), ALL());
104
+ _authorize(functions, IStakingService.create.selector, "create");
105
+ _authorize(functions, IStakingService.stake.selector, "stake");
106
+ _authorize(functions, IStakingService.restakeToNewTarget.selector, "restakeToNewTarget");
107
+ _authorize(functions, IStakingService.updateRewards.selector, "updateRewards");
108
+ _authorize(functions, IStakingService.claimRewards.selector, "claimRewards");
109
+ _authorize(functions, IStakingService.unstake.selector, "unstake");
110
+ }
111
+
112
+
113
+ /// @dev Instance service function authorization.
114
+ function _setupInstanceServiceAuthorization()
115
+ internal
116
+ {
117
+ }
118
+
119
+
120
+ /// @dev Component service function authorization.
121
+ function _setupComponentServiceAuthorization()
122
+ internal
123
+ {
124
+ }
125
+
126
+ /// @dev Distribution service function authorization.
127
+ function _setupDistributionServiceAuthorization()
128
+ internal
129
+ {
130
+ IAccess.FunctionInfo[] storage functions;
131
+
132
+ functions = _authorizeForService(DISTRIBUTION(), POLICY());
133
+ _authorize(functions, IDistributionService.processSale.selector, "processSale");
134
+ _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
135
+ }
136
+
137
+
138
+ /// @dev Pool service function authorization.
139
+ function _setupPoolServiceAuthorization()
140
+ internal
141
+ {
142
+ IAccess.FunctionInfo[] storage functions;
143
+
144
+ functions = _authorizeForService(POOL(), POLICY());
145
+ _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
146
+ _authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
147
+ _authorize(functions, IPoolService.processSale.selector, "processSale");
148
+
149
+ functions = _authorizeForService(POOL(), CLAIM());
150
+ _authorize(functions, IPoolService.processPayout.selector, "processPayout");
151
+ }
152
+
153
+
154
+ /// @dev Instance service function authorization.
155
+ function _setupBundleServiceAuthorization()
156
+ internal
157
+ {
158
+ IAccess.FunctionInfo[] storage functions;
159
+
160
+ functions = _authorizeForService(BUNDLE(), POOL());
161
+ _authorize(functions, IBundleService.stake.selector, "stake");
162
+ _authorize(functions, IBundleService.unstake.selector, "unstake");
163
+ _authorize(functions, IBundleService.close.selector, "close");
164
+ _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
165
+ _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
166
+
167
+ functions = _authorizeForService(BUNDLE(), ALL());
168
+ _authorize(functions, IBundleService.create.selector, "create");
169
+ _authorize(functions, IBundleService.extend.selector, "extend");
170
+ _authorize(functions, IBundleService.lock.selector, "lock");
171
+ _authorize(functions, IBundleService.unlock.selector, "unlock");
172
+ _authorize(functions, IBundleService.setFee.selector, "setFee");
173
+ _authorize(functions, IBundleService.withdrawBundleFees.selector, "withdrawBundleFees");
174
+ }
175
+ }
176
+