@etherisc/gif-next 0.0.2-fca9315-260 → 0.0.2-fcbeffe-064

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