@etherisc/gif-next 0.0.2-676522f-203 → 0.0.2-683d8b2-607

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 (475) 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/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +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 +29 -254
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +138 -93
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +66 -58
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +75 -150
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +45 -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 +64 -84
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -146
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1214 -280
  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 +230 -65
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +221 -106
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +53 -49
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +260 -137
  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/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  82. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  84. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  86. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  88. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  90. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  92. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  94. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +95 -58
  96. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +54 -42
  98. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +13 -0
  100. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -206
  102. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +28 -0
  104. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/Pool.sol/Pool.json +18 -314
  106. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +77 -41
  108. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +43 -39
  110. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +72 -35
  112. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +48 -36
  114. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  116. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  118. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +112 -67
  120. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +68 -52
  122. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
  124. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
  126. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
  128. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
  130. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +17 -46
  132. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
  134. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +90 -45
  136. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +57 -41
  138. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.json +98 -61
  140. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +61 -49
  142. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  143. package/artifacts/contracts/product/Product.sol/Product.json +24 -164
  144. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
  146. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +39 -31
  148. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +40 -16
  150. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +4 -0
  151. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +1487 -0
  152. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +4 -0
  153. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +1876 -0
  154. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +4 -0
  155. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +974 -0
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +40 -60
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -183
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  161. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  162. package/artifacts/contracts/registry/Registry.sol/Registry.json +182 -88
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1599 -153
  165. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +50 -13
  167. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +38 -26
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1140 -0
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +22 -4
  177. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  178. package/artifacts/contracts/shared/Component.sol/Component.json +11 -11
  179. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +89 -77
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +53 -57
  183. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
  185. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +4 -4
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +20 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +17 -4
  193. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -15
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +24 -64
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -99
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  210. package/artifacts/contracts/shared/MainnetContract.sol/MainnetContract.dbg.json +4 -0
  211. package/artifacts/contracts/shared/MainnetContract.sol/MainnetContract.json +34 -0
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +13 -0
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +114 -117
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +215 -70
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +102 -44
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +179 -182
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +44 -44
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +223 -21
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +264 -134
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +42 -46
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +771 -216
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +95 -18
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  306. package/contracts/authorization/AccessAdmin.sol +590 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +149 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  318. package/contracts/distribution/Distribution.sol +126 -104
  319. package/contracts/distribution/DistributionService.sol +15 -25
  320. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  321. package/contracts/distribution/IDistributionComponent.sol +17 -35
  322. package/contracts/distribution/IDistributionService.sol +5 -1
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  324. package/contracts/instance/IInstance.sol +20 -13
  325. package/contracts/instance/IInstanceService.sol +34 -23
  326. package/contracts/instance/Instance.sol +108 -89
  327. package/contracts/instance/InstanceAdmin.sol +202 -266
  328. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  329. package/contracts/instance/InstanceReader.sol +52 -12
  330. package/contracts/instance/InstanceService.sol +159 -78
  331. package/contracts/instance/InstanceServiceManager.sol +2 -6
  332. package/contracts/instance/InstanceStore.sol +38 -22
  333. package/contracts/instance/base/BalanceStore.sol +11 -6
  334. package/contracts/instance/base/Cloneable.sol +2 -25
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  338. package/contracts/oracle/BasicOracle.sol +48 -0
  339. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  340. package/contracts/oracle/IOracle.sol +36 -0
  341. package/contracts/oracle/IOracleComponent.sol +32 -0
  342. package/contracts/oracle/IOracleService.sol +65 -0
  343. package/contracts/oracle/Oracle.sol +157 -0
  344. package/contracts/oracle/OracleService.sol +278 -0
  345. package/contracts/oracle/OracleServiceManager.sol +39 -0
  346. package/contracts/pool/BasicPool.sol +164 -0
  347. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  348. package/contracts/pool/BundleService.sol +32 -44
  349. package/contracts/pool/BundleServiceManager.sol +2 -5
  350. package/contracts/pool/IPoolComponent.sol +0 -60
  351. package/contracts/pool/IPoolService.sol +3 -0
  352. package/contracts/pool/Pool.sol +143 -131
  353. package/contracts/pool/PoolService.sol +45 -33
  354. package/contracts/pool/PoolServiceManager.sol +2 -5
  355. package/contracts/product/ApplicationService.sol +17 -41
  356. package/contracts/product/ApplicationServiceManager.sol +2 -2
  357. package/contracts/product/BasicProduct.sol +82 -0
  358. package/contracts/product/BasicProductAuthorization.sol +40 -0
  359. package/contracts/product/ClaimService.sol +16 -37
  360. package/contracts/product/ClaimServiceManager.sol +2 -2
  361. package/contracts/product/IClaimService.sol +6 -0
  362. package/contracts/product/IProductComponent.sol +6 -9
  363. package/contracts/product/PolicyService.sol +8 -6
  364. package/contracts/product/PolicyServiceManager.sol +2 -5
  365. package/contracts/product/PricingService.sol +7 -8
  366. package/contracts/product/PricingServiceManager.sol +2 -5
  367. package/contracts/product/Product.sol +103 -88
  368. package/contracts/product/ProductService.sol +12 -37
  369. package/contracts/product/ProductServiceManager.sol +2 -5
  370. package/contracts/registry/ChainNft.sol +37 -22
  371. package/contracts/registry/GlobalRegistry.sol +89 -0
  372. package/contracts/registry/GlobalRegistryAdmin.sol +38 -0
  373. package/contracts/registry/IGlobalRegistry.sol +17 -0
  374. package/contracts/registry/IRegistry.sol +25 -18
  375. package/contracts/registry/IRegistryService.sol +6 -6
  376. package/contracts/registry/Registry.sol +129 -150
  377. package/contracts/registry/RegistryAdmin.sol +358 -150
  378. package/contracts/registry/RegistryService.sol +9 -23
  379. package/contracts/registry/RegistryServiceManager.sol +2 -7
  380. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  381. package/contracts/registry/ReleaseRegistry.sol +533 -0
  382. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  383. package/contracts/registry/TokenRegistry.sol +9 -52
  384. package/contracts/shared/Component.sol +8 -13
  385. package/contracts/shared/ComponentService.sol +45 -60
  386. package/contracts/shared/ComponentServiceManager.sol +2 -2
  387. package/contracts/shared/ComponentVerifyingService.sol +13 -7
  388. package/contracts/shared/IComponent.sol +3 -7
  389. package/contracts/shared/IComponentService.sol +11 -0
  390. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  391. package/contracts/shared/IKeyValueStore.sol +2 -1
  392. package/contracts/shared/ILifecycle.sol +1 -2
  393. package/contracts/shared/IService.sol +8 -1
  394. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  395. package/contracts/shared/KeyValueStore.sol +7 -6
  396. package/contracts/shared/Lifecycle.sol +16 -60
  397. package/contracts/shared/MainnetContract.sol +15 -0
  398. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  399. package/contracts/shared/Service.sol +27 -22
  400. package/contracts/staking/IStaking.sol +41 -26
  401. package/contracts/staking/IStakingService.sol +42 -44
  402. package/contracts/staking/StakeManagerLib.sol +101 -26
  403. package/contracts/staking/Staking.sol +139 -125
  404. package/contracts/staking/StakingLifecycle.sol +23 -0
  405. package/contracts/staking/StakingManager.sol +2 -6
  406. package/contracts/staking/StakingReader.sol +73 -36
  407. package/contracts/staking/StakingService.sol +121 -86
  408. package/contracts/staking/StakingServiceManager.sol +2 -3
  409. package/contracts/staking/StakingStore.sol +401 -127
  410. package/contracts/staking/TargetManagerLib.sol +28 -0
  411. package/contracts/type/Amount.sol +15 -1
  412. package/contracts/type/NftId.sol +8 -8
  413. package/contracts/type/ObjectType.sol +171 -69
  414. package/contracts/type/RequestId.sol +75 -0
  415. package/contracts/type/RoleId.sol +103 -72
  416. package/contracts/type/Seconds.sol +10 -0
  417. package/contracts/type/Selector.sol +102 -0
  418. package/contracts/type/StateId.sol +12 -0
  419. package/contracts/type/String.sol +53 -0
  420. package/contracts/type/Timestamp.sol +6 -2
  421. package/contracts/type/UFixed.sol +6 -0
  422. package/contracts/type/Version.sol +3 -1
  423. package/contracts/{shared → upgradeability}/ProxyManager.sol +4 -5
  424. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  425. package/package.json +8 -5
  426. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  427. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  428. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  429. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -204
  430. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  431. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  432. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  433. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  434. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  435. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  436. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  437. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  438. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  439. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  440. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  441. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  442. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  443. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  444. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  445. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  446. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  447. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  448. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  449. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  450. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  451. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  452. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  453. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  454. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  455. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  456. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  457. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  458. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
  459. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
  460. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
  461. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
  462. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -349
  463. package/contracts/registry/ReleaseManager.sol +0 -596
  464. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  465. package/contracts/shared/AccessManagerCustom.sol +0 -736
  466. package/contracts/shared/AccessManagerExtended.sol +0 -470
  467. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  468. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  469. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  470. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  471. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  472. package/contracts/staking/IStakingManager.sol +0 -15
  473. package/contracts/staking/IStakingStore.sol +0 -130
  474. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  475. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,596 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
