@etherisc/gif-next 0.0.2-b13fcec-949 → 0.0.2-b147315-239

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 (583) hide show
  1. package/README.md +17 -86
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +254 -157
  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 +202 -96
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +126 -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 +279 -1961
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +257 -55
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +431 -2735
  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 +762 -340
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +358 -171
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +128 -71
  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 +10 -118
  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/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +221 -192
  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 -266
  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 +218 -145
  69. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  70. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +288 -88
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  72. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  73. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  74. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +298 -89
  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/IPolicyService.sol/IPolicyService.json → product/IApplicationService.sol/IApplicationService.json} +174 -202
  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/product/IPolicyService.sol/IPolicyService.json +720 -0
  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} +146 -153
  95. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  96. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  97. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  98. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +80 -64
  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 -77
  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 +372 -97
  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 +790 -102
  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 +144 -80
  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} +100 -113
  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 +180 -54
  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 +96 -19
  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 +103 -21
  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 +20 -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 -55
  300. package/contracts/instance/InstanceService.sol +259 -315
  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 +5 -13
  309. package/contracts/instance/module/IBundle.sol +8 -9
  310. package/contracts/instance/module/IComponents.sol +22 -5
  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/pool/IBundleService.sol +106 -0
  324. package/contracts/{components → pool}/IPoolComponent.sol +17 -18
  325. package/contracts/pool/IPoolService.sol +150 -0
  326. package/contracts/{components → pool}/Pool.sol +57 -57
  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 +39 -37
  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 +73 -90
  353. package/contracts/registry/RegistryServiceManager.sol +21 -30
  354. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  355. package/contracts/registry/ReleaseManager.sol +371 -192
  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 -27
  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 +14 -7
  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 +47 -22
  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 +33 -24
  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 -1311
  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 -968
  454. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  455. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  456. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  457. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  458. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  459. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  460. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  461. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  462. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  463. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  464. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  465. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  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/IClaimService.sol/IClaimService.json +0 -409
  472. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  473. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  474. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  475. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -428
  476. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  477. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  479. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  481. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  483. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  485. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  487. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  489. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  490. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  491. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  492. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  493. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  494. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  495. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  496. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  497. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  498. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  499. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  500. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  501. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  502. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  503. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  504. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  505. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  506. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  507. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  508. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  509. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  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 -257
  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 -251
  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 -522
  547. package/contracts/instance/base/ComponentService.sol +0 -134
  548. package/contracts/instance/base/KeyValueStore.sol +0 -175
  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 -336
  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 -467
  557. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  558. package/contracts/instance/service/IBundleService.sol +0 -62
  559. package/contracts/instance/service/IClaimService.sol +0 -61
  560. package/contracts/instance/service/IPoolService.sol +0 -35
  561. package/contracts/instance/service/IProductService.sol +0 -40
  562. package/contracts/instance/service/PolicyService.sol +0 -403
  563. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  564. package/contracts/instance/service/PoolService.sol +0 -220
  565. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  566. package/contracts/instance/service/ProductService.sol +0 -241
  567. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  568. package/contracts/registry/RegistryAccessManager.sol +0 -216
  569. package/contracts/shared/ContractDeployerLib.sol +0 -72
  570. package/contracts/test/TestFee.sol +0 -25
  571. package/contracts/test/TestRegisterable.sol +0 -18
  572. package/contracts/test/TestRoleId.sol +0 -14
  573. package/contracts/test/TestService.sol +0 -25
  574. package/contracts/test/TestVersion.sol +0 -44
  575. package/contracts/test/TestVersionable.sol +0 -17
  576. package/contracts/test/Usdc.sol +0 -26
  577. package/contracts/types/ChainId.sol +0 -38
  578. package/contracts/types/NumberId.sol +0 -52
  579. package/contracts/types/ObjectType.sol +0 -157
  580. package/contracts/types/RoleId.sol +0 -97
  581. /package/contracts/{types → type}/DistributorType.sol +0 -0
  582. /package/contracts/{types → type}/Key32.sol +0 -0
  583. /package/contracts/{types → type}/UFixed.sol +0 -0
@@ -1,220 +1,373 @@
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 {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} 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);
26
48
 
