@etherisc/gif-next 0.0.2-f2df3e2-873 → 0.0.2-f347f00-614

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