@etherisc/gif-next 0.0.2-b9e43cf-870 → 0.0.2-bab959f-058

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