49
+ // constructor
50
+ error ErrorReleaseManagerNotRegistry(Registry registry);
51
+
27
52
  // createNextRelease
28
- error NotRegistryService();
29
- error UnexpectedServiceAuthority(address expected, address found);
53
+ error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
54
+
55
+ // prepareRelease
56
+ error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
57
+ error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
58
+ error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
59
+ error ErrorReleaseManagerNoDomains(VersionPart version);
30
60
 
31
61
  // registerService
32
- error NotService();
62
+ error ErrorReleaseManagerNoServiceRegistrationExpected();
63
+ error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
64
+ error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
65
+ error ErrorReleaseManagerNotService(address notService);
66
+ error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
33
67
 
34
68
  // activateNextRelease
35
- error ReleaseNotCreated();
36
- error ReleaseRegistrationNotFinished();
69
+ error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
70
+ error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
71
+ error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
72
+ error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
37
73
 
38
- // _getAndVerifyContractInfo
39
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
40
- error NotRegisterableOwner(address notOwner);
41
- error SelfRegistration();
42
- error RegisterableOwnerIsRegistered();
74
+ // disableRelease
75
+ error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
76
+ error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
43
77
 
44
78
  // _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);
79
+ error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
80
+ error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
53
81
 
82
+ // _verifyServiceInfo
83
+ error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
84
+ error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
85
+ error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
86
+ error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
87
+ error ErrorReleaseManagerServiceSelfRegistration(IService service);
88
+ error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
54
89
 
55
- RegistryAccessManager private immutable _accessManager;
56
- IRegistry private immutable _registry;
90
+ Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
57
91
 
58
- VersionPart immutable _initial;// first active version
59
- VersionPart _latest;// latest active version
60
- VersionPart _next;// version to create and activate
92
+ RegistryAdmin private _admin;
93
+ address public _releaseAccessManagerCodeAddress;
94
+ Registry private _registry;
61
95
 
62
- mapping(VersionPart version => IRegistry.ReleaseInfo info) _release;
96
+ // TODO remove once it's clear that release authority will always be registry authority
97
+ mapping(VersionPart version => address authority) internal _releaseAccessManager;
98
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
99
+ mapping(address registryService => VersionPart version) _releaseVersionByAddress;
63
100
 
64
- mapping(VersionPart version => mapping(ObjectType serviceDomain => bytes4[])) _selectors; // registry service function selector assigned to domain
101
+ mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
65
102
 
66
- uint _awaitingRegistration; // "services left to register" counter
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;
67
107
 
68
- mapping(address registryService => bool isActive) _active;
108
+ uint256 internal _registeredServices;
109
+ uint256 internal _servicesToRegister;
69
110
 
70
- mapping(VersionPart version => bool isValid) _valid; // TODO refactor to use _active only
71
-
72
- constructor(
73
- RegistryAccessManager accessManager,
74
- VersionPart initialVersion)
75
- AccessManaged(accessManager.authority())
111
+ constructor(Registry registry)
112
+ AccessManaged(msg.sender)
76
113
  {
77
- require(initialVersion.toInt() > 0, "ReleaseManager: initial version is 0");
114
+ // TODO move this part to RegistryLinked constructor
115
+ if(!_isRegistry(address(registry))) {
116
+ revert ErrorReleaseManagerNotRegistry(registry);
117
+ }
78
118
 
79
- _accessManager = accessManager;
119
+ setAuthority(registry.getAuthority());
80
120
 
81
- _initial = initialVersion;
82
- _next = initialVersion;
121
+ _registry = registry;
122
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
83
123
 
84
- _registry = new Registry();
124
+ _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
125
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
126
+
127
+ //AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
128
+ //masterReleaseAccessManager.initialize(address(this));
129
+ //masterReleaseAccessManager.disable();
130
+ //_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
85
131
  }
86
132
 
87
133
  /// @dev skips previous release if was not activated
134
+ /// sets next release into state SCHEDULED
88
135
  function createNextRelease()
89
136
  external
90
- restricted // GIF_ADMIN_ROLE
137
+ restricted() // GIF_ADMIN_ROLE
138
+ returns(VersionPart)
91
139
  {
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;
140
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
141
+ _servicesToRegister = 0;
142
+ _registeredServices = 0;
143
+ _state[_next] = getInitialState(RELEASE());
96
144
 
97
- emit LogReleaseCreation(_next);
145
+ return _next;
98
146
  }
