@etherisc/gif-next 0.0.2-fd2113c-488 → 0.0.2-fd41099-706

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 (431) hide show
  1. package/README.md +30 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +17 -242
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +106 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +55 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -16
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +110 -76
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -91
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
  81. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +55 -55
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +40 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
  99. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
  102. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
  104. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
  106. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  108. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  110. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  111. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  112. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  114. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  115. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  116. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  118. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  120. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  123. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
  124. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  125. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
  127. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  129. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PricingService.sol/PricingService.json +58 -58
  131. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  133. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  134. package/artifacts/contracts/product/Product.sol/Product.json +13 -153
  135. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  137. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  140. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +40 -16
  141. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +4 -0
  142. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +1474 -0
  143. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +4 -0
  144. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +1876 -0
  145. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +4 -0
  146. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +974 -0
  147. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  148. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +40 -47
  149. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  150. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  151. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  152. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/Registry.sol/Registry.json +193 -81
  154. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +330 -378
  156. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  157. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  158. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  160. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  162. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  163. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1140 -0
  164. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  165. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  166. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  167. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  168. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  169. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  170. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +62 -86
  171. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -61
  173. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  174. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  176. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
  180. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  182. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  184. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  193. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  194. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  195. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  196. package/artifacts/contracts/shared/MainnetContract.sol/MainnetContract.dbg.json +4 -0
  197. package/artifacts/contracts/shared/MainnetContract.sol/MainnetContract.json +34 -0
  198. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  199. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  200. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  202. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  203. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  204. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  206. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  207. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  208. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  209. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  210. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  211. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  212. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
  215. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  216. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  217. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  218. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  219. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  221. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  223. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  225. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  227. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +145 -169
  229. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  230. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
  231. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  232. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  233. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Amount.sol/AmountLib.json +8 -8
  235. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  237. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  239. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  241. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  243. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  244. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  245. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  247. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  248. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  249. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  251. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  253. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  255. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  257. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  259. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  261. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  263. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  265. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  267. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  269. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  271. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  273. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  275. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  277. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  279. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  281. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  282. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  283. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  284. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  285. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  286. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  287. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  288. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  289. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -304
  290. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  291. package/contracts/authorization/Authorization.sol +218 -0
  292. package/contracts/authorization/IAccess.sol +48 -0
  293. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  294. package/contracts/authorization/IAuthorization.sol +54 -0
  295. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  296. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  297. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  298. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  299. package/contracts/distribution/BasicDistribution.sol +149 -0
  300. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  301. package/contracts/distribution/Distribution.sol +126 -104
  302. package/contracts/distribution/DistributionService.sol +12 -21
  303. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  304. package/contracts/distribution/IDistributionComponent.sol +17 -35
  305. package/contracts/distribution/IDistributionService.sol +5 -1
  306. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  307. package/contracts/instance/IInstance.sol +8 -9
  308. package/contracts/instance/IInstanceService.sol +13 -18
  309. package/contracts/instance/Instance.sol +61 -70
  310. package/contracts/instance/InstanceAdmin.sol +202 -267
  311. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  312. package/contracts/instance/InstanceReader.sol +22 -9
  313. package/contracts/instance/InstanceService.sol +74 -70
  314. package/contracts/instance/InstanceServiceManager.sol +2 -6
  315. package/contracts/instance/InstanceStore.sol +11 -4
  316. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  317. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  318. package/contracts/oracle/BasicOracle.sol +48 -0
  319. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  320. package/contracts/oracle/IOracle.sol +16 -0
  321. package/contracts/oracle/Oracle.sol +61 -49
  322. package/contracts/oracle/OracleServiceManager.sol +2 -5
  323. package/contracts/pool/BasicPool.sol +164 -0
  324. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  325. package/contracts/pool/BundleService.sol +14 -26
  326. package/contracts/pool/BundleServiceManager.sol +2 -5
  327. package/contracts/pool/IPoolComponent.sol +0 -60
  328. package/contracts/pool/Pool.sol +143 -131
  329. package/contracts/pool/PoolService.sol +11 -27
  330. package/contracts/pool/PoolServiceManager.sol +2 -5
  331. package/contracts/product/ApplicationService.sol +12 -36
  332. package/contracts/product/ApplicationServiceManager.sol +2 -2
  333. package/contracts/product/BasicProduct.sol +82 -0
  334. package/contracts/product/BasicProductAuthorization.sol +40 -0
  335. package/contracts/product/ClaimService.sol +5 -31
  336. package/contracts/product/ClaimServiceManager.sol +2 -2
  337. package/contracts/product/IProductComponent.sol +6 -9
  338. package/contracts/product/PolicyServiceManager.sol +2 -5
  339. package/contracts/product/PricingServiceManager.sol +2 -5
  340. package/contracts/product/Product.sol +103 -88
  341. package/contracts/product/ProductService.sol +7 -32
  342. package/contracts/product/ProductServiceManager.sol +2 -5
  343. package/contracts/registry/ChainNft.sol +37 -23
  344. package/contracts/registry/GlobalRegistry.sol +104 -0
  345. package/contracts/registry/GlobalRegistryAdmin.sol +38 -0
  346. package/contracts/registry/IGlobalRegistry.sol +17 -0
  347. package/contracts/registry/IRegistry.sol +25 -16
  348. package/contracts/registry/IRegistryService.sol +6 -6
  349. package/contracts/registry/Registry.sol +131 -148
  350. package/contracts/registry/RegistryAdmin.sol +242 -130
  351. package/contracts/registry/RegistryService.sol +4 -18
  352. package/contracts/registry/RegistryServiceManager.sol +2 -2
  353. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  354. package/contracts/registry/ReleaseRegistry.sol +533 -0
  355. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  356. package/contracts/registry/TokenRegistry.sol +2 -2
  357. package/contracts/shared/ComponentService.sol +20 -56
  358. package/contracts/shared/ComponentServiceManager.sol +2 -2
  359. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  360. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  361. package/contracts/shared/IKeyValueStore.sol +1 -0
  362. package/contracts/shared/ILifecycle.sol +1 -2
  363. package/contracts/shared/IService.sol +1 -1
  364. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  365. package/contracts/shared/KeyValueStore.sol +6 -2
  366. package/contracts/shared/Lifecycle.sol +16 -69
  367. package/contracts/shared/MainnetContract.sol +15 -0
  368. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  369. package/contracts/shared/Service.sol +3 -4
  370. package/contracts/staking/IStaking.sol +1 -2
  371. package/contracts/staking/IStakingService.sol +12 -5
  372. package/contracts/staking/Staking.sol +11 -14
  373. package/contracts/staking/StakingLifecycle.sol +23 -0
  374. package/contracts/staking/StakingManager.sol +2 -6
  375. package/contracts/staking/StakingReader.sol +12 -16
  376. package/contracts/staking/StakingServiceManager.sol +2 -2
  377. package/contracts/staking/StakingStore.sol +15 -23
  378. package/contracts/type/ObjectType.sol +37 -7
  379. package/contracts/type/RoleId.sol +55 -82
  380. package/contracts/type/UFixed.sol +6 -0
  381. package/contracts/type/Version.sol +3 -1
  382. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  383. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  384. package/package.json +6 -3
  385. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  386. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  387. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  388. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  389. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  390. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  391. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  392. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  393. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  394. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  395. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  396. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  397. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  398. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  399. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  400. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  401. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  402. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  403. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  404. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  405. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  406. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  407. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  408. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  409. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  410. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  411. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  412. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  413. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  414. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  415. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  416. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  417. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  418. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  419. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  420. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  421. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  422. package/contracts/registry/ReleaseManager.sol +0 -527
  423. package/contracts/shared/AccessManagerCustom.sol +0 -741
  424. package/contracts/shared/AccessManagerExtended.sol +0 -481
  425. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  426. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  427. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  428. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  429. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  430. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  431. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -0,0 +1,533 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
