@etherisc/gif-next 0.0.2-e2d8c7d-942 → 0.0.2-e31e2fd-778

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