99
147
 
100
- function activateNextRelease()
101
- external
102
- restricted // GIF_ADMIN_ROLE
148
+ function prepareNextRelease(
149
+ IServiceAuthorization serviceAuthorization,
150
+ bytes32 salt
151
+ )
152
+ external
153
+ restricted() // GIF_MANAGER_ROLE
154
+ returns(
155
+ address authority,
156
+ VersionPart version,
157
+ bytes32 releaseSalt
158
+ )
103
159
  {
104
- VersionPart version = _next;
105
- address service = _registry.getServiceAddress(REGISTRY(), version);
106
-
107
- // release was created
108
- if(service == address(0)) {
109
- revert ReleaseNotCreated();
160
+ (
161
+ VersionPart releaseVersion,
162
+ uint serviceDomainsCount
163
+ ) = serviceAuthorization.getRelease();
164
+
165
+ // verify authorizaion contract release matches with expected version
166
+ if (releaseVersion != _next) {
167
+ revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
110
168
  }
111
169
 
112
- // release fully deployed
113
- if(_awaitingRegistration > 0) {
114
- revert ReleaseRegistrationNotFinished();
170
+ // sanity check to ensure service domain list is not empty
171
+ if (serviceDomainsCount == 0) {
172
+ revert ErrorReleaseManagerNoDomains(_next);
115
173
  }
116
174
 
117
- //setTargetClosed(service, false);
175
+ version = _next;
176
+ StateId state = _state[version];
177
+ StateId newState = DEPLOYING();
118
178
 
119
- _latest = version;
179
+ // verify release manager is in proper state to start deploying a next release
180
+ if (!isValidTransition(RELEASE(), state, newState)) {
181
+ revert ErrorReleaseManagerReleasePreparationDisallowed(version, state);
182
+ }
120
183
 
121
- _active[service] = true;
122
- _valid[version] = true;
184
+ // verify prepareNextRelease is only called once per release
185
+ if(_servicesToRegister > 0) {
186
+ revert ErrorReleaseManagerReleaseAlreadyPrepared(version, state);
187
+ }
123
188
 
124
- emit LogReleaseActivation(version);
189
+ // ensures unique salt
190
+ // TODO CreateX have clones capability also
191
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
192
+ releaseSalt = keccak256(
193
+ bytes.concat(
194
+ bytes32(version.toInt()),
195
+ salt));
196
+
197
+ authority = _admin.authority();
198
+ _serviceAuthorization[_next] = serviceAuthorization;
199
+ _releaseAccessManager[_next] = authority;
200
+ _servicesToRegister = serviceDomainsCount;
201
+ _state[version] = newState;
202
+
203
+ emit LogReleaseCreation(version, releaseSalt, authority);
125
204
  }
126
205
 
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)
206
+ // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
207
+ function registerService(IService service)
131
208
  external
132
209
  restricted // GIF_MANAGER_ROLE
133
210
  returns(NftId nftId)
134
211
  {
135
- if(!service.supportsInterface(type(IRegistryService).interfaceId)) {
136
- revert NotRegistryService();
212
+ VersionPart releaseVersion = _next;
213
+ StateId state = _state[releaseVersion];
214
+
215
+ // release in state DEPLOYING
216
+ if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
217
+ // TOOD name must represent failed state transition
218
+ revert ErrorReleaseManagerServiceRegistrationDisallowed(state);
137
219
  }
138
220
 
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);
221
+ // not all services are registered
222
+ if (_servicesToRegister == _registeredServices) {
223
+ revert ErrorReleaseManagerNoServiceRegistrationExpected();
145
224
  }
146
225
 
147
- IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
226
+ // service can work with release manager
227
+ (
228
+ IRegistry.ObjectInfo memory info,
229
+ ObjectType serviceDomain,
230
+ VersionPart serviceVersion
231
+ ) = _verifyService(service);
232
+
233
+ // service domain matches defined in release config
234
+ ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
235
+ if (serviceDomain != expectedDomain) {
236
+ revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
237
+ }
148
238
 
149
- VersionPart version = _next;
150
- ObjectType domain = REGISTRY();
151
- _verifyService(service, version, domain);
152
- _createRelease(service.getFunctionConfigs());
153
-
154
- nftId = _registry.registerService(info, version, domain);
239
+ // service address matches defined in release config
240
+ // TODO uncomment when release addresses calculations are ready
241
+ /*address expectedAddress = _serviceAuthorization[releaseVersion].getServiceAddress(expectedDomain);
242
+ if(address(service) != expectedAddress) {
243
+ //revert ErrorReleaseManagerServiceAddressMismatch(expectedAddress, address(service));
244
+ }*/
245
+
246
+ // checked in registry
247
+ _releaseInfo[releaseVersion].domains.push(serviceDomain);
248
+
249
+ _state[releaseVersion] = DEPLOYING();
250
+ _registeredServices++;
251
+
252
+ // setup service authorization
253
+ _admin.authorizeService(
254
+ _serviceAuthorization[releaseVersion],
255
+ service);
256
+
257
+ // TODO consider to extend this to REGISTRY
258
+ // special roles for registry/staking/pool service
259
+ if (serviceDomain == STAKING() || serviceDomain == POOL()) {
260
+ // TODO rename to grantServiceDomainRole()
261
+ _admin.grantServiceRoleForAllVersions(service, serviceDomain);
262
+ }
155
263
 
156
- // external call
264
+ // register service with registry
265
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
157
266
  service.linkToRegisteredNftId();
158
267
  }
