@etherisc/gif-next 0.0.2-d39f345-355 → 0.0.2-d3a9310-013

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