5
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
6
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
7
+ import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
8
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
9
+ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
10
+
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
+ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
14
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
15
+ import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
16
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
17
+ import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
18
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
19
+
20
+ import {IService} from "../shared/IService.sol";
21
+ import {ILifecycle} from "../shared/ILifecycle.sol";
22
+ import {INftOwnable} from "../shared/INftOwnable.sol";
23
+ import {IRegisterable} from "../shared/IRegisterable.sol";
24
+
25
+ import {IRegistry} from "./IRegistry.sol";
26
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
27
+ import {IRegistryService} from "./IRegistryService.sol";
28
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
29
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
30
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
31
+ import {Registry} from "./Registry.sol";
32
+ import {TokenRegistry} from "./TokenRegistry.sol";
33
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
34
+
35
+ // TODO rename to something that does not end with 'Manager'
36
+ // everywhere else *Manager points to an upgradeable contract
37
+ contract ReleaseRegistry is
38
+ AccessManaged,
39
+ ReleaseLifecycle,
40
+ IRegistryLinked
41
+ {
42
+ using ObjectTypeLib for ObjectType;
43
+
44
+ uint256 public constant INITIAL_GIF_VERSION = 3;
45
+
46
+ event LogReleaseCreation(VersionPart version, bytes32 salt);
47
+ event LogReleaseActivation(VersionPart version);
48
+ event LogReleaseDisabled(VersionPart version);
49
+ event LogReleaseEnabled(VersionPart version);
50
+
51
+ // constructor
52
+ error ErrorReleaseRegistryNotRegistry(Registry registry);
53
+
54
+ // createNextRelease
55
+ error ErrorReleaseRegistryReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
56
+
57
+ // prepareRelease
58
+ error ErrorReleaseRegistryReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
59
+ error ErrorReleaseRegistryReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
60
+ error ErrorReleaseRegistryVersionMismatch(VersionPart expected, VersionPart actual);
61
+ error ErrorReleaseRegistryNoDomains(VersionPart version);
62
+
63
+ // registerService
64
+ error ErrorReleaseRegistryNoServiceRegistrationExpected();
65
+ error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
66
+ error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
67
+ error ErrorReleaseRegistryNotService(address notService);
68
+ error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
69
+
70
+ // activateNextRelease
71
+ error ErrorReleaseRegistryReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
72
+ error ErrorReleaseRegistryReleaseNotCreated(VersionPart releaseVersion);
73
+ error ErrorReleaseRegistryReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
74
+ error ErrorReleaseRegistryReleaseAlreadyActivated(VersionPart releaseVersion);
75
+
76
+ // disableRelease
77
+ error ErrorReleaseRegistryReleaseNotActivated(VersionPart releaseVersion);
78
+ error ErrorReleaseRegistryReleaseAlreadyDisabled(VersionPart releaseVersion);
79
+
80
+ // _verifyService
81
+ error ErrorReleaseRegistryServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
82
+ error ErrorReleaseRegistryServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
83
+
84
+ // _verifyServiceInfo
85
+ error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
86
+ error ErrorReleaseRegistryServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
87
+ error ErrorReleaseRegistryServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
88
+ error ErrorReleaseRegistryServiceInfoOwnerInvalid(IService service, address expected, address found);
89
+ error ErrorReleaseRegistryServiceSelfRegistration(IService service);
90
+ error ErrorReleaseRegistryServiceOwnerRegistered(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
+ Registry public immutable _registry;
96
+ IRegisterable private _staking;
97
+ address private _stakingOwner;
98
+
99
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
100
+ mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
101
+
102
+ VersionPart private _initial;// first active version
103
+ VersionPart internal _latest; // latest active version
104
+ VersionPart internal _next; // version to create and activate
105
+ mapping(VersionPart verson => StateId releaseState) private _state;
106
+
107
+ uint256 internal _registeredServices;
108
+ uint256 internal _servicesToRegister;
109
+
110
+ constructor(Registry registry)
111
+ AccessManaged(msg.sender)
112
+ {
113
+ // TODO move this part to RegistryLinked constructor
114
+ if(!_isRegistry(address(registry))) {
115
+ revert ErrorReleaseRegistryNotRegistry(registry);
116
+ }
117
+
118
+ setAuthority(registry.getAuthority());
119
+
120
+ _registry = registry;
121
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
122
+
123
+ _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
124
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
125
+ }
126
+
127
+ /// @dev skips previous release if was not activated
128
+ /// sets next release into state SCHEDULED
129
+ function createNextRelease()
130
+ external
131
+ restricted() // GIF_ADMIN_ROLE
132
+ returns(VersionPart)
133
+ {
134
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
135
+ _servicesToRegister = 0;
136
+ _registeredServices = 0;
137
+ _state[_next] = getInitialState(RELEASE());
138
+
139
+ return _next;
140
+ }
141
+
142
+ function prepareNextRelease(
143
+ IServiceAuthorization serviceAuthorization,
144
+ bytes32 salt
145
+ )
146
+ external
147
+ restricted() // GIF_MANAGER_ROLE
148
+ returns(
149
+ address authority,
150
+ VersionPart version,
151
+ bytes32 releaseSalt
152
+ )
153
+ {
154
+ authority = _admin.authority();
155
+ version = _next;
156
+
157
+ // ensures unique salt
158
+ // TODO CreateX have clones capability also
159
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
160
+ releaseSalt = keccak256(
161
+ bytes.concat(
162
+ bytes32(version.toInt()),
163
+ salt));
164
+
165
+ // verify release in state SCHEDULED
166
+ if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
167
+ revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
168
+ }
169
+
170
+ _state[version] = DEPLOYING();
171
+
172
+ // verify authorizaion contract release matches with expected version
173
+ VersionPart releaseVersion = serviceAuthorization.getRelease();
174
+ if (releaseVersion != version) {
175
+ revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
176
+ }
177
+
178
+
179
+ // sanity check to ensure service domain list is not empty
180
+ uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
181
+ if (serviceDomainsCount == 0) {
182
+ revert ErrorReleaseRegistryNoDomains(version);
183
+ }
184
+
185
+ // verify prepareNextRelease is only called once per release
186
+ if(_servicesToRegister > 0) {
187
+ revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
188
+ }
189
+
190
+ _servicesToRegister = serviceDomainsCount;
191
+ _serviceAuthorization[version] = serviceAuthorization;
192
+
193
+ emit LogReleaseCreation(version, releaseSalt);
194
+ }
195
+
196
+ // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
197
+ function registerService(IService service)
198
+ external
199
+ restricted // GIF_MANAGER_ROLE
200
+ returns(NftId nftId)
201
+ {
202
+ VersionPart releaseVersion = _next;
203
+ StateId state = _state[releaseVersion];
204
+
205
+ // verify release in state DEPLOYING
206
+ if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
207
+ // TOOD name must represent failed state transition
208
+ revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
209
+ }
210
+
211
+ _state[releaseVersion] = DEPLOYING();
212
+
213
+ // not all services are registered
214
+ if (_servicesToRegister == _registeredServices) {
215
+ revert ErrorReleaseRegistryNoServiceRegistrationExpected();
216
+ }
217
+
218
+ // service can work with release manager
219
+ (
220
+ IRegistry.ObjectInfo memory info,
221
+ ObjectType serviceDomain,
222
+ VersionPart serviceVersion
223
+ ) = _verifyService(service);
224
+
225
+ // service domain matches defined in release config
226
+ ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
227
+ if (serviceDomain != expectedDomain) {
228
+ revert ErrorReleaseRegistryServiceDomainMismatch(expectedDomain, serviceDomain);
229
+ }
230
+
231
+ // TODO: service address matches defined in release config
232
+
233
+ // setup service authorization
234
+ _admin.authorizeService(
235
+ _serviceAuthorization[releaseVersion],
236
+ service,
237
+ serviceDomain,
238
+ releaseVersion);
239
+
240
+ // special roles for registry/staking/pool service
241
+ if (
242
+ serviceDomain == REGISTRY() ||
243
+ serviceDomain == STAKING() ||
244
+ serviceDomain == POOL())
245
+ {
246
+ _admin.grantServiceRoleForAllVersions(service, serviceDomain);
247
+ }
248
+
249
+ _registeredServices++;
250
+
251
+ // register service with registry
252
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
253
+ service.linkToRegisteredNftId();
254
+ }
255
+
256
+
257
+ function activateNextRelease()
258
+ external
259
+ restricted // GIF_ADMIN_ROLE
260
+ {
261
+ VersionPart version = _next;
262
+ StateId state = _state[version];
263
+ StateId newState = ACTIVE();
264
+
265
+ // verify release in state DEPLOYING
266
+ if (!isValidTransition(RELEASE(), state, newState)) {
267
+ revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
268
+ }
269
+
270
+ // release fully deployed
271
+ if(_registeredServices < _servicesToRegister) {
272
+ revert ErrorReleaseRegistryReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
273
+ }
274
+
275
+ // release exists, registry service MUST exist
276
+ address service = _registry.getServiceAddress(REGISTRY(), version);
277
+ if(service == address(0)) {
278
+ revert ErrorReleaseRegistryReleaseNotCreated(version);
279
+ }
280
+
281
+ _latest = version;
282
+ _state[version] = newState;
283
+
284
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
285
+
286
+ emit LogReleaseActivation(version);
287
+ }
288
+
289
+ /// @dev stop all operations with release services
290
+ function pauseRelease(VersionPart version)
291
+ external
292
+ restricted // GIF_ADMIN_ROLE
293
+ {
294
+ StateId state = _state[version];
295
+ StateId newState = PAUSED();
296
+
297
+ // verify release in state ACTIVE
298
+ if (!isValidTransition(RELEASE(), state, newState)) {
299
+ revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
300
+ }
301
+
302
+ _revokeReleaseRoles(version);
303
+
304
+ _state[version] = newState;
305
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
306
+
307
+ emit LogReleaseDisabled(version);
308
+ }
309
+
310
+ // TODO consider revert if some delay is expired -> becomes disabled automatically
311
+ /// @dev resume operations with release services
312
+ function unpauseRelease(VersionPart version)
313
+ external
314
+ restricted // GIF_ADMIN_ROLE
315
+ {
316
+ StateId state = _state[version];
317
+ StateId newState = ACTIVE();
318
+
319
+ // verify release in state PAUSED
320
+ if (!isValidTransition(RELEASE(), state, newState)) {
321
+ revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
322
+ }
323
+
324
+ _grantReleaseRoles(version);
325
+
326
+ _state[version] = newState;
327
+ _releaseInfo[version].disabledAt = zeroTimestamp();
328
+
329
+ emit LogReleaseEnabled(version);
330
+ }
331
+
332
+ //--- view functions ----------------------------------------------------//
333
+
334
+ function predictDeterministicAddress(
335
+ address implementation,
336
+ bytes32 salt,
337
+ address deployer
338
+ ) external pure returns (address predicted) {
339
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
340
+ }
341
+
342
+ function isActiveRelease(VersionPart version) public view returns(bool) {
343
+ return _state[version] == ACTIVE();
344
+ }
345
+
346
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
347
+ return _releaseInfo[version];
348
+ }
349
+
350
+ function getNextVersion() public view returns(VersionPart) {
351
+ return _next;
352
+ }
353
+
354
+ function getLatestVersion() external view returns(VersionPart) {
355
+ return _latest;
356
+ }
357
+
358
+ function getInitialVersion() external view returns(VersionPart) {
359
+ return _initial;
360
+ }
361
+
362
+ function getState(VersionPart version) external view returns (StateId stateId) {
363
+ return _state[version];
364
+ }
365
+
366
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
367
+ return _servicesToRegister - _registeredServices;
368
+ }
369
+
370
+ function getServiceAuthorization(VersionPart version)
371
+ external
372
+ view
373
+ returns (IServiceAuthorization serviceAuthorization)
374
+ {
375
+ return _serviceAuthorization[version];
376
+ }
377
+
378
+ function getRegistryAdmin() external view returns (address) {
379
+ return address(_admin);
380
+ }
381
+
382
+ //--- IRegistryLinked ------------------------------------------------------//
383
+
384
+ function getRegistry() external view returns (IRegistry) {
385
+ return _registry;
386
+ }
387
+
388
+ //--- private functions ----------------------------------------------------//
389
+
390
+ function _revokeReleaseRoles(VersionPart version)
391
+ private
392
+ {
393
+ address service;
394
+ ObjectType domain;
395
+
396
+ ObjectType[] memory domains = _serviceAuthorization[version].getServiceDomains();
397
+ for(uint idx = 0; idx < domains.length; idx++)
398
+ {
399
+ domain = domains[idx];
400
+ service = _registry.getServiceAddress(domain, version);
401
+ _admin.revokeServiceRole(IService(service), domain, version);
402
+
403
+ // special roles for registry/staking/pool service
404
+ if(
405
+ domain == REGISTRY() ||
406
+ domain == STAKING() ||
407
+ domain == POOL()
408
+ )
409
+ {
410
+ _admin.revokeServiceRoleForAllVersions(IService(service), domain);
411
+ }
412
+ }
413
+ }
414
+
415
+ function _grantReleaseRoles(VersionPart version)
416
+ private
417
+ {
418
+ address service;
419
+ ObjectType domain;
420
+
421
+ // TODO consider getting domains from local store
422
+ ObjectType[] memory domains = _serviceAuthorization[version].getServiceDomains();
423
+ for(uint idx = 0; idx < domains.length; idx++)
424
+ {
425
+ domain = domains[idx];
426
+ service = _registry.getServiceAddress(domain, version);
427
+ _admin.grantServiceRole(IService(service), domain, version);
428
+
429
+ // special roles for registry/staking/pool service
430
+ if(
431
+ domain == REGISTRY() ||
432
+ domain == STAKING() ||
433
+ domain == POOL()
434
+ )
435
+ {
436
+ _admin.grantServiceRoleForAllVersions(IService(service), domain);
437
+ }
438
+ }
439
+ }
440
+
441
+ function _verifyService(IService service)
442
+ internal
443
+ view
444
+ returns(
445
+ IRegistry.ObjectInfo memory serviceInfo,
446
+ ObjectType serviceDomain,
447
+ VersionPart serviceVersion
448
+ )
449
+ {
450
+ if(!service.supportsInterface(type(IService).interfaceId)) {
451
+ revert ErrorReleaseRegistryNotService(address(service));
452
+ }
453
+
454
+ address owner = msg.sender;
455
+ address serviceAuthority = service.authority();
456
+ serviceVersion = service.getVersion().toMajorPart();
457
+ serviceDomain = service.getDomain();// checked in registry
458
+ serviceInfo = service.getInitialInfo();
459
+
460
+ _verifyServiceInfo(service, serviceInfo, owner);
461
+
462
+ VersionPart releaseVersion = _next; // never 0
463
+ address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
464
+
465
+ // IMPORTANT: can not guarantee service access is actually controlled by authority
466
+ if(serviceAuthority != expectedAuthority) {
467
+ revert ErrorReleaseRegistryServiceReleaseAuthorityMismatch(
468
+ service,
469
+ serviceAuthority,
470
+ expectedAuthority);
471
+ }
472
+
473
+ if(serviceVersion != releaseVersion) {
474
+ revert ErrorReleaseRegistryServiceReleaseVersionMismatch(
475
+ service,
476
+ serviceVersion,
477
+ releaseVersion);
478
+ }
479
+ }
480
+
481
+
482
+ function _verifyServiceInfo(
483
+ IService service,
484
+ IRegistry.ObjectInfo memory info,
485
+ address expectedOwner // assume always valid, can not be 0
486
+ )
487
+ internal
488
+ view
489
+ {
490
+ if(info.objectAddress != address(service)) {
491
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, address(service));
492
+ }
493
+
494
+ if(info.isInterceptor != false) { // service is never interceptor
495
+ revert ErrorReleaseRegistryServiceInfoInterceptorInvalid(service, info.isInterceptor);
496
+ }
497
+
498
+ if(info.objectType != SERVICE()) {
499
+ revert ErrorReleaseRegistryServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
500
+ }
501
+
502
+ address owner = info.initialOwner;
503
+
504
+ if(owner != expectedOwner) { // registerable owner protection
505
+ revert ErrorReleaseRegistryServiceInfoOwnerInvalid(service, expectedOwner, owner);
506
+ }
507
+
508
+ if(owner == address(service)) {
509
+ revert ErrorReleaseRegistryServiceSelfRegistration(service);
510
+ }
511
+
512
+ if(_registry.isRegistered(owner)) {
513
+ revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
514
+ }
515
+ }
516
+
517
+ /// @dev returns true iff a the address passes some simple proxy tests.
518
+ function _isRegistry(address registryAddress) internal view returns (bool) {
519
+
520
+ // zero address is certainly not registry
521
+ if (registryAddress == address(0)) {
522
+ return false;
523
+ }
524
+ // TODO try catch and return false in case of revert or just panic
525
+ // check if contract returns a zero nft id for its own address
526
+ if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
527
+ return false;
528
+ }
529
+
530
+ return true;
531
+ }
532
+ }
533
+
@@ -6,7 +6,7 @@ import {
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
8
  import {ComponentService} from "../shared/ComponentService.sol";
9
- import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
9
+ import {IAccess} from "../authorization/IAccess.sol";
10
10
  import {IBundleService} from "../pool/IBundleService.sol";
11
11
  import {IDistributionService} from "../distribution/IDistributionService.sol";
12
12
  import {InstanceService} from "../instance/InstanceService.sol";
@@ -14,7 +14,7 @@ import {IInstanceService} from "../instance/IInstanceService.sol";
14
14
  import {IPoolService} from "../pool/IPoolService.sol";
15
15
  import {IStakingService} from "../staking/IStakingService.sol";
16
16
  import {IRegistryService} from "./IRegistryService.sol";
17
- import {ServiceAuthorization} from "./ServiceAuthorization.sol";
17
+ import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
18
18
 
19
19
 
20
20
  contract ServiceAuthorizationV3
@@ -64,19 +64,19 @@ contract ServiceAuthorizationV3
64
64
  function _setupIRegistryServiceAuthorization()
65
65
  internal
66
66
  {
67
- IAccessAdmin.Function[] storage functions;
67
+ IAccess.FunctionInfo[] storage functions;
68
68
 
69
69
  functions = _authorizeForService(REGISTRY(), APPLICATION());
70
70
  _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
71
71
 
72
- functions = _authorizeForService(REGISTRY(), POOL());
73
- _authorize(functions, IRegistryService.registerPool.selector, "registerPool");
72
+ // functions = _authorizeForService(REGISTRY(), POOL());
73
+ // _authorize(functions, IRegistryService.registerPool.selector, "registerPool");
74
74
 
75
75
  functions = _authorizeForService(REGISTRY(), BUNDLE());
76
76
  _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
77
77
 
78
78
  functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
79
- _authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
79
+ // _authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
80
80
  _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
81
81
 
82
82
  functions = _authorizeForService(REGISTRY(), COMPONENT());
@@ -88,8 +88,8 @@ contract ServiceAuthorizationV3
88
88
  functions = _authorizeForService(REGISTRY(), STAKING());
89
89
  _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
90
90
 
91
- functions = _authorizeForService(REGISTRY(), PRODUCT());
92
- _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
91
+ // functions = _authorizeForService(REGISTRY(), PRODUCT());
92
+ // _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
93
93
  }
94
94
 
95
95
 
@@ -98,7 +98,7 @@ contract ServiceAuthorizationV3
98
98
  function _setupStakingServiceAuthorization()
99
99
  internal
100
100
  {
101
- IAccessAdmin.Function[] storage functions;
101
+ IAccess.FunctionInfo[] storage functions;
102
102
 
103
103
  functions = _authorizeForService(STAKING(), INSTANCE());
104
104
  _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
@@ -121,10 +121,10 @@ contract ServiceAuthorizationV3
121
121
  function _setupInstanceServiceAuthorization()
122
122
  internal
123
123
  {
124
- IAccessAdmin.Function[] storage functions;
124
+ IAccess.FunctionInfo[] storage functions;
125
125
 
126
126
  functions = _authorizeForService(INSTANCE(), COMPONENT());
127
- _authorize(functions, IInstanceService.createComponentTarget.selector, "createComponentTarget");
127
+ _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
128
128
  }
129
129
 
130
130
 
@@ -159,7 +159,7 @@ contract ServiceAuthorizationV3
159
159
  function _setupDistributionServiceAuthorization()
160
160
  internal
161
161
  {
162
- IAccessAdmin.Function[] storage functions;
162
+ IAccess.FunctionInfo[] storage functions;
163
163
 
164
164
  functions = _authorizeForService(DISTRIBUTION(), POLICY());
165
165
  _authorize(functions, IDistributionService.processSale.selector, "processSale");
@@ -170,7 +170,7 @@ contract ServiceAuthorizationV3
170
170
  function _setupPoolServiceAuthorization()
171
171
  internal
172
172
  {
173
- IAccessAdmin.Function[] storage functions;
173
+ IAccess.FunctionInfo[] storage functions;
174
174
 
175
175
  functions = _authorizeForService(POOL(), POLICY());
176
176
  _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
@@ -187,7 +187,7 @@ contract ServiceAuthorizationV3
187
187
  function _setupBundleServiceAuthorization()
188
188
  internal
189
189
  {
190
- IAccessAdmin.Function[] storage functions;
190
+ IAccess.FunctionInfo[] storage functions;
191
191
 
192
192
  functions = _authorizeForService(BUNDLE(), POOL());
193
193
  _authorize(functions, IBundleService.create.selector, "create");
@@ -12,7 +12,7 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
12
12
 
13
13
  import {IRegistry} from "./IRegistry.sol";
14
14
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
15
- import {ReleaseManager} from "./ReleaseManager.sol";
15
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
16
16
  import {RegistryAdmin} from "./RegistryAdmin.sol";
17
17
 
18
18
 
@@ -49,7 +49,7 @@ contract TokenRegistry is
49
49
  TokenInfo [] internal _token;
50
50
 
51
51
  IRegistry internal _registry;
52
- ReleaseManager internal _releaseManager;
52
+ ReleaseRegistry internal _releaseRegistry;
53
53
  IERC20Metadata internal _dipToken;
54
54
 
55
55
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)