159
268
 
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)
269
+
270
+ function activateNextRelease()
271
+ external
272
+ restricted // GIF_ADMIN_ROLE
273
+ {
274
+ VersionPart version = _next;
275
+ StateId state = _state[version];
276
+ StateId newState = ACTIVE();
277
+
278
+ if (!isValidTransition(RELEASE(), state, newState)) {
279
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
280
+ }
281
+
282
+ // release fully deployed
283
+ if(_registeredServices < _servicesToRegister) {
284
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
285
+ }
286
+
287
+ // release exists, registry service MUST exist
288
+ address service = _registry.getServiceAddress(REGISTRY(), version);
289
+ if(service == address(0)) {
290
+ revert ErrorReleaseManagerReleaseNotCreated(version);
291
+ }
292
+
293
+ // release is not activated -> redundant with state transition check
294
+ /*if(_releaseInfo[version].activatedAt.gtz()) {
295
+ revert ErrorReleaseManagerReleaseAlreadyActivated(version);
296
+ }*/
297
+
298
+ _latest = version;
299
+ _state[version] = newState;
300
+
301
+ _releaseVersionByAddress[service] = version;
302
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
303
+
304
+ emit LogReleaseActivation(version);
305
+ }
306
+
307
+ // release becomes disabled after delay expiration (can be reenabled before that)
308
+ function disableRelease(VersionPart version, Seconds disableDelay)
163
309
  external
