@etherisc/gif-next 0.0.2-edc084c-558 → 0.0.2-edd8f00-238

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 (582) hide show
  1. package/README.md +11 -3
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +254 -167
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +117 -111
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +49 -312
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +36 -105
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +303 -2005
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +177 -41
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +429 -2753
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +801 -389
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +262 -221
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +122 -105
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  49. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  50. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  51. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  52. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  53. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  54. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  56. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  58. package/artifacts/contracts/{components/Product.sol/Product.json → oracle/Oracle.sol/Oracle.json} +255 -276
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  60. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  62. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  64. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  66. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  67. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  68. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +90 -46
  69. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  70. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +193 -103
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  72. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +294 -60
  73. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  74. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +298 -109
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  76. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  78. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  80. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  82. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  84. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  86. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  87. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +131 -94
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  90. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  91. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +194 -80
  93. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  94. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +86 -159
  95. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  96. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +283 -118
  97. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  98. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +11 -61
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  100. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  104. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  107. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  108. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  110. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  112. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  114. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +179 -29
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +310 -53
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  120. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +415 -43
  124. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +367 -73
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  130. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  131. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +187 -0
  132. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  133. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +783 -108
  134. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  136. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  138. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  139. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  140. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  142. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  144. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  150. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  152. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  153. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +139 -85
  154. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  155. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  156. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  158. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +27 -95
  160. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  161. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  162. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  164. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  166. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  168. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  169. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +110 -84
  170. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  172. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  174. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  176. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  177. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  178. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  180. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  182. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  184. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  186. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IService.sol/IService.json +17 -6
  188. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  189. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  190. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  192. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  193. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  194. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +570 -0
  195. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  196. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +156 -0
  197. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  198. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  199. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  201. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  202. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  203. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
  205. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  207. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  208. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  209. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  210. package/artifacts/contracts/shared/Service.sol/Service.json +17 -6
  211. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  212. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  213. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  214. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  215. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  216. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  218. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  219. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  220. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  222. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  223. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  224. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +187 -0
  226. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  228. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  230. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  232. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  234. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2260 -0
  236. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  237. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  238. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  240. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  242. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  244. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  246. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  248. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  250. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  252. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  254. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  256. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  258. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  260. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  262. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  264. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  266. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  268. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  270. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  272. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  274. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  276. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  278. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +33 -7
  280. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  282. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  284. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  286. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  288. package/contracts/{components → distribution}/Distribution.sol +47 -66
  289. package/contracts/distribution/DistributionService.sol +297 -0
  290. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  291. package/contracts/{components → distribution}/IDistributionComponent.sol +11 -16
  292. package/contracts/{instance/service → distribution}/IDistributionService.sol +19 -37
  293. package/contracts/instance/BundleManager.sol +8 -9
  294. package/contracts/instance/IInstance.sol +55 -66
  295. package/contracts/instance/IInstanceService.sol +50 -25
  296. package/contracts/instance/Instance.sol +160 -224
  297. package/contracts/instance/InstanceAdmin.sol +331 -0
  298. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  299. package/contracts/instance/InstanceReader.sol +157 -56
  300. package/contracts/instance/InstanceService.sol +258 -314
  301. package/contracts/instance/InstanceServiceManager.sol +11 -21
  302. package/contracts/instance/InstanceStore.sol +272 -0
  303. package/contracts/instance/base/BalanceStore.sol +123 -0
  304. package/contracts/instance/base/Cloneable.sol +28 -0
  305. package/contracts/instance/base/ObjectCounter.sol +21 -0
  306. package/contracts/instance/base/ObjectLifecycle.sol +96 -0
  307. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -9
  308. package/contracts/instance/module/IAccess.sol +4 -12
  309. package/contracts/instance/module/IBundle.sol +6 -9
  310. package/contracts/instance/module/IComponents.sol +21 -10
  311. package/contracts/instance/module/IDistribution.sol +7 -6
  312. package/contracts/instance/module/IPolicy.sol +28 -16
  313. package/contracts/instance/module/IRisk.sol +1 -1
  314. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  315. package/contracts/oracle/IOracle.sol +20 -0
  316. package/contracts/oracle/IOracleComponent.sol +32 -0
  317. package/contracts/oracle/IOracleService.sol +65 -0
  318. package/contracts/oracle/Oracle.sol +145 -0
  319. package/contracts/oracle/OracleService.sol +278 -0
  320. package/contracts/oracle/OracleServiceManager.sol +42 -0
  321. package/contracts/pool/BundleService.sol +296 -0
  322. package/contracts/pool/BundleServiceManager.sol +42 -0
  323. package/contracts/{instance/service → pool}/IBundleService.sol +35 -22
  324. package/contracts/{components → pool}/IPoolComponent.sol +17 -18
  325. package/contracts/{instance/service → pool}/IPoolService.sol +72 -21
  326. package/contracts/{components → pool}/Pool.sol +54 -58
  327. package/contracts/pool/PoolService.sol +452 -0
  328. package/contracts/pool/PoolServiceManager.sol +42 -0
  329. package/contracts/product/ApplicationService.sol +254 -0
  330. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  331. package/contracts/product/ClaimService.sol +442 -0
  332. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  333. package/contracts/{instance/service → product}/IApplicationService.sol +15 -35
  334. package/contracts/product/IClaimService.sol +99 -0
  335. package/contracts/{instance/service → product}/IPolicyService.sol +37 -31
  336. package/contracts/product/IPricingService.sol +39 -0
  337. package/contracts/product/IProductComponent.sol +42 -0
  338. package/contracts/product/IProductService.sol +33 -0
  339. package/contracts/product/PolicyService.sol +475 -0
  340. package/contracts/product/PolicyServiceManager.sol +42 -0
  341. package/contracts/product/PricingService.sol +300 -0
  342. package/contracts/product/PricingServiceManager.sol +42 -0
  343. package/contracts/{components → product}/Product.sol +191 -107
  344. package/contracts/product/ProductService.sol +124 -0
  345. package/contracts/product/ProductServiceManager.sol +42 -0
  346. package/contracts/registry/ChainNft.sol +8 -1
  347. package/contracts/registry/IRegistry.sol +44 -21
  348. package/contracts/registry/IRegistryService.sol +37 -36
  349. package/contracts/registry/IServiceAuthorization.sol +38 -0
  350. package/contracts/registry/Registry.sol +198 -83
  351. package/contracts/registry/RegistryAdmin.sol +333 -0
  352. package/contracts/registry/RegistryService.sol +71 -87
  353. package/contracts/registry/RegistryServiceManager.sol +21 -30
  354. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  355. package/contracts/registry/ReleaseManager.sol +389 -190
  356. package/contracts/registry/ServiceAuthorization.sol +90 -0
  357. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  358. package/contracts/registry/TokenRegistry.sol +261 -62
  359. package/contracts/shared/AccessAdmin.sol +759 -0
  360. package/contracts/shared/AccessManagerCustom.sol +741 -0
  361. package/contracts/shared/AccessManagerExtended.sol +481 -0
  362. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  363. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  364. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  365. package/contracts/shared/Component.sol +281 -0
  366. package/contracts/shared/ComponentService.sol +620 -0
  367. package/contracts/shared/ComponentServiceManager.sol +35 -0
  368. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  369. package/contracts/shared/ERC165.sol +1 -1
  370. package/contracts/shared/IAccessAdmin.sol +168 -0
  371. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  372. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  373. package/contracts/{components → shared}/IComponent.sol +23 -29
  374. package/contracts/shared/IComponentService.sol +102 -0
  375. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  376. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  377. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  378. package/contracts/shared/INftOwnable.sol +2 -2
  379. package/contracts/shared/IPolicyHolder.sol +29 -10
  380. package/contracts/shared/IRegistryLinked.sol +0 -1
  381. package/contracts/shared/IService.sol +11 -2
  382. package/contracts/shared/IVersionable.sol +1 -1
  383. package/contracts/shared/InitializableCustom.sol +177 -0
  384. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  385. package/contracts/shared/KeyValueStore.sol +131 -0
  386. package/contracts/shared/Lifecycle.sol +71 -0
  387. package/contracts/shared/NftIdSetManager.sol +65 -0
  388. package/contracts/shared/NftOwnable.sol +3 -16
  389. package/contracts/shared/PolicyHolder.sol +40 -19
  390. package/contracts/shared/ProxyManager.sol +34 -4
  391. package/contracts/shared/Registerable.sol +13 -12
  392. package/contracts/shared/RegistryLinked.sol +0 -5
  393. package/contracts/shared/Service.sol +32 -21
  394. package/contracts/shared/TokenHandler.sol +27 -2
  395. package/contracts/shared/Versionable.sol +1 -1
  396. package/contracts/staking/IStaking.sol +168 -0
  397. package/contracts/staking/IStakingService.sol +153 -0
  398. package/contracts/staking/StakeManagerLib.sol +231 -0
  399. package/contracts/staking/Staking.sol +513 -0
  400. package/contracts/staking/StakingLifecycle.sol +24 -0
  401. package/contracts/staking/StakingManager.sol +54 -0
  402. package/contracts/staking/StakingReader.sol +187 -0
  403. package/contracts/staking/StakingService.sol +411 -0
  404. package/contracts/staking/StakingServiceManager.sol +44 -0
  405. package/contracts/staking/StakingStore.sol +615 -0
  406. package/contracts/staking/TargetManagerLib.sol +207 -0
  407. package/contracts/{types → type}/AddressSet.sol +1 -1
  408. package/contracts/type/Amount.sol +128 -0
  409. package/contracts/{types → type}/Blocknumber.sol +20 -3
  410. package/contracts/{types → type}/ClaimId.sol +25 -2
  411. package/contracts/{types → type}/Fee.sol +24 -22
  412. package/contracts/{types → type}/NftId.sol +14 -16
  413. package/contracts/{types → type}/NftIdSet.sol +2 -2
  414. package/contracts/type/ObjectType.sol +241 -0
  415. package/contracts/{types → type}/PayoutId.sol +33 -5
  416. package/contracts/{types → type}/Referral.sol +1 -1
  417. package/contracts/type/RequestId.sol +75 -0
  418. package/contracts/{types → type}/RiskId.sol +1 -1
  419. package/contracts/type/RoleId.sol +201 -0
  420. package/contracts/{types → type}/Seconds.sol +27 -0
  421. package/contracts/type/Selector.sol +102 -0
  422. package/contracts/{types → type}/StateId.sol +33 -4
  423. package/contracts/type/String.sol +53 -0
  424. package/contracts/{types → type}/Timestamp.sol +10 -1
  425. package/contracts/{types → type}/Version.sol +1 -1
  426. package/package.json +4 -3
  427. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  428. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  429. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  430. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  431. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  432. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  433. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  434. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  435. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  436. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  437. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  438. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  439. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  440. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  441. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  442. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  443. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  444. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  445. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  446. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  447. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  448. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  449. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  450. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  451. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  452. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  453. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  454. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  455. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  456. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  457. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  458. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  459. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  460. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  461. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  462. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  463. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  464. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  465. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  466. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  467. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  468. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  469. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  470. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  471. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  472. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  473. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  474. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  475. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  476. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  477. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  479. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  481. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  483. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  485. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  487. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  488. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  489. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  490. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  491. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  492. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  493. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  494. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  495. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  496. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  497. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  498. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  499. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  500. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  501. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  502. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  503. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  504. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  505. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  506. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  507. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  508. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  509. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  510. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  511. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  512. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  513. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  514. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  515. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  516. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  517. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  518. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  519. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  520. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  521. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  522. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  523. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  524. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  525. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  526. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  527. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  528. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  529. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  530. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  531. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  532. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  533. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  534. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  535. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  536. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  537. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  538. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  539. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  540. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  541. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  542. package/contracts/components/Component.sol +0 -253
  543. package/contracts/components/IProductComponent.sol +0 -40
  544. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  545. package/contracts/instance/Cloneable.sol +0 -51
  546. package/contracts/instance/InstanceAccessManager.sol +0 -527
  547. package/contracts/instance/base/ComponentService.sol +0 -121
  548. package/contracts/instance/base/KeyValueStore.sol +0 -180
  549. package/contracts/instance/base/Lifecycle.sol +0 -109
  550. package/contracts/instance/module/ISetup.sol +0 -33
  551. package/contracts/instance/module/ITreasury.sol +0 -23
  552. package/contracts/instance/service/ApplicationService.sol +0 -350
  553. package/contracts/instance/service/BundleService.sol +0 -431
  554. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  555. package/contracts/instance/service/ClaimService.sol +0 -151
  556. package/contracts/instance/service/DistributionService.sol +0 -435
  557. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  558. package/contracts/instance/service/IClaimService.sol +0 -61
  559. package/contracts/instance/service/IProductService.sol +0 -40
  560. package/contracts/instance/service/PolicyService.sol +0 -362
  561. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  562. package/contracts/instance/service/PoolService.sol +0 -303
  563. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  564. package/contracts/instance/service/ProductService.sol +0 -210
  565. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  566. package/contracts/registry/RegistryAccessManager.sol +0 -216
  567. package/contracts/shared/ContractDeployerLib.sol +0 -72
  568. package/contracts/test/TestFee.sol +0 -25
  569. package/contracts/test/TestRegisterable.sol +0 -18
  570. package/contracts/test/TestRoleId.sol +0 -14
  571. package/contracts/test/TestService.sol +0 -25
  572. package/contracts/test/TestVersion.sol +0 -44
  573. package/contracts/test/TestVersionable.sol +0 -17
  574. package/contracts/test/Usdc.sol +0 -26
  575. package/contracts/types/Amount.sol +0 -60
  576. package/contracts/types/ChainId.sol +0 -38
  577. package/contracts/types/NumberId.sol +0 -52
  578. package/contracts/types/ObjectType.sol +0 -157
  579. package/contracts/types/RoleId.sol +0 -97
  580. /package/contracts/{types → type}/DistributorType.sol +0 -0
  581. /package/contracts/{types → type}/Key32.sol +0 -0
  582. /package/contracts/{types → type}/UFixed.sol +0 -0
