@etherisc/gif-next 0.0.2-b38343e-249 → 0.0.2-b3a8633-027

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 (699) hide show
  1. package/README.md +38 -86
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +245 -443
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +274 -317
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +292 -2124
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +328 -69
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +399 -2883
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +663 -314
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +388 -263
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +115 -74
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +291 -210
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +398 -326
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +397 -450
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +139 -89
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +277 -129
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IPricingService.sol/IPricingService.json} +254 -185
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +401 -241
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +90 -63
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/{components → product}/Product.sol/Product.json +378 -367
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +53 -16
  152. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +4 -0
  153. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +1503 -0
  154. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +4 -0
  155. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +1881 -0
  156. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +4 -0
  157. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +974 -0
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +181 -19
  160. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -138
  162. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  164. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/Registry.sol/Registry.json +569 -35
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1871 -0
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  169. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +373 -87
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1140 -0
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  177. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  180. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  181. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +209 -166
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +101 -103
  188. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  190. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  191. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +222 -104
  192. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  194. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  196. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  197. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  198. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  199. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  200. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  202. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  204. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  206. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  208. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IService.sol/IService.json +106 -18
  210. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  212. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  214. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  218. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.dbg.json +4 -0
  219. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.json +34 -0
  220. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.dbg.json +4 -0
  221. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.json +24 -0
  222. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.dbg.json +4 -0
  223. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.json +34 -0
  224. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  225. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  226. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  227. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  228. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  229. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  230. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -23
  232. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  233. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  234. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  235. package/artifacts/contracts/shared/Service.sol/Service.json +114 -21
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  237. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  294. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  296. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  298. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  300. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  302. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  304. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  306. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  308. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  310. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  311. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  312. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  313. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  314. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  315. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  316. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  317. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  318. package/contracts/authorization/AccessAdmin.sol +590 -0
  319. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  320. package/contracts/authorization/Authorization.sol +218 -0
  321. package/contracts/authorization/IAccess.sol +48 -0
  322. package/contracts/authorization/IAccessAdmin.sol +136 -0
  323. package/contracts/authorization/IAuthorization.sol +54 -0
  324. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  325. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  326. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  327. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  328. package/contracts/distribution/BasicDistribution.sol +149 -0
  329. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  330. package/contracts/{components → distribution}/Distribution.sol +166 -191
  331. package/contracts/distribution/DistributionService.sol +288 -0
  332. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  333. package/contracts/distribution/IDistributionComponent.sol +48 -0
  334. package/contracts/distribution/IDistributionService.sol +85 -0
  335. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
  336. package/contracts/instance/IInstance.sol +60 -66
  337. package/contracts/instance/IInstanceService.sol +57 -24
  338. package/contracts/instance/Instance.sol +176 -213
  339. package/contracts/instance/InstanceAdmin.sol +266 -0
  340. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  341. package/contracts/instance/InstanceReader.sol +173 -61
  342. package/contracts/instance/InstanceService.sol +310 -343
  343. package/contracts/instance/InstanceServiceManager.sol +12 -26
  344. package/contracts/instance/InstanceStore.sol +276 -0
  345. package/contracts/instance/base/BalanceStore.sol +123 -0
  346. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  347. package/contracts/instance/base/ObjectCounter.sol +21 -0
  348. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  349. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  350. package/contracts/instance/module/IAccess.sol +19 -20
  351. package/contracts/instance/module/IBundle.sol +8 -8
  352. package/contracts/instance/module/{ISetup.sol → IComponents.sol} +24 -19
  353. package/contracts/instance/module/IDistribution.sol +7 -4
  354. package/contracts/instance/module/IPolicy.sol +53 -16
  355. package/contracts/instance/module/IRisk.sol +1 -1
  356. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  357. package/contracts/oracle/BasicOracle.sol +48 -0
  358. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  359. package/contracts/oracle/IOracle.sol +36 -0
  360. package/contracts/oracle/IOracleComponent.sol +32 -0
  361. package/contracts/oracle/IOracleService.sol +65 -0
  362. package/contracts/oracle/Oracle.sol +157 -0
  363. package/contracts/oracle/OracleService.sol +278 -0
  364. package/contracts/oracle/OracleServiceManager.sol +39 -0
  365. package/contracts/pool/BasicPool.sol +164 -0
  366. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  367. package/contracts/pool/BundleService.sol +284 -0
  368. package/contracts/pool/BundleServiceManager.sol +39 -0
  369. package/contracts/pool/IBundleService.sol +106 -0
  370. package/contracts/pool/IPoolComponent.sol +52 -0
  371. package/contracts/pool/IPoolService.sol +150 -0
  372. package/contracts/pool/Pool.sol +311 -0
  373. package/contracts/pool/PoolService.sol +436 -0
  374. package/contracts/pool/PoolServiceManager.sol +39 -0
  375. package/contracts/product/ApplicationService.sol +230 -0
  376. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  377. package/contracts/product/BasicProduct.sol +82 -0
  378. package/contracts/product/BasicProductAuthorization.sol +40 -0
  379. package/contracts/product/ClaimService.sol +416 -0
  380. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  381. package/contracts/{instance/service → product}/IApplicationService.sol +16 -36
  382. package/contracts/product/IClaimService.sol +99 -0
  383. package/contracts/{instance/service → product}/IPolicyService.sol +37 -48
  384. package/contracts/product/IPricingService.sol +39 -0
  385. package/contracts/product/IProductComponent.sol +39 -0
  386. package/contracts/product/IProductService.sol +33 -0
  387. package/contracts/product/PolicyService.sol +475 -0
  388. package/contracts/product/PolicyServiceManager.sol +39 -0
  389. package/contracts/product/PricingService.sol +300 -0
  390. package/contracts/product/PricingServiceManager.sol +39 -0
  391. package/contracts/product/Product.sol +392 -0
  392. package/contracts/product/ProductService.sol +99 -0
  393. package/contracts/product/ProductServiceManager.sol +39 -0
  394. package/contracts/registry/ChainNft.sol +42 -26
  395. package/contracts/registry/GlobalRegistry.sol +95 -0
  396. package/contracts/registry/GlobalRegistryAdmin.sol +38 -0
  397. package/contracts/registry/IGlobalRegistry.sol +17 -0
  398. package/contracts/registry/IRegistry.sol +60 -26
  399. package/contracts/registry/IRegistryService.sol +44 -42
  400. package/contracts/registry/ITransferInterceptor.sol +1 -0
  401. package/contracts/registry/Registry.sol +278 -175
  402. package/contracts/registry/RegistryAdmin.sol +447 -0
  403. package/contracts/registry/RegistryService.sol +70 -101
  404. package/contracts/registry/RegistryServiceManager.sol +23 -32
  405. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  406. package/contracts/registry/ReleaseRegistry.sol +533 -0
  407. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  408. package/contracts/registry/TokenRegistry.sol +261 -62
  409. package/contracts/shared/Component.sol +281 -0
  410. package/contracts/shared/ComponentService.sol +581 -0
  411. package/contracts/shared/ComponentServiceManager.sol +35 -0
  412. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  413. package/contracts/shared/ERC165.sol +1 -1
  414. package/contracts/shared/IComponent.sol +70 -0
  415. package/contracts/shared/IComponentService.sol +102 -0
  416. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  417. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  418. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  419. package/contracts/shared/INftOwnable.sol +2 -2
  420. package/contracts/shared/IPolicyHolder.sol +29 -10
  421. package/contracts/shared/IRegistryLinked.sol +0 -1
  422. package/contracts/shared/IService.sol +15 -6
  423. package/contracts/shared/InitializableCustom.sol +177 -0
  424. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  425. package/contracts/shared/KeyValueStore.sol +131 -0
  426. package/contracts/shared/Lifecycle.sol +77 -0
  427. package/contracts/shared/MainnetId.sol +29 -0
  428. package/contracts/shared/NftIdSet.sol +65 -0
  429. package/contracts/shared/NftOwnable.sol +3 -16
  430. package/contracts/shared/PolicyHolder.sol +40 -19
  431. package/contracts/shared/Registerable.sol +15 -14
  432. package/contracts/shared/RegistryLinked.sol +0 -5
  433. package/contracts/shared/Service.sol +47 -23
  434. package/contracts/shared/TokenHandler.sol +37 -6
  435. package/contracts/staking/IStaking.sol +167 -0
  436. package/contracts/staking/IStakingService.sol +160 -0
  437. package/contracts/staking/StakeManagerLib.sol +231 -0
  438. package/contracts/staking/Staking.sol +510 -0
  439. package/contracts/staking/StakingLifecycle.sol +23 -0
  440. package/contracts/staking/StakingManager.sol +50 -0
  441. package/contracts/staking/StakingReader.sol +183 -0
  442. package/contracts/staking/StakingService.sol +411 -0
  443. package/contracts/staking/StakingServiceManager.sol +44 -0
  444. package/contracts/staking/StakingStore.sol +605 -0
  445. package/contracts/staking/TargetManagerLib.sol +207 -0
  446. package/contracts/{types → type}/AddressSet.sol +1 -1
  447. package/contracts/type/Amount.sol +128 -0
  448. package/contracts/{types → type}/Blocknumber.sol +21 -3
  449. package/contracts/{types → type}/ClaimId.sol +25 -2
  450. package/contracts/{types → type}/Fee.sol +33 -23
  451. package/contracts/{types → type}/NftId.sol +21 -15
  452. package/contracts/{types → type}/NftIdSet.sol +2 -2
  453. package/contracts/type/ObjectType.sol +271 -0
  454. package/contracts/{types → type}/PayoutId.sol +33 -5
  455. package/contracts/{types → type}/Referral.sol +5 -1
  456. package/contracts/type/RequestId.sol +75 -0
  457. package/contracts/{types → type}/RiskId.sol +1 -1
  458. package/contracts/type/RoleId.sol +174 -0
  459. package/contracts/type/Seconds.sol +81 -0
  460. package/contracts/type/Selector.sol +102 -0
  461. package/contracts/{types → type}/StateId.sol +34 -4
  462. package/contracts/type/String.sol +53 -0
  463. package/contracts/{types → type}/Timestamp.sol +23 -14
  464. package/contracts/{types → type}/UFixed.sol +7 -0
  465. package/contracts/{types → type}/Version.sol +5 -2
  466. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  467. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  468. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  469. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  470. package/package.json +8 -5
  471. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  472. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  473. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  474. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  475. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  476. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  477. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  478. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  481. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  483. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  485. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  487. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  489. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  491. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  493. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  495. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  497. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  499. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  501. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  503. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  505. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  507. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  510. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  512. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  514. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  516. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  518. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  520. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  521. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  522. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  523. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  524. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  525. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  530. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  531. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  532. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -858
  536. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
  538. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1085
  540. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  542. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -743
  544. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  546. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -935
  548. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -677
  550. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  552. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -398
  554. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  555. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  557. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -336
  558. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  560. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1109
  561. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
  563. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  564. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -716
  565. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  567. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -766
  569. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  571. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  572. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  573. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  574. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  575. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  576. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  577. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  578. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  579. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  580. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  581. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  582. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  583. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  584. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  585. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  586. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  587. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  588. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  589. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  590. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -510
  591. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  592. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  593. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  594. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  595. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  596. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  597. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  598. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  599. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  600. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  601. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  603. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  605. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  607. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  609. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  611. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  613. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  615. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  616. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  617. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  619. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  621. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  623. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  625. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  627. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  629. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  632. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  634. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  636. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  638. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  640. package/contracts/components/Component.sol +0 -242
  641. package/contracts/components/IComponent.sol +0 -55
  642. package/contracts/components/IDistributionComponent.sol +0 -100
  643. package/contracts/components/IPoolComponent.sol +0 -87
  644. package/contracts/components/IProductComponent.sol +0 -39
  645. package/contracts/components/Pool.sol +0 -254
  646. package/contracts/components/Product.sol +0 -285
  647. package/contracts/experiment/cloning/Cloner.sol +0 -47
  648. package/contracts/experiment/errors/Require.sol +0 -38
  649. package/contracts/experiment/errors/Revert.sol +0 -44
  650. package/contracts/experiment/inheritance/A.sol +0 -53
  651. package/contracts/experiment/inheritance/B.sol +0 -28
  652. package/contracts/experiment/inheritance/C.sol +0 -34
  653. package/contracts/experiment/inheritance/IA.sol +0 -13
  654. package/contracts/experiment/inheritance/IB.sol +0 -10
  655. package/contracts/experiment/inheritance/IC.sol +0 -12
  656. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  657. package/contracts/experiment/statemachine/ISM.sol +0 -25
  658. package/contracts/experiment/statemachine/SM.sol +0 -57
  659. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  660. package/contracts/experiment/types/TypeA.sol +0 -47
  661. package/contracts/experiment/types/TypeB.sol +0 -29
  662. package/contracts/instance/InstanceAccessManager.sol +0 -297
  663. package/contracts/instance/base/ComponentService.sol +0 -134
  664. package/contracts/instance/base/KeyValueStore.sol +0 -172
  665. package/contracts/instance/base/Lifecycle.sol +0 -100
  666. package/contracts/instance/module/ITreasury.sol +0 -23
  667. package/contracts/instance/service/ApplicationService.sol +0 -268
  668. package/contracts/instance/service/BundleService.sol +0 -298
  669. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  670. package/contracts/instance/service/ClaimService.sol +0 -151
  671. package/contracts/instance/service/DistributionService.sol +0 -277
  672. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  673. package/contracts/instance/service/IBundleService.sol +0 -54
  674. package/contracts/instance/service/IClaimService.sol +0 -61
  675. package/contracts/instance/service/IDistributionService.sol +0 -65
  676. package/contracts/instance/service/IPoolService.sol +0 -20
  677. package/contracts/instance/service/IProductService.sol +0 -40
  678. package/contracts/instance/service/PolicyService.sol +0 -474
  679. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  680. package/contracts/instance/service/PoolService.sol +0 -109
  681. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  682. package/contracts/instance/service/ProductService.sol +0 -233
  683. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  684. package/contracts/registry/RegistryAccessManager.sol +0 -216
  685. package/contracts/registry/ReleaseManager.sol +0 -322
  686. package/contracts/shared/ContractDeployerLib.sol +0 -72
  687. package/contracts/test/TestFee.sol +0 -25
  688. package/contracts/test/TestRegisterable.sol +0 -18
  689. package/contracts/test/TestRoleId.sol +0 -14
  690. package/contracts/test/TestService.sol +0 -25
  691. package/contracts/test/TestVersion.sol +0 -44
  692. package/contracts/test/TestVersionable.sol +0 -17
  693. package/contracts/test/Usdc.sol +0 -26
  694. package/contracts/types/ChainId.sol +0 -38
  695. package/contracts/types/NumberId.sol +0 -52
  696. package/contracts/types/ObjectType.sol +0 -156
  697. package/contracts/types/RoleId.sol +0 -90
  698. /package/contracts/{types → type}/DistributorType.sol +0 -0
  699. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,533 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