164
- restricted // GIF_MANAGER_ROLE
165
- returns(NftId nftId)
310
+ restricted // GIF_ADMIN_ROLE
166
311
  {
167
- if(!service.supportsInterface(type(IService).interfaceId)) {
168
- revert NotService();
312
+ // TODO add state check / change -> check with matthias branch?
313
+ // release was activated
314
+ if(_releaseInfo[version].activatedAt.eqz()) {
315
+ revert ErrorReleaseManagerReleaseNotActivated(version);
169
316
  }
170
317
 
171
- IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
172
- VersionPart version = getNextVersion();
173
- ObjectType domain = _release[version].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
174
- _verifyService(service, version, domain);
175
-
176
- // setup and grant unique role if service does registrations
177
- bytes4[] memory selectors = _selectors[version][domain];
178
- address registryService = _registry.getServiceAddress(REGISTRY(), version);
179
- if(selectors.length > 0) {
180
- _accessManager.setAndGrantUniqueRole(
181
- address(service),
182
- registryService,
183
- selectors);
318
+ // release not disabled already
319
+ if(_releaseInfo[version].disabledAt.gtz()) {
320
+ revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
184
321
  }
185
-
186
- _awaitingRegistration--;
187
322
 
188
- nftId = _registry.registerService(info, version, domain);
323
+ disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
324
+
325
+ // TODO come up with a substitute
326
+ //_releaseAccessManager[version].disable();
189
327
 
190
- // external call
191
- service.linkToRegisteredNftId();
328
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
329
+ }
330
+
331
+ function enableRelease(VersionPart version)
332
+ external
333
+ restricted // GIF_ADMIN_ROLE
334
+ {
335
+ // release was disabled
336
+ //if(_releaseInfo[version].disabledAt.eqz()) {
337
+ // revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
338
+ //}
339
+
340
+ // reverts if disable delay expired
341
+ // TODO come up with a substitute
342
+ // _releaseAccessManager[version].enable();
343
+
344
+ _releaseInfo[version].disabledAt = zeroTimestamp();
192
345
  }
193
346
 
194
347
  //--- view functions ----------------------------------------------------//
195
348
 
196
- function isActiveRegistryService(address service) external view returns(bool)
197
- {
198
- return _active[service];
349
+ function predictDeterministicAddress(
350
+ address implementation,
351
+ bytes32 salt,
352
+ address deployer
353
+ ) external pure returns (address predicted) {
354
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
199
355
  }
200
356
 
201
- function isValidRelease(VersionPart version) external view returns(bool)
202
- {
203
- return _valid[version];
357
+ function isActiveRegistryService(address service) external view returns(bool) {
358
+ VersionPart version = _releaseVersionByAddress[service];
359
+ return isActiveRelease(version);
204
360
  }
205
361
 
206
- function getRegistry() external view returns(address)
207
- {
208
- return (address(_registry));
362
+ function isActiveRelease(VersionPart version) public view returns(bool) {
363
+ return _releaseInfo[version].activatedAt.gtz();
209
364
  }
210
365
 
211
- function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
212
- {
213
- return _release[version];
366
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
367
+ return _releaseInfo[version];
214
368
  }
215
369
 
216
- function getNextVersion() public view returns(VersionPart)
217
- {
370
+ function getNextVersion() public view returns(VersionPart) {
218
371
  return _next;
219
372
  }
220
373
 
@@ -226,97 +379,123 @@ contract ReleaseManager is AccessManaged
226
379
  return _initial;
227
380
  }
228
381
 
382
+ function getState(VersionPart version) external view returns (StateId stateId) {
383
+ return _state[version];
384
+ }
385
+
386
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
387
+ return _servicesToRegister - _registeredServices;
388
+ }
389
+
390
+ // TODO cleanup
391
+ function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
392
+ // return _releaseAccessManager[version];
393
+ }
394
+
395
+ // TODO token registry knows nothing about adfmin, only registry
396
+ function getRegistryAdmin() external view returns (address) {
397
+ return address(_admin);
398
+ }
399
+
400
+ //--- IRegistryLinked ------------------------------------------------------//
401
+
402
+ function getRegistry() external view returns (IRegistry) {
403
+ return _registry;
404
+ }
405
+
229
406
  //--- private functions ----------------------------------------------------//
230
407
 
231
- function _getAndVerifyContractInfo(
232
- IService service,
233
- ObjectType expectedType,
234
- address expectedOwner // assume always valid, can not be 0
235
- )
408
+ function _verifyService(IService service)
236
409
  internal
237
- // view
410
+ view
238
411
  returns(
239
- IRegistry.ObjectInfo memory info
412
+ IRegistry.ObjectInfo memory serviceInfo,
413
+ ObjectType serviceDomain,
414
+ VersionPart serviceVersion
240
415
  )
241
416
  {
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);
417
+ if(!service.supportsInterface(type(IService).interfaceId)) {
418
+ revert ErrorReleaseManagerNotService(address(service));
248
419
  }
249
420
 
250
- address owner = info.initialOwner;
421
+ address owner = msg.sender;
422
+ address serviceAuthority = service.authority();
423
+ serviceVersion = service.getVersion().toMajorPart();
424
+ serviceDomain = service.getDomain();// checked in registry
425
+ serviceInfo = service.getInitialInfo();
251
426
 
252
- if(owner != expectedOwner) { // registerable owner protection
253
- revert NotRegisterableOwner(expectedOwner);
254
- }
427
+ _verifyServiceInfo(service, serviceInfo, owner);
255
428
 
256
- if(owner == address(service)) {
257
- revert SelfRegistration();
429
+ VersionPart releaseVersion = _next; // never 0
430
+ address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
431
+
432
+ // IMPORTANT: can not guarantee service access is actually controlled by authority
433
+ if(serviceAuthority != releaseAuthority) {
434
+ revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
435
+ service,
436
+ serviceAuthority,
437
+ releaseAuthority);
258
438
  }
259
-
260
- if(_registry.isRegistered(owner)) {
261
- revert RegisterableOwnerIsRegistered();
439
+
440
+ if(serviceVersion != releaseVersion) {
441
+ revert ErrorReleaseManagerServiceReleaseVersionMismatch(
442
+ service,
443
+ serviceVersion,
444
+ releaseVersion);
262
445
  }
263
446
  }
264
447
 
265
- function _verifyService(
448
+
449
+ function _verifyServiceInfo(
266
450
  IService service,
267
- VersionPart expectedVersion,
268
- ObjectType expectedDomain
451
+ IRegistry.ObjectInfo memory info,
452
+ address expectedOwner // assume always valid, can not be 0
269
453
  )
270
454
  internal
271
455
  view
272
- returns(ObjectType)
273
456
  {
274
- if(service.getMajorVersion() != expectedVersion) {
275
- revert UnexpectedServiceVersion(expectedVersion, service.getMajorVersion());
457
+ if(info.objectAddress != address(service)) {
458
+ revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
276
459
  }
277
460
 
278
- if(service.getDomain() != expectedDomain) {
279
- revert UnexpectedServiceDomain(expectedDomain, service.getDomain());
461
+ if(info.isInterceptor != false) { // service is never interceptor
462
+ revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
280
463
  }
281
464
 
282
- return expectedDomain;
465
+ if(info.objectType != SERVICE()) {
466
+ revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
467
+ }
468
+
469
+ address owner = info.initialOwner;
470
+
471
+ if(owner != expectedOwner) { // registerable owner protection
472
+ revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
473
+ }
474
+
475
+ if(owner == address(service)) {
476
+ revert ErrorReleaseManagerServiceSelfRegistration(service);
477
+ }
478
+
479
+ if(_registry.isRegistered(owner)) {
480
+ revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
481
+ }
283
482
  }
284
483
 
285
- // TODO check if registry supports types specified in the config array
286
- function _createRelease(IRegistryService.FunctionConfig[] memory config)
287
- internal
288
- {
289
- VersionPart version = getNextVersion();
484
+ /// @dev returns true iff a the address passes some simple proxy tests.
485
+ function _isRegistry(address registryAddress) internal view returns (bool) {
290
486
 
291
- if(config.length == 0) {
292
- revert ConfigMissing();
487
+ // zero address is certainly not registry
488
+ if (registryAddress == address(0)) {
489
+ return false;
293
490
  }
294
- // always in release
295
- _release[version].domains.push(REGISTRY());
296
- for(uint idx = 0; idx < config.length; idx++)
297
- {
298
- ObjectType domain = config[idx].serviceDomain;
299
- // not "registry service" / zero domain
300
- if(
301
- domain == REGISTRY() ||
302
- domain.eqz()
303
- ) { revert ConfigServiceDomainInvalid(idx, domain); }
304
-
305
- bytes4[] memory selectors = config[idx].selectors;
306
-
307
- // 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
308
- // no overwrite
309
- if(_selectors[version][domain].length > 0) {
310
- revert SelectorAlreadyExists(version, domain);
311
- }
312
-
313
- _selectors[version][domain] = selectors;
314
- _release[version].domains.push(domain);
491
+ // TODO try catch and return false in case of revert
492
+ // a just panic
493
+ // check if contract returns a zero nft id for its own address
494
+ if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
495
+ return false;
315
496
  }
316
- // TODO set when activated?
317
- _release[version].createdAt = TimestampLib.blockTimestamp();
318
- //_release[version].updatedAt = TimestampLib.blockTimestamp();
319
497
 
320
- _awaitingRegistration = config.length;
498
+ return true;
321
499
  }
322
500
  }
501
+