5
- import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
6
- import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
7
- import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
8
- import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
9
- import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
10
-
11
- import {NftId} from "../type/NftId.sol";
12
- import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
- import {ObjectType, ObjectTypeLib, zeroObjectType, 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";
19
-
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";
25
-
26
- import {IRegistry} from "./IRegistry.sol";
27
- import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
28
- import {IRegistryService} from "./IRegistryService.sol";
29
- import {RegistryAdmin} from "./RegistryAdmin.sol";
30
- import {Registry} from "./Registry.sol";
31
- import {TokenRegistry} from "./TokenRegistry.sol";
32
- import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
33
-
34
-
35
- contract ReleaseManager is
36
- AccessManaged,
37
- ILifecycle,
38
- IRegistryLinked
39
- {
40
- using ObjectTypeLib for ObjectType;
41
-
42
- uint256 public constant INITIAL_GIF_VERSION = 3;
43
-
44
- event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerExtendedWithDisableInitializeable accessManager);
45
- event LogReleaseActivation(VersionPart version);
46
-
47
- // constructor
48
- error ErrorReleaseManagerNotRegistry(Registry registry);
49
-
50
- // createNextRelease
51
- error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
52
-
53
- // prepareRelease
54
- error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
55
- error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
56
-
57
- // register staking
58
- //error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
59
-
60
- // registerService
61
- error ErrorReleaseManagerNoServiceRegistrationExpected();
62
- error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
63
- error ErrorReleaseManagerNotService(IService service);
64
- error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
65
-
66
- // activateNextRelease
67
- error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
68
- error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
69
- error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
70
- error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
71
-
72
- // disableRelease
73
- error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
74
- error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
75
-
76
- // _verifyService
77
- error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
78
- error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
79
-
80
- // _verifyServiceInfo
81
- error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
82
- error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
83
- error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
84
- error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
85
- error ErrorReleaseManagerServiceSelfRegistration(IService service);
86
- error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
87
-
88
- // _verifyReleaseAuthorizations
89
- error ErrorReleaseManagerReleaseEmpty();
90
- error ErrorReleaseManagerReleaseServiceRoleInvalid(uint serviceIdx, address service, RoleId role);
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
- mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
101
- mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
102
- mapping(address registryService => VersionPart version) _releaseVersionByAddress;
103
-
104
- VersionPart immutable internal _initial;// first active version
105
- VersionPart internal _latest; // latest active version
106
- VersionPart internal _next; // version to create and activate
107
- StateId internal _state; // current state of release manager
108
-
109
- uint256 internal _awaitingRegistration; // "services left to register" counter
110
-
111
- // deployer of this contract must be gif admin
112
- constructor(Registry registry)
113
- AccessManaged(msg.sender)
114
- {
115
- // TODO move this part to RegistryLinked constructor
116
- if(!_isRegistry(address(registry))) {
117
- revert ErrorReleaseManagerNotRegistry(registry);
118
- }
119
-
120
- _registry = registry;
121
- setAuthority(_registry.getAuthority());
122
- _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
123
-
124
- _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
125
- _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
126
- _state = getInitialState(RELEASE());
127
-
128
- AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
129
- masterReleaseAccessManager.initialize(_registry.NFT_LOCK_ADDRESS(), VersionLib.toVersionPart(0));
130
- //masterReleaseAccessManager.disable();
131
- _releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
132
- }
133
-
134
- /// @dev skips previous release if was not activated
135
- /// sets release manager into state SCHEDULED
136
- function createNextRelease()
137
- external
138
- restricted() // GIF_ADMIN_ROLE
139
- returns(VersionPart version)
140
- {
141
- if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
142
- revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
143
- }
144
-
145
- _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
146
- _awaitingRegistration = 0;
147
- _state = SCHEDULED();
148
- }
149
-
150
- // TODO order of events
151
- function prepareNextRelease(
152
- address[] memory addresses,
153
- string[] memory names,
154
- RoleId[][] memory serviceRoles,
155
- string[][] memory serviceRoleNames,
156
- RoleId[][] memory functionRoles,
157
- string[][] memory functionRoleNames,
158
- bytes4[][][] memory selectors,
159
- bytes32 salt
160
- )
161
- external
162
- restricted() // GIF_MANAGER_ROLE
163
- returns(
164
- address releaseAccessManagerAddress,
165
- VersionPart version,
166
- bytes32 releaseSalt
167
- )
168
- {
169
- version = getNextVersion();
170
-
171
- // ensures unique salt
172
- releaseSalt = keccak256(
173
- bytes.concat(
174
- bytes32(version.toInt()),
175
- salt));
176
-
177
- releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
178
- AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
179
- releaseAccessManager.initialize(address(this), version);
180
-
181
- if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
182
- revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
183
- }
184
-
185
- _verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
186
-
187
- if(_awaitingRegistration > 0) {
188
- revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
189
- }
190
-
191
- _releaseInfo[version].version = version;
192
- _releaseInfo[version].salt = releaseSalt;
193
- _releaseInfo[version].addresses = addresses;
194
- _releaseInfo[version].names = names;
195
- _releaseInfo[version].serviceRoles = serviceRoles;
196
- _releaseInfo[version].serviceRoleNames = serviceRoleNames;
197
- _releaseInfo[version].functionRoles = functionRoles;
198
- _releaseInfo[version].functionRoleNames = functionRoleNames;
199
- _releaseInfo[version].selectors = selectors;
200
- _awaitingRegistration = addresses.length;
201
- _state = DEPLOYING();
202
- _releaseAccessManager[version] = releaseAccessManager;
203
-
204
- emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
205
- }
206
-
207
-
208
- function registerService(IService service)
209
- external
210
- restricted // GIF_MANAGER_ROLE
211
- returns(NftId nftId)
212
- {
213
- if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
214
- revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
215
- }
216
-
217
- (
218
- IRegistry.ObjectInfo memory info,
219
- ObjectType domain,
220
- VersionPart version
221
- ) = _verifyService(service);
222
-
223
- // redundant with state var
224
- if (_awaitingRegistration == 0) {
225
- revert ErrorReleaseManagerNoServiceRegistrationExpected();
226
- }
227
-
228
- uint serviceIdx = _awaitingRegistration - 1;
229
- address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
230
- // TODO temp, while typescript addresses computation is not implemented
231
- /*if(address(service) != serviceAddress) {
232
- revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
233
- }*/
234
-
235
- _setServiceAuthorizations(
236
- _releaseAccessManager[version],
237
- // TODO temp, while typescript addresses computation is not implemented
238
- address(service),//serviceAddress,
239
- _releaseInfo[version].names[serviceIdx],
240
- _releaseInfo[version].serviceRoles[serviceIdx],
241
- _releaseInfo[version].serviceRoleNames[serviceIdx],
242
- _releaseInfo[version].functionRoles[serviceIdx],
243
- _releaseInfo[version].functionRoleNames[serviceIdx],
244
- _releaseInfo[version].selectors[serviceIdx]);
245
-
246
- // TODO decide for one of the approaches
247
- // // service to service authorization
248
- // ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
249
- // for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
250
- // _accessManager.setTargetFunctionRole(
251
- // address(service),
252
- // authz.authorizedSelectors[idx],
253
- // authz.authorizedRole[idx]);
254
- // }
255
-
256
- _awaitingRegistration = serviceIdx;
257
- // TODO end state depends on (_awaitingRegistration == 0)
258
- _state = DEPLOYING();
259
-
260
- // checked in registry
261
- _releaseInfo[version].domains.push(domain);
262
-
263
- nftId = _registry.registerService(info, version, domain);
264
-
265
- service.linkToRegisteredNftId();
266
- }
267
-
268
-
269
- function activateNextRelease()
270
- external
271
- restricted // GIF_ADMIN_ROLE
272
- {
273
- if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
274
- revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
275
- }
276
-
277
- VersionPart version = _next;
278
- address service = _registry.getServiceAddress(REGISTRY(), version);
279
-
280
- // release exists, registry service is a MUST
281
- //if(_releaseAccessManager[version] == address(0)) {
282
- if(service == address(0)) {
283
- revert ErrorReleaseManagerReleaseNotCreated(version);
284
- }
285
-
286
- // release fully deployed
287
- if(_awaitingRegistration > 0) {
288
- revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
289
- }
290
-
291
- // release is not activated
292
- if(_releaseInfo[version].activatedAt.gtz()) {
293
- revert ErrorReleaseManagerReleaseAlreadyActivated(version);
294
- }
295
-
296
- _latest = version;
297
- _state = ACTIVE();
298
-
299
- _releaseVersionByAddress[service] = version;
300
- _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
301
-
302
- emit LogReleaseActivation(version);
303
- }
304
-
305
- // release becomes disabled after delay expiration (can be reenabled before that)
306
- function disableRelease(VersionPart version, Seconds disableDelay)
307
- external
308
- restricted // GIF_ADMIN_ROLE
309
- {
310
- // release was activated
311
- if(_releaseInfo[version].activatedAt.eqz()) {
312
- revert ErrorReleaseManagerReleaseNotActivated(version);
313
- }
314
-
315
- // release not disabled already
316
- if(_releaseInfo[version].disabledAt.gtz()) {
317
- revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
318
- }
319
-
320
- disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
321
-
322
- _releaseAccessManager[version].disable(disableDelay);
323
-
324
- _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
325
- }
326
-
327
- function enableRelease(VersionPart version)
328
- external
329
- restricted // GIF_ADMIN_ROLE
330
- {
331
- // release was disabled
332
- //if(_releaseInfo[version].disabledAt.eqz()) {
333
- // revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
334
- //}
335
-
336
- // reverts if disable delay expired
337
- _releaseAccessManager[version].enable();
338
-
339
- _releaseInfo[version].disabledAt = zeroTimestamp();
340
- }
341
-
342
- //--- view functions ----------------------------------------------------//
343
-
344
- function predictDeterministicAddress(
345
- address implementation,
346
- bytes32 salt,
347
- address deployer
348
- ) external pure returns (address predicted) {
349
- return Clones.predictDeterministicAddress(implementation, salt, deployer);
350
- }
351
-
352
- function isActiveRegistryService(address service) external view returns(bool) {
353
- VersionPart version = _releaseVersionByAddress[service];
354
- return isActiveRelease(version);
355
- }
356
-
357
- function isActiveRelease(VersionPart version) public view returns(bool) {
358
- return _releaseInfo[version].activatedAt.gtz();
359
- }
360
-
361
- function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
362
- return _releaseInfo[version];
363
- }
364
-
365
- function getNextVersion() public view returns(VersionPart) {
366
- return _next;
367
- }
368
-
369
- function getLatestVersion() external view returns(VersionPart) {
370
- return _latest;
371
- }
372
-
373
- function getInitialVersion() external view returns(VersionPart) {
374
- return _initial;
375
- }
376
-
377
- function getState() external view returns (StateId stateId) {
378
- return _state;
379
- }
380
-
381
- function getRemainingServicesToRegister() external view returns (uint256 services) {
382
- return _awaitingRegistration;
383
- }
384
-
385
- function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
386
- return _releaseAccessManager[version];
387
- }
388
- // TODO tokenr registry knows nothing about adfmin, only registry
389
- function getRegistryAdmin() external view returns (address) {
390
- return address(_admin);
391
- }
392
-
393
- //--- IRegistryLinked ------------------------------------------------------//
394
-
395
- function getRegistry() external view returns (IRegistry) {
396
- return _registry;
397
- }
398
-
399
- //--- ILifecycle -----------------------------------------------------------//
400
-
401
- function hasLifecycle(ObjectType objectType) external view returns (bool) { return objectType == RELEASE(); }
402
-
403
- function getInitialState(ObjectType objectType) public view returns (StateId stateId) {
404
- if (objectType == RELEASE()) {
405
- stateId = INITIAL();
406
- }
407
- }
408
-
409
- function isValidTransition(
410
- ObjectType objectType,
411
- StateId fromId,
412
- StateId toId
413
- )
414
- public
415
- view
416
- returns (bool isValid)
417
- {
418
- if (objectType != RELEASE()) { return false; }
419
-
420
- if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
421
- if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
422
- if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
423
- if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
424
- if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
425
-
426
- return false;
427
- }
428
-
429
- //--- private functions ----------------------------------------------------//
430
-
431
- function _verifyService(IService service)
432
- internal
433
- returns(
434
- IRegistry.ObjectInfo memory serviceInfo,
435
- ObjectType serviceDomain,
436
- VersionPart serviceVersion
437
- )
438
- {
439
- if(!service.supportsInterface(type(IService).interfaceId)) {
440
- revert ErrorReleaseManagerNotService(service);
441
- }
442
-
443
- address owner = msg.sender;
444
- address serviceAuthority = service.authority();
445
- serviceVersion = service.getVersion().toMajorPart();
446
- serviceDomain = service.getDomain();// checked in registry
447
- serviceInfo = service.getInitialInfo();
448
-
449
- _verifyServiceInfo(service, serviceInfo, owner);
450
-
451
- VersionPart releaseVersion = getNextVersion(); // never 0
452
- address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
453
-
454
- // IMPORTANT: can not guarantee service access is actually controlled by authority
455
- if(serviceAuthority != releaseAuthority) {
456
- revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
457
- service,
458
- serviceAuthority,
459
- releaseAuthority);
460
- }
461
-
462
- if(serviceVersion != releaseVersion) {
463
- revert ErrorReleaseManagerServiceReleaseVersionMismatch(
464
- service,
465
- serviceVersion,
466
- releaseVersion);
467
- }
468
- }
469
-
470
-
471
- function _verifyServiceInfo(
472
- IService service,
473
- IRegistry.ObjectInfo memory info,
474
- address expectedOwner // assume always valid, can not be 0
475
- )
476
- internal
477
- view
478
- {
479
- if(info.objectAddress != address(service)) {
480
- revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
481
- }
482
-
483
- if(info.isInterceptor != false) { // service is never interceptor
484
- revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
485
- }
486
-
487
- if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
488
- revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
489
- }
490
-
491
- address owner = info.initialOwner;
492
-
493
- if(owner != expectedOwner) { // registerable owner protection
494
- revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
495
- }
496
-
497
- if(owner == address(service)) {
498
- revert ErrorReleaseManagerServiceSelfRegistration(service);
499
- }
500
-
501
- if(_registry.isRegistered(owner)) {
502
- revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
503
- }
504
- }
505
-
506
-
507
- function _verifyReleaseAuthorizations(
508
- address[] memory serviceAddress,
509
- RoleId[][] memory serviceRoles,
510
- RoleId[][] memory functionRoles,
511
- bytes4[][][] memory selectors
512
- )
513
- internal
514
- view
515
- {
516
- if(serviceAddress.length == 0) {
517
- revert ErrorReleaseManagerReleaseEmpty();
518
- }
519
-
520
- for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
521
- {
522
- for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
523
- {
524
- RoleId role = serviceRoles[serviceIdx][roleIdx];
525
- if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
526
- revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
527
- }
528
- }
529
- }
530
-
531
- // TODO no duplicate service "domain" role per release
532
- // TODO no duplicate service roles per service
533
- // TODO no duplicate service function roles per service
534
- // TODO no duplicate service function selectors per service
535
- }
536
-
537
- function _setServiceAuthorizations(
538
- AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
539
- address serviceAddress,
540
- string memory serviceName,
541
- RoleId[] memory serviceRoles,
542
- string[] memory serviceRoleNames,
543
- RoleId[] memory functionRoles,
544
- string[] memory functionRoleNames,
545
- bytes4[][] memory selectors
546
- )
547
- internal
548
- {
549
- accessManager.createTarget(serviceAddress, serviceName);
550
-
551
- for(uint idx = 0; idx < functionRoles.length; idx++)
552
- {
553
- uint64 roleInt = functionRoles[idx].toInt();
554
-
555
- if(!accessManager.isRoleExists(roleInt)) {
556
- accessManager.createRole(roleInt, functionRoleNames[idx]);
557
- }
558
-
559
- accessManager.setTargetFunctionRole(
560
- serviceAddress,
561
- selectors[idx],
562
- functionRoles[idx].toInt());
563
- }
564
-
565
- for(uint idx = 0; idx < serviceRoles.length; idx++)
566
- {
567
- uint64 roleInt = serviceRoles[idx].toInt();
568
-
569
- if(!accessManager.isRoleExists(roleInt)) {
570
- accessManager.createRole(roleInt, serviceRoleNames[idx]);
571
- }
572
-
573
- accessManager.grantRole(
574
- serviceRoles[idx].toInt(),
575
- serviceAddress,
576
- 0);
577
- }
578
- }
579
-
580
- // returns true iff a the address passes some simple proxy tests.
581
- function _isRegistry(address registryAddress) internal view returns (bool) {
582
-
583
- // zero address is certainly not registry
584
- if (registryAddress == address(0)) {
585
- return false;
586
- }
587
- // TODO try catch and return false in case of revert
588
- // a just panic
589
- // check if contract returns a zero nft id for its own address
590
- if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
591
- return false;
592
- }
593
-
594
- return true;
595
- }
596
- }