@@ -1,220 +1,395 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
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";
4
8
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
9
+ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
5
10
 
6
- import {NftId} from "../types/NftId.sol";
7
- import {RoleId} from "../types/RoleId.sol";
8
- import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../types/ObjectType.sol";
9
- import {Version, VersionLib, VersionPart, VersionPartLib} from "../types/Version.sol";
10
- import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
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";
11
19
 
12
20
  import {IService} from "../shared/IService.sol";
21
+ import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
22
+ import {ILifecycle} from "../shared/ILifecycle.sol";
23
+ import {INftOwnable} from "../shared/INftOwnable.sol";
24
+ import {IRegisterable} from "../shared/IRegisterable.sol";
13
25
 
14
26
  import {IRegistry} from "./IRegistry.sol";
15
- import {Registry} from "./Registry.sol";
27
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
16
28
  import {IRegistryService} from "./IRegistryService.sol";
17
- import {RegistryAccessManager} from "./RegistryAccessManager.sol";
29
+ import {IServiceAuthorization} from "./IServiceAuthorization.sol";
30
+ import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
31
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
32
+ import {Registry} from "./Registry.sol";
33
+ import {TokenRegistry} from "./TokenRegistry.sol";
34
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
18
35
 
19
36
 
20
- contract ReleaseManager is AccessManaged
37
+ contract ReleaseManager is
38
+ AccessManaged,
39
+ ReleaseLifecycle,
40
+ IRegistryLinked
21
41
  {
22
42
  using ObjectTypeLib for ObjectType;
23
43
 
24
- event LogReleaseCreation(VersionPart version);
44
+ uint256 public constant INITIAL_GIF_VERSION = 3;
45
+
46
+ event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
25
47
  event LogReleaseActivation(VersionPart version);
48
+ event LogReleaseDisabled(VersionPart version);
49
+ event LogReleaseEnabled(VersionPart version);
50
+ event LogReleaseClosed(VersionPart version);
51
+
52
+ // constructor
53
+ error ErrorReleaseManagerNotRegistry(Registry registry);
26
54
 
27
55
  // createNextRelease
28
- error NotRegistryService();
29
- error UnexpectedServiceAuthority(address expected, address found);
56
+ error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
57
+
58
+ // prepareRelease
59
+ error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
60
+ error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
61
+ error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
62
+ error ErrorReleaseManagerNoDomains(VersionPart version);
30
63
 
31
64
  // registerService
32
- error NotService();
65
+ error ErrorReleaseManagerNoServiceRegistrationExpected();
66
+ error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
67
+ error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
68
+ error ErrorReleaseManagerNotService(address notService);
69
+ error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
33
70
 
34
71
  // activateNextRelease
35
- error ReleaseNotCreated();
36
- error ReleaseRegistrationNotFinished();
72
+ error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
73
+ error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
74
+ error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
75
+ error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
37
76
 
38
- // _getAndVerifyContractInfo
39
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
40
- error NotRegisterableOwner(address notOwner);
41
- error SelfRegistration();
42
- error RegisterableOwnerIsRegistered();
77
+ // disableRelease
78
+ error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
79
+ error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
43
80
 
44
81
  // _verifyService
45
- error UnexpectedServiceVersion(VersionPart expected, VersionPart found);
46
- error UnexpectedServiceDomain(ObjectType expected, ObjectType found);
47
-
48
- // _verifyAndStoreConfig
49
- error ConfigMissing();
50
- error ConfigServiceDomainInvalid(uint configArrayIndex, ObjectType domain);
51
- error ConfigSelectorZero(uint configArrayIndex);
52
- error SelectorAlreadyExists(VersionPart releaseVersion, ObjectType serviceDomain);
53
-
82
+ error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
83
+ error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
54
84
 
55
- RegistryAccessManager private immutable _accessManager;
56
- IRegistry private immutable _registry;
85
+ // _verifyServiceInfo
86
+ error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
87
+ error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
88
+ error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
89
+ error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
90
+ error ErrorReleaseManagerServiceSelfRegistration(IService service);
91
+ error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
57
92
 
58
- VersionPart immutable _initial;// first active major version
59
- VersionPart _latest;// latest active major version
60
- VersionPart _next;// major version to create and activate
93
+ Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
61
94
 
62
- mapping(VersionPart majorVersion => IRegistry.ReleaseInfo info) _release;
95
+ RegistryAdmin private _admin;
96
+ address public _releaseAccessManagerCodeAddress;
97
+ Registry private _registry;
63
98
 
64
- mapping(VersionPart majorVersion => mapping(ObjectType serviceDomain => bytes4[])) _selectors; // registry service function selector assigned to domain
99
+ // TODO remove once it's clear that release authority will always be registry authority
100
+ mapping(VersionPart version => address authority) internal _releaseAccessManager;
101
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
102
+ mapping(address registryService => VersionPart version) _releaseVersionByAddress;
65
103
 
66
- uint _awaitingRegistration; // "services left to register" counter
104
+ mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
67
105
 
68
- mapping(address registryService => bool isActive) _active;
106
+ VersionPart private _initial;// first active version
107
+ VersionPart internal _latest; // latest active version
108
+ VersionPart internal _next; // version to create and activate
109
+ mapping(VersionPart verson => StateId releaseState) private _state;
69
110
 
70
- mapping(VersionPart majorVersion => bool isValid) _valid; // TODO refactor to use _active only
111
+ uint256 internal _registeredServices;
112
+ uint256 internal _servicesToRegister;
71
113
 
72
- constructor(
73
- RegistryAccessManager accessManager,
74
- VersionPart initialVersion)
75
- AccessManaged(accessManager.authority())
114
+ constructor(Registry registry)
115
+ AccessManaged(msg.sender)
76
116
  {
77
- require(initialVersion.toInt() > 0, "ReleaseManager: initial version is 0");
117
+ // TODO move this part to RegistryLinked constructor
118
+ if(!_isRegistry(address(registry))) {
119
+ revert ErrorReleaseManagerNotRegistry(registry);
120
+ }
121
+
122
+ setAuthority(registry.getAuthority());
78
123
 
79
- _accessManager = accessManager;
124
+ _registry = registry;
125
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
80
126
 
81
- _initial = initialVersion;
82
- _next = initialVersion;
127
+ _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
128
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
83
129
 
84
- _registry = new Registry();
130
+ //AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
131
+ //masterReleaseAccessManager.initialize(address(this));
132
+ //masterReleaseAccessManager.disable();
133
+ //_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
85
134
  }
86
135
 
87
136
  /// @dev skips previous release if was not activated
137
+ /// sets next release into state SCHEDULED
88
138
  function createNextRelease()
89
139
  external
90
- restricted // GIF_ADMIN_ROLE
140
+ restricted() // GIF_ADMIN_ROLE
141
+ returns(VersionPart)
142
+ {
143
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
144
+ _servicesToRegister = 0;
145
+ _registeredServices = 0;
146
+ _state[_next] = getInitialState(RELEASE());
147
+
148
+ return _next;
149
+ }
150
+
151
+ function prepareNextRelease(
152
+ IServiceAuthorization serviceAuthorization,
153
+ bytes32 salt
154
+ )
155
+ external
156
+ restricted() // GIF_MANAGER_ROLE
157
+ returns(
158
+ address authority,
159
+ VersionPart version,
160
+ bytes32 releaseSalt
161
+ )
91
162
  {
92
- // allow to register new registry service for next version
93
- VersionPartLib.toVersionPart(_next.toInt() + 1);
94
- // disallow registration of regular services for next version while registry service is not registered
95
- _awaitingRegistration = 0;
163
+ (
164
+ VersionPart releaseVersion,
165
+ uint serviceDomainsCount
166
+ ) = serviceAuthorization.getRelease();
167
+
168
+ // verify authorizaion contract release matches with expected version
169
+ if (releaseVersion != _next) {
170
+ revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
171
+ }
96
172
 
97
- emit LogReleaseCreation(_next);
173
+ // sanity check to ensure service domain list is not empty
174
+ if (serviceDomainsCount == 0) {
175
+ revert ErrorReleaseManagerNoDomains(_next);
176
+ }
177
+
178
+ version = _next;
179
+ StateId state = _state[version];
180
+ StateId newState = DEPLOYING();
181
+
182
+ // verify release in state SCHEDULED
183
+ if (!isValidTransition(RELEASE(), state, newState)) {
184
+ revert ErrorReleaseManagerReleasePreparationDisallowed(version, state);
185
+ }
186
+
187
+ // verify prepareNextRelease is only called once per release
188
+ if(_servicesToRegister > 0) {
189
+ revert ErrorReleaseManagerReleaseAlreadyPrepared(version, state);
190
+ }
191
+
192
+ // ensures unique salt
193
+ // TODO CreateX have clones capability also
194
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
195
+ releaseSalt = keccak256(
196
+ bytes.concat(
197
+ bytes32(version.toInt()),
198
+ salt));
199
+
200
+ authority = _admin.authority();
201
+ _serviceAuthorization[_next] = serviceAuthorization;
202
+ _releaseAccessManager[_next] = authority;
203
+ _servicesToRegister = serviceDomainsCount;
204
+ _state[version] = newState;
205
+
206
+ emit LogReleaseCreation(version, releaseSalt, authority);
98
207
  }
99
208
 
209
+ // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
210
+ function registerService(IService service)
211
+ external
212
+ restricted // GIF_MANAGER_ROLE
213
+ returns(NftId nftId)
214
+ {
215
+ VersionPart releaseVersion = _next;
216
+ StateId state = _state[releaseVersion];
217
+ StateId newState = DEPLOYING();
218
+
219
+ // verify release in state DEPLOYING
220
+ if (!isValidTransition(RELEASE(), state, newState)) {
221
+ // TOOD name must represent failed state transition
222
+ revert ErrorReleaseManagerServiceRegistrationDisallowed(state);
223
+ }
224
+
225
+ // not all services are registered
226
+ if (_servicesToRegister == _registeredServices) {
227
+ revert ErrorReleaseManagerNoServiceRegistrationExpected();
228
+ }
229
+
230
+ // service can work with release manager
231
+ (
232
+ IRegistry.ObjectInfo memory info,
233
+ ObjectType serviceDomain,
234
+ VersionPart serviceVersion
235
+ ) = _verifyService(service);
236
+
237
+ // service domain matches defined in release config
238
+ ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
239
+ if (serviceDomain != expectedDomain) {
240
+ revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
241
+ }
242
+
243
+ // TODO uncomment when release addresses calculations are ready
244
+ // service address matches defined in release config
245
+ /*address expectedAddress = _serviceAuthorization[releaseVersion].getServiceAddress(expectedDomain);
246
+ if(address(service) != expectedAddress) {
247
+ //revert ErrorReleaseManagerServiceAddressMismatch(expectedAddress, address(service));
248
+ }*/
249
+
250
+ // checked in registry
251
+ _releaseInfo[releaseVersion].domains.push(serviceDomain);
252
+
253
+ _state[releaseVersion] = newState;
254
+ _registeredServices++;
255
+
256
+ // setup service authorization
257
+ _admin.authorizeService(
258
+ _serviceAuthorization[releaseVersion],
259
+ service);
260
+
261
+ // TODO consider to extend this to REGISTRY
262
+ // special roles for registry/staking/pool service
263
+ if (serviceDomain == STAKING() || serviceDomain == POOL()) {
264
+ // TODO rename to grantServiceDomainRole()
265
+ _admin.grantServiceRoleForAllVersions(service, serviceDomain);
266
+ }
267
+
268
+ // register service with registry
269
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
270
+ service.linkToRegisteredNftId();
271
+ }
272
+
273
+
100
274
  function activateNextRelease()
101
275
  external
102
276
  restricted // GIF_ADMIN_ROLE
103
277
  {
104
278
  VersionPart version = _next;
105
- address service = _registry.getServiceAddress(REGISTRY(), version);
279
+ StateId state = _state[version];
280
+ StateId newState = ACTIVE();
106
281
 
107
- // release was created
108
- if(service == address(0)) {
109
- revert ReleaseNotCreated();
282
+ // verify release in state DEPLOYING
283
+ if (!isValidTransition(RELEASE(), state, newState)) {
284
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
110
285
  }
111
286
 
112
287
  // release fully deployed
113
- if(_awaitingRegistration > 0) {
114
- revert ReleaseRegistrationNotFinished();
288
+ if(_registeredServices < _servicesToRegister) {
289
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
115
290
  }
116
291
 
117
- //setTargetClosed(service, false);
292
+ // release exists, registry service MUST exist
293
+ address service = _registry.getServiceAddress(REGISTRY(), version);
294
+ if(service == address(0)) {
295
+ revert ErrorReleaseManagerReleaseNotCreated(version);
296
+ }
118
297
 
119
298
  _latest = version;
299
+ _state[version] = newState;
120
300
 
121
- _active[service] = true;
122
- _valid[version] = true;
301
+ _releaseVersionByAddress[service] = version;
302
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
123
303
 
124
304
  emit LogReleaseActivation(version);
125
305
  }
126
306
 
127
- // TODO deploy proxy and initialize with given implementation instead of using given proxy?
128
- // IMPORTANT: MUST never be possible to create with access/release manager, token registry
129
- // callable once per release after release creation, can not register regular services while registry service is not registered
130
- function registerRegistryService(IRegistryService service)
307
+ /// @dev stop all operations with release services
308
+ function pauseRelease(VersionPart version)
131
309
  external
132
- restricted // GIF_MANAGER_ROLE
133
- returns(NftId nftId)
310
+ restricted // GIF_ADMIN_ROLE
134
311
  {
135
- if(!service.supportsInterface(type(IRegistryService).interfaceId)) {
136
- revert NotRegistryService();
137
- }
312
+ StateId state = _state[version];
313
+ StateId newState = PAUSED();
138
314
 
139
- // TODO unreliable! MUST guarantee the same authority -> how?
140
- address serviceAuthority = service.authority();
141
- if(serviceAuthority != authority()) {
142
- revert UnexpectedServiceAuthority(
143
- authority(),
144
- serviceAuthority);
315
+ // verify release in state ACTIVE
316
+ if (!isValidTransition(RELEASE(), state, newState)) {
317
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
145
318
  }
146
319
 
147
- IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
320
+ // TODO come up with a substitute
321
+ //_releaseAccessManager[version].disable();
148
322
 
149
- VersionPart majorVersion = _next;
150
- ObjectType domain = REGISTRY();
151
- _verifyService(service, majorVersion, domain);
152
- _createRelease(service.getFunctionConfigs());
153
-
154
- nftId = _registry.registerService(info, majorVersion, domain);
323
+ _state[version] = newState;
324
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
155
325
 
156
- // external call
157
- service.linkToRegisteredNftId();
326
+ emit LogReleaseDisabled(version);
158
327
  }
159
328
 
160
- // TODO adding service to release -> synchronized with proxy upgrades or simple addServiceToRelease(service, version, selector)?
161
- // TODO removing service from release? -> set _active to false forever, but keep all other records?
162
- function registerService(IService service)
329
+ // TODO consider revert if some delay is expired -> becomes disabled automatically
330
+ /// @dev resume operations with release services
331
+ function unpauseRelease(VersionPart version)
163
332
  external
164
- restricted // GIF_MANAGER_ROLE
165
- returns(NftId nftId)
333
+ restricted // GIF_ADMIN_ROLE
166
334
  {
167
- if(!service.supportsInterface(type(IService).interfaceId)) {
168
- revert NotService();
169
- }
335
+ StateId state = _state[version];
336
+ StateId newState = ACTIVE();
170
337
 
171
- IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
172
- VersionPart majorVersion = getNextVersion();
173
- ObjectType domain = _release[majorVersion].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
174
- _verifyService(service, majorVersion, domain);
175
-
176
- // setup and grant unique role if service does registrations
177
- bytes4[] memory selectors = _selectors[majorVersion][domain];
178
- address registryService = _registry.getServiceAddress(REGISTRY(), majorVersion);
179
- if(selectors.length > 0) {
180
- _accessManager.setAndGrantUniqueRole(
181
- address(service),
182
- registryService,
183
- selectors);
338
+ // verify release in state PAUSED
339
+ if (!isValidTransition(RELEASE(), state, newState)) {
340
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
184
341
  }
342
+
343
+ // TODO come up with a substitute
344
+ // _releaseAccessManager[version].enable();
185
345
 
186
- _awaitingRegistration--;
346
+ _state[version] = newState;
347
+ _releaseInfo[version].disabledAt = zeroTimestamp();
187
348
 
188
- nftId = _registry.registerService(info, majorVersion, domain);
349
+ emit LogReleaseEnabled(version);
350
+ }
351
+ /// @dev permanently disable release
352
+ function closeRelease(VersionPart version)
353
+ external
354
+ restricted // GIF_ADMIN_ROLE
355
+ {
356
+ StateId state = _state[version];
357
+ StateId newState = CLOSED();
189
358
 
190
- // external call
191
- service.linkToRegisteredNftId();
359
+ // verify release in state PAUSED
360
+ if (!isValidTransition(RELEASE(), state, newState)) {
361
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
362
+ }
363
+
364
+ _state[version] = newState;
365
+
366
+ emit LogReleaseClosed(version);
192
367
  }
193
368
 
194
369
  //--- view functions ----------------------------------------------------//
195
370
 
196
- function isActiveRegistryService(address service) external view returns(bool)
197
- {
198
- return _active[service];
371
+ function predictDeterministicAddress(
372
+ address implementation,
373
+ bytes32 salt,
374
+ address deployer
375
+ ) external pure returns (address predicted) {
376
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
199
377
  }
200
378
 
201
- function isValidRelease(VersionPart version) external view returns(bool)
202
- {
203
- return _valid[version];
379
+ function isActiveRegistryService(address service) external view returns(bool) {
380
+ VersionPart version = _releaseVersionByAddress[service];
381
+ return isActiveRelease(version);
204
382
  }
205
383
 
206
- function getRegistry() external view returns(address)
207
- {
208
- return (address(_registry));
384
+ function isActiveRelease(VersionPart version) public view returns(bool) {
385
+ return _releaseInfo[version].activatedAt.gtz();
209
386
  }
210
387
 
211
- function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
212
- {
213
- return _release[version];
388
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
389
+ return _releaseInfo[version];
214
390
  }
215
391
 
216
- function getNextVersion() public view returns(VersionPart)
217
- {
392
+ function getNextVersion() public view returns(VersionPart) {
218
393
  return _next;
219
394
  }
220
395
 
@@ -226,99 +401,123 @@ contract ReleaseManager is AccessManaged
226
401
  return _initial;
227
402
  }
228
403
 
404
+ function getState(VersionPart version) external view returns (StateId stateId) {
405
+ return _state[version];
406
+ }
407
+
408
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
409
+ return _servicesToRegister - _registeredServices;
410
+ }
411
+
412
+ // TODO cleanup
413
+ function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
414
+ // return _releaseAccessManager[version];
415
+ }
416
+
417
+ // TODO token registry knows nothing about adfmin, only registry
418
+ function getRegistryAdmin() external view returns (address) {
419
+ return address(_admin);
420
+ }
421
+
422
+ //--- IRegistryLinked ------------------------------------------------------//
423
+
424
+ function getRegistry() external view returns (IRegistry) {
425
+ return _registry;
426
+ }
427
+
229
428
  //--- private functions ----------------------------------------------------//
230
429
 
231
- function _getAndVerifyContractInfo(
232
- IService service,
233
- ObjectType expectedType,
234
- address expectedOwner // assume always valid, can not be 0
235
- )
430
+ function _verifyService(IService service)
236
431
  internal
237
- // view
432
+ view
238
433
  returns(
239
- IRegistry.ObjectInfo memory info
434
+ IRegistry.ObjectInfo memory serviceInfo,
435
+ ObjectType serviceDomain,
436
+ VersionPart serviceVersion
240
437
  )
241
438
  {
242
- info = service.getInitialInfo();
243
- info.objectAddress = address(service);
244
- info.isInterceptor = false; // service is never interceptor, at least now
245
-
246
- if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
247
- revert UnexpectedRegisterableType(expectedType, info.objectType);
439
+ if(!service.supportsInterface(type(IService).interfaceId)) {
440
+ revert ErrorReleaseManagerNotService(address(service));
248
441
  }
249
442
 
250
- address owner = info.initialOwner;
443
+ address owner = msg.sender;
444
+ address serviceAuthority = service.authority();
445
+ serviceVersion = service.getVersion().toMajorPart();
446
+ serviceDomain = service.getDomain();// checked in registry
447
+ serviceInfo = service.getInitialInfo();
251
448
 
252
- if(owner != expectedOwner) { // registerable owner protection
253
- revert NotRegisterableOwner(expectedOwner);
254
- }
449
+ _verifyServiceInfo(service, serviceInfo, owner);
255
450
 
256
- if(owner == address(service)) {
257
- revert SelfRegistration();
451
+ VersionPart releaseVersion = _next; // never 0
452
+ address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
453
+
454
+ // IMPORTANT: can not guarantee service access is actually controlled by authority
455
+ if(serviceAuthority != releaseAuthority) {
456
+ revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
457
+ service,
458
+ serviceAuthority,
459
+ releaseAuthority);
258
460
  }
259
-
260
- if(_registry.isRegistered(owner)) {
261
- revert RegisterableOwnerIsRegistered();
461
+
462
+ if(serviceVersion != releaseVersion) {
463
+ revert ErrorReleaseManagerServiceReleaseVersionMismatch(
464
+ service,
465
+ serviceVersion,
466
+ releaseVersion);
262
467
  }
263
468
  }
264
469
 
265
- function _verifyService(
470
+
471
+ function _verifyServiceInfo(
266
472
  IService service,
267
- VersionPart expectedVersion,
268
- ObjectType expectedDomain
473
+ IRegistry.ObjectInfo memory info,
474
+ address expectedOwner // assume always valid, can not be 0
269
475
  )
270
476
  internal
271
477
  view
272
- returns(ObjectType)
273
478
  {
274
- Version version = service.getVersion();
275
- VersionPart majorVersion = version.toMajorPart();
276
- if(majorVersion != expectedVersion) {
277
- revert UnexpectedServiceVersion(expectedVersion, majorVersion);
479
+ if(info.objectAddress != address(service)) {
480
+ revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
278
481
  }
279
482
 
280
- if(service.getDomain() != expectedDomain) {
281
- revert UnexpectedServiceDomain(expectedDomain, service.getDomain());
483
+ if(info.isInterceptor != false) { // service is never interceptor
484
+ revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
282
485
  }
283
486
 
284
- return expectedDomain;
487
+ if(info.objectType != SERVICE()) {
488
+ revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
489
+ }
490
+
491
+ address owner = info.initialOwner;
492
+
493
+ if(owner != expectedOwner) { // registerable owner protection
494
+ revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
495
+ }
496
+
497
+ if(owner == address(service)) {
498
+ revert ErrorReleaseManagerServiceSelfRegistration(service);
499
+ }
500
+
501
+ if(_registry.isRegistered(owner)) {
502
+ revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
503
+ }
285
504
  }
286
505
 
287
- // TODO check if registry supports types specified in the config array
288
- function _createRelease(IRegistryService.FunctionConfig[] memory config)
289
- internal
290
- {
291
- VersionPart version = getNextVersion();
506
+ /// @dev returns true iff a the address passes some simple proxy tests.
507
+ function _isRegistry(address registryAddress) internal view returns (bool) {
292
508
 
293
- if(config.length == 0) {
294
- revert ConfigMissing();
509
+ // zero address is certainly not registry
510
+ if (registryAddress == address(0)) {
511
+ return false;
295
512
  }
296
- // always in release
297
- _release[version].domains.push(REGISTRY());
298
- for(uint idx = 0; idx < config.length; idx++)
299
- {
300
- ObjectType domain = config[idx].serviceDomain;
301
- // not "registry service" / zero domain
302
- if(
303
- domain == REGISTRY() ||
304
- domain.eqz()
305
- ) { revert ConfigServiceDomainInvalid(idx, domain); }
306
-
307
- bytes4[] memory selectors = config[idx].selectors;
308
-
309
- // TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
310
- // no overwrite
311
- if(_selectors[version][domain].length > 0) {
312
- revert SelectorAlreadyExists(version, domain);
313
- }
314
-
315
- _selectors[version][domain] = selectors;
316
- _release[version].domains.push(domain);
513
+ // TODO try catch and return false in case of revert
514
+ // a just panic
515
+ // check if contract returns a zero nft id for its own address
516
+ if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
517
+ return false;
317
518
  }
318
- // TODO set when activated?
319
- _release[version].createdAt = TimestampLib.blockTimestamp();
320
- //_release[version].updatedAt = TimestampLib.blockTimestamp();
321
519
 
322
- _awaitingRegistration = config.length;
520
+ return true;
323
521
  }
324
522
  }
523
+