5
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
6
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
7
+ import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
8
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
9
+ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
10
+
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
+ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
14
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
15
+ import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
16
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
17
+ import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
18
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
19
+
20
+ import {IService} from "../shared/IService.sol";
21
+ import {ILifecycle} from "../shared/ILifecycle.sol";
22
+ import {INftOwnable} from "../shared/INftOwnable.sol";
23
+ import {IRegisterable} from "../shared/IRegisterable.sol";
24
+
25
+ import {IRegistry} from "./IRegistry.sol";
26
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
27
+ import {IRegistryService} from "./IRegistryService.sol";
28
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
29
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
30
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
31
+ import {Registry} from "./Registry.sol";
32
+ import {TokenRegistry} from "./TokenRegistry.sol";
33
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
34
+
35
+ // TODO rename to something that does not end with 'Manager'
36
+ // everywhere else *Manager points to an upgradeable contract
37
+ contract ReleaseRegistry is
38
+ AccessManaged,
39
+ ReleaseLifecycle,
40
+ IRegistryLinked
41
+ {
42
+ using ObjectTypeLib for ObjectType;
43
+
44
+ uint256 public constant INITIAL_GIF_VERSION = 3;
45
+
46
+ event LogReleaseCreation(VersionPart version, bytes32 salt);
47
+ event LogReleaseActivation(VersionPart version);
48
+ event LogReleaseDisabled(VersionPart version);
49
+ event LogReleaseEnabled(VersionPart version);
50
+
51
+ // constructor
52
+ error ErrorReleaseRegistryNotRegistry(Registry registry);
53
+
54
+ // createNextRelease
55
+ error ErrorReleaseRegistryReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
56
+
57
+ // prepareRelease
58
+ error ErrorReleaseRegistryReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
59
+ error ErrorReleaseRegistryReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
60
+ error ErrorReleaseRegistryVersionMismatch(VersionPart expected, VersionPart actual);
61
+ error ErrorReleaseRegistryNoDomains(VersionPart version);
62
+
63
+ // registerService
64
+ error ErrorReleaseRegistryNoServiceRegistrationExpected();
65
+ error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
66
+ error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
67
+ error ErrorReleaseRegistryNotService(address notService);
68
+ error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
69
+
70
+ // activateNextRelease
71
+ error ErrorReleaseRegistryReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
72
+ error ErrorReleaseRegistryReleaseNotCreated(VersionPart releaseVersion);
73
+ error ErrorReleaseRegistryReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
74
+ error ErrorReleaseRegistryReleaseAlreadyActivated(VersionPart releaseVersion);
75
+
76
+ // disableRelease
77
+ error ErrorReleaseRegistryReleaseNotActivated(VersionPart releaseVersion);
78
+ error ErrorReleaseRegistryReleaseAlreadyDisabled(VersionPart releaseVersion);
79
+
80
+ // _verifyService
81
+ error ErrorReleaseRegistryServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
82
+ error ErrorReleaseRegistryServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
83
+
84
+ // _verifyServiceInfo
85
+ error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
86
+ error ErrorReleaseRegistryServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
87
+ error ErrorReleaseRegistryServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
88
+ error ErrorReleaseRegistryServiceInfoOwnerInvalid(IService service, address expected, address found);
89
+ error ErrorReleaseRegistryServiceSelfRegistration(IService service);
90
+ error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
91
+
92
+ Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
93
+
94
+ RegistryAdmin public immutable _admin;
95
+ Registry public immutable _registry;
96
+ IRegisterable private _staking;
97
+ address private _stakingOwner;
98
+
99
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
100
+ mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
101
+
102
+ VersionPart private _initial;// first active version
103
+ VersionPart internal _latest; // latest active version
104
+ VersionPart internal _next; // version to create and activate
105
+ mapping(VersionPart verson => StateId releaseState) private _state;
106
+
107
+ uint256 internal _registeredServices;
108
+ uint256 internal _servicesToRegister;
109
+
110
+ constructor(Registry registry)
111
+ AccessManaged(msg.sender)
112
+ {
113
+ // TODO move this part to RegistryLinked constructor
114
+ if(!_isRegistry(address(registry))) {
115
+ revert ErrorReleaseRegistryNotRegistry(registry);
116
+ }
117
+
118
+ setAuthority(registry.getAuthority());
119
+
120
+ _registry = registry;
121
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
122
+
123
+ _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
124
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
125
+ }
126
+
127
+ /// @dev skips previous release if was not activated
128
+ /// sets next release into state SCHEDULED
129
+ function createNextRelease()
130
+ external
131
+ restricted() // GIF_ADMIN_ROLE
132
+ returns(VersionPart)
133
+ {
134
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
135
+ _servicesToRegister = 0;
136
+ _registeredServices = 0;
137
+ _state[_next] = getInitialState(RELEASE());
138
+
139
+ return _next;
140
+ }
141
+
142
+ function prepareNextRelease(
143
+ IServiceAuthorization serviceAuthorization,
144
+ bytes32 salt
145
+ )
146
+ external
147
+ restricted() // GIF_MANAGER_ROLE
148
+ returns(
149
+ address authority,
150
+ VersionPart version,
151
+ bytes32 releaseSalt
152
+ )
153
+ {
154
+ authority = _admin.authority();
155
+ version = _next;
156
+
157
+ // ensures unique salt
158
+ // TODO CreateX have clones capability also
159
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
160
+ releaseSalt = keccak256(
161
+ bytes.concat(
162
+ bytes32(version.toInt()),
163
+ salt));
164
+
165
+ // verify release in state SCHEDULED
166
+ if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
167
+ revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
168
+ }
169
+
170
+ _state[version] = DEPLOYING();
171
+
172
+ // verify authorizaion contract release matches with expected version
173
+ VersionPart releaseVersion = serviceAuthorization.getRelease();
174
+ if (releaseVersion != version) {
175
+ revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
176
+ }
177
+
178
+
179
+ // sanity check to ensure service domain list is not empty
180
+ uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
181
+ if (serviceDomainsCount == 0) {
182
+ revert ErrorReleaseRegistryNoDomains(version);
183
+ }
184
+
185
+ // verify prepareNextRelease is only called once per release
186
+ if(_servicesToRegister > 0) {
187
+ revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
188
+ }
189
+
190
+ _servicesToRegister = serviceDomainsCount;
191
+ _serviceAuthorization[version] = serviceAuthorization;
192
+
193
+ emit LogReleaseCreation(version, releaseSalt);
194
+ }
195
+
196
+ // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
197
+ function registerService(IService service)
198
+ external
199
+ restricted // GIF_MANAGER_ROLE
200
+ returns(NftId nftId)
201
+ {
202
+ VersionPart releaseVersion = _next;
203
+ StateId state = _state[releaseVersion];
204
+
205
+ // verify release in state DEPLOYING
206
+ if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
207
+ // TOOD name must represent failed state transition
208
+ revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
209
+ }
210
+
211
+ _state[releaseVersion] = DEPLOYING();
212
+
213
+ // not all services are registered
214
+ if (_servicesToRegister == _registeredServices) {
215
+ revert ErrorReleaseRegistryNoServiceRegistrationExpected();
216
+ }
217
+
218
+ // service can work with release manager
219
+ (
220
+ IRegistry.ObjectInfo memory info,
221
+ ObjectType serviceDomain,
222
+ VersionPart serviceVersion
223
+ ) = _verifyService(service);
224
+
225
+ // service domain matches defined in release config
226
+ ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
227
+ if (serviceDomain != expectedDomain) {
228
+ revert ErrorReleaseRegistryServiceDomainMismatch(expectedDomain, serviceDomain);
229
+ }
230
+
231
+ // TODO: service address matches defined in release config
232
+
233
+ // setup service authorization
234
+ _admin.authorizeService(
235
+ _serviceAuthorization[releaseVersion],
236
+ service,
237
+ serviceDomain,
238
+ releaseVersion);
239
+
240
+ // special roles for registry/staking/pool service
241
+ if (
242
+ serviceDomain == REGISTRY() ||
243
+ serviceDomain == STAKING() ||
244
+ serviceDomain == POOL())
245
+ {
246
+ _admin.grantServiceRoleForAllVersions(service, serviceDomain);
247
+ }
248
+
249
+ _registeredServices++;
250
+
251
+ // register service with registry
252
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
253
+ service.linkToRegisteredNftId();
254
+ }
255
+
256
+
257
+ function activateNextRelease()
258
+ external
259
+ restricted // GIF_ADMIN_ROLE
260
+ {
261
+ VersionPart version = _next;
262
+ StateId state = _state[version];
263
+ StateId newState = ACTIVE();
264
+
265
+ // verify release in state DEPLOYING
266
+ if (!isValidTransition(RELEASE(), state, newState)) {
267
+ revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
268
+ }
269
+
270
+ // release fully deployed
271
+ if(_registeredServices < _servicesToRegister) {
272
+ revert ErrorReleaseRegistryReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
273
+ }
274
+
275
+ // release exists, registry service MUST exist
276
+ address service = _registry.getServiceAddress(REGISTRY(), version);
277
+ if(service == address(0)) {
278
+ revert ErrorReleaseRegistryReleaseNotCreated(version);
279
+ }
280
+
281
+ _latest = version;
282
+ _state[version] = newState;
283
+
284
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
285
+
286
+ emit LogReleaseActivation(version);
287
+ }
288
+
289
+ /// @dev stop all operations with release services
290
+ function pauseRelease(VersionPart version)
291
+ external
292
+ restricted // GIF_ADMIN_ROLE
293
+ {
294
+ StateId state = _state[version];
295
+ StateId newState = PAUSED();
296
+
297
+ // verify release in state ACTIVE
298
+ if (!isValidTransition(RELEASE(), state, newState)) {
299
+ revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
300
+ }
301
+
302
+ _revokeReleaseRoles(version);
303
+
304
+ _state[version] = newState;
305
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
306
+
307
+ emit LogReleaseDisabled(version);
308
+ }
309
+
310
+ // TODO consider revert if some delay is expired -> becomes disabled automatically
311
+ /// @dev resume operations with release services
312
+ function unpauseRelease(VersionPart version)
313
+ external
314
+ restricted // GIF_ADMIN_ROLE
315
+ {
316
+ StateId state = _state[version];
317
+ StateId newState = ACTIVE();
318
+
319
+ // verify release in state PAUSED
320
+ if (!isValidTransition(RELEASE(), state, newState)) {
321
+ revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
322
+ }
323
+
324
+ _grantReleaseRoles(version);
325
+
326
+ _state[version] = newState;
327
+ _releaseInfo[version].disabledAt = zeroTimestamp();
328
+
329
+ emit LogReleaseEnabled(version);
330
+ }
331
+
332
+ //--- view functions ----------------------------------------------------//
333
+
334
+ function predictDeterministicAddress(
335
+ address implementation,
336
+ bytes32 salt,
337
+ address deployer
338
+ ) external pure returns (address predicted) {
339
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
340
+ }
341
+
342
+ function isActiveRelease(VersionPart version) public view returns(bool) {
343
+ return _state[version] == ACTIVE();
344
+ }
345
+
346
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
347
+ return _releaseInfo[version];
348
+ }
349
+
350
+ function getNextVersion() public view returns(VersionPart) {
351
+ return _next;
352
+ }
353
+
354
+ function getLatestVersion() external view returns(VersionPart) {
355
+ return _latest;
356
+ }
357
+
358
+ function getInitialVersion() external view returns(VersionPart) {
359
+ return _initial;
360
+ }
361
+
362
+ function getState(VersionPart version) external view returns (StateId stateId) {
363
+ return _state[version];
364
+ }
365
+
366
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
367
+ return _servicesToRegister - _registeredServices;
368
+ }
369
+
370
+ function getServiceAuthorization(VersionPart version)
371
+ external
372
+ view
373
+ returns (IServiceAuthorization serviceAuthorization)
374
+ {
375
+ return _serviceAuthorization[version];
376
+ }
377
+
378
+ function getRegistryAdmin() external view returns (address) {
379
+ return address(_admin);
380
+ }
381
+
382
+ //--- IRegistryLinked ------------------------------------------------------//
383
+
384
+ function getRegistry() external view returns (IRegistry) {
385
+ return _registry;
386
+ }
387
+
388
+ //--- private functions ----------------------------------------------------//
389
+
390
+ function _revokeReleaseRoles(VersionPart version)
391
+ private
392
+ {
393
+ address service;
394
+ ObjectType domain;
395
+
396
+ ObjectType[] memory domains = _serviceAuthorization[version].getServiceDomains();
397
+ for(uint idx = 0; idx < domains.length; idx++)
398
+ {
399
+ domain = domains[idx];
400
+ service = _registry.getServiceAddress(domain, version);
401
+ _admin.revokeServiceRole(IService(service), domain, version);
402
+
403
+ // special roles for registry/staking/pool service
404
+ if(
405
+ domain == REGISTRY() ||
406
+ domain == STAKING() ||
407
+ domain == POOL()
408
+ )
409
+ {
410
+ _admin.revokeServiceRoleForAllVersions(IService(service), domain);
411
+ }
412
+ }
413
+ }
414
+
415
+ function _grantReleaseRoles(VersionPart version)
416
+ private
417
+ {
418
+ address service;
419
+ ObjectType domain;
420
+
421
+ // TODO consider getting domains from local store
422
+ ObjectType[] memory domains = _serviceAuthorization[version].getServiceDomains();
423
+ for(uint idx = 0; idx < domains.length; idx++)
424
+ {
425
+ domain = domains[idx];
426
+ service = _registry.getServiceAddress(domain, version);
427
+ _admin.grantServiceRole(IService(service), domain, version);
428
+
429
+ // special roles for registry/staking/pool service
430
+ if(
431
+ domain == REGISTRY() ||
432
+ domain == STAKING() ||
433
+ domain == POOL()
434
+ )
435
+ {
436
+ _admin.grantServiceRoleForAllVersions(IService(service), domain);
437
+ }
438
+ }
439
+ }
440
+
441
+ function _verifyService(IService service)
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
+ VersionPart releaseVersion = _next; // never 0
463
+ address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
464
+
465
+ // IMPORTANT: can not guarantee service access is actually controlled by authority
466
+ if(serviceAuthority != expectedAuthority) {
467
+ revert ErrorReleaseRegistryServiceReleaseAuthorityMismatch(
468
+ service,
469
+ serviceAuthority,
470
+ expectedAuthority);
471
+ }
472
+
473
+ if(serviceVersion != releaseVersion) {
474
+ revert ErrorReleaseRegistryServiceReleaseVersionMismatch(
475
+ service,
476
+ serviceVersion,
477
+ releaseVersion);
478
+ }
479
+ }
480
+
481
+
482
+ function _verifyServiceInfo(
483
+ IService service,
484
+ IRegistry.ObjectInfo memory info,
485
+ address expectedOwner // assume always valid, can not be 0
486
+ )
487
+ internal
488
+ view
489
+ {
490
+ if(info.objectAddress != address(service)) {
491
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, address(service));
492
+ }
493
+
494
+ if(info.isInterceptor != false) { // service is never interceptor
495
+ revert ErrorReleaseRegistryServiceInfoInterceptorInvalid(service, info.isInterceptor);
496
+ }
497
+
498
+ if(info.objectType != SERVICE()) {
499
+ revert ErrorReleaseRegistryServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
500
+ }
501
+
502
+ address owner = info.initialOwner;
503
+
504
+ if(owner != expectedOwner) { // registerable owner protection
505
+ revert ErrorReleaseRegistryServiceInfoOwnerInvalid(service, expectedOwner, owner);
506
+ }
507
+
508
+ if(owner == address(service)) {
509
+ revert ErrorReleaseRegistryServiceSelfRegistration(service);
510
+ }
511
+
512
+ if(_registry.isRegistered(owner)) {
513
+ revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
514
+ }
515
+ }
516
+
517
+ /// @dev returns true iff a the address passes some simple proxy tests.
518
+ function _isRegistry(address registryAddress) internal view returns (bool) {
519
+
520
+ // zero address is certainly not registry
521
+ if (registryAddress == address(0)) {
522
+ return false;
523
+ }
524
+ // TODO try catch and return false in case of revert or just panic
525
+ // check if contract returns a zero nft id for its own address
526
+ if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
527
+ return false;
528
+ }
529
+
530
+ return true;
531
+ }
532
+ }
533
+