@etherisc/gif-next 0.0.2-e016345-525 → 0.0.2-e04dbfc-031

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 (465) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +137 -58
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +37 -31
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +83 -3
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +449 -248
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  12. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +222 -21
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +348 -184
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +100 -13
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +83 -129
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +207 -33
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -81
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +283 -181
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +74 -60
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +33 -68
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +155 -68
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +92 -42
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +188 -46
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +248 -191
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +207 -33
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +149 -131
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +207 -33
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -45
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +113 -47
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +188 -46
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +305 -150
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +207 -33
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +88 -45
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +139 -28
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +100 -7
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -53
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +672 -320
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +188 -46
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +374 -197
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +113 -83
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -38
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +422 -352
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +96 -53
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +68 -38
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +189 -35
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +38 -8
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -22
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -68
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +42 -36
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -21
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +188 -46
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +118 -201
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +50 -64
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -80
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -8
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -21
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +472 -0
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +265 -278
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +86 -56
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +139 -50
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -112
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +207 -33
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +260 -187
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +72 -74
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +69 -3
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -68
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -99
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +215 -187
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +727 -0
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +68 -66
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +122 -78
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +48 -42
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +157 -112
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +131 -81
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +46 -28
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +26 -2
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +548 -429
  192. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  193. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +22 -24
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +324 -54
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  208. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Component.sol/Component.json +51 -21
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +96 -138
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +44 -50
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +113 -4
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -8
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +28 -45
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -8
  228. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  229. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  230. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  234. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  237. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  238. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  239. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +51 -21
  241. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  243. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  245. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  247. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  249. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  251. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  253. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  254. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  259. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  261. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +112 -17
  263. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -6
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +191 -74
  267. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  268. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  269. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  271. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +56 -32
  273. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +30 -57
  275. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +185 -54
  277. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -29
  279. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +143 -129
  281. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  282. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +33 -23
  283. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  284. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  286. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  289. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  291. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  293. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  295. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  296. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  297. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  299. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  300. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  301. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  303. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  305. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  307. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  309. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +30 -6
  311. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  313. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  316. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  318. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  322. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  324. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  326. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  328. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  329. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  330. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +4 -4
  331. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  333. package/contracts/accounting/AccountingService.sol +43 -26
  334. package/contracts/accounting/AccountingServiceManager.sol +1 -1
  335. package/contracts/accounting/IAccountingService.sol +3 -0
  336. package/contracts/authorization/AccessAdmin.sol +293 -205
  337. package/contracts/authorization/AccessAdminLib.sol +183 -0
  338. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  339. package/contracts/authorization/Authorization.sol +307 -231
  340. package/contracts/authorization/IAccessAdmin.sol +69 -36
  341. package/contracts/authorization/IAuthorization.sol +21 -1
  342. package/contracts/distribution/BasicDistribution.sol +12 -8
  343. package/contracts/distribution/BasicDistributionAuthorization.sol +21 -8
  344. package/contracts/distribution/Distribution.sol +14 -55
  345. package/contracts/distribution/DistributionService.sol +62 -30
  346. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  347. package/contracts/distribution/IDistributionComponent.sol +0 -9
  348. package/contracts/distribution/IDistributionService.sol +18 -15
  349. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
  350. package/contracts/examples/fire/FireProduct.sol +4 -3
  351. package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
  352. package/contracts/examples/unpermissioned/SimpleDistribution.sol +28 -0
  353. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
  354. package/contracts/examples/unpermissioned/SimplePool.sol +0 -1
  355. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
  356. package/contracts/examples/unpermissioned/SimpleProduct.sol +29 -4
  357. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
  358. package/contracts/instance/BundleSet.sol +4 -4
  359. package/contracts/instance/IInstance.sol +49 -15
  360. package/contracts/instance/IInstanceService.sol +15 -1
  361. package/contracts/instance/Instance.sol +80 -23
  362. package/contracts/instance/InstanceAdmin.sol +269 -104
  363. package/contracts/instance/InstanceAuthorizationV3.sol +49 -36
  364. package/contracts/instance/InstanceReader.sol +106 -35
  365. package/contracts/instance/InstanceService.sol +144 -73
  366. package/contracts/instance/InstanceServiceManager.sol +1 -1
  367. package/contracts/instance/InstanceStore.sol +13 -2
  368. package/contracts/instance/RiskSet.sol +11 -12
  369. package/contracts/instance/base/ObjectCounter.sol +1 -2
  370. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  371. package/contracts/instance/base/ObjectSet.sol +7 -8
  372. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  373. package/contracts/instance/module/IComponents.sol +3 -2
  374. package/contracts/instance/module/IDistribution.sol +5 -2
  375. package/contracts/instance/module/IRisk.sol +2 -0
  376. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  377. package/contracts/oracle/Oracle.sol +1 -1
  378. package/contracts/oracle/OracleService.sol +20 -19
  379. package/contracts/oracle/OracleServiceManager.sol +1 -1
  380. package/contracts/pool/BasicPoolAuthorization.sol +21 -13
  381. package/contracts/pool/BundleService.sol +28 -58
  382. package/contracts/pool/BundleServiceManager.sol +1 -1
  383. package/contracts/pool/IBundleService.sol +13 -20
  384. package/contracts/pool/IPoolService.sol +50 -38
  385. package/contracts/pool/Pool.sol +9 -9
  386. package/contracts/pool/PoolLib.sol +309 -0
  387. package/contracts/pool/PoolService.sol +334 -190
  388. package/contracts/pool/PoolServiceManager.sol +1 -1
  389. package/contracts/product/ApplicationService.sol +28 -9
  390. package/contracts/product/ApplicationServiceManager.sol +1 -1
  391. package/contracts/product/BasicProduct.sol +2 -0
  392. package/contracts/product/BasicProductAuthorization.sol +23 -8
  393. package/contracts/product/ClaimService.sol +165 -139
  394. package/contracts/product/ClaimServiceManager.sol +1 -1
  395. package/contracts/product/IApplicationService.sol +3 -0
  396. package/contracts/product/IClaimService.sol +14 -2
  397. package/contracts/product/IPolicyService.sol +11 -6
  398. package/contracts/product/IPricingService.sol +1 -0
  399. package/contracts/product/IProductComponent.sol +4 -1
  400. package/contracts/product/IRiskService.sol +7 -7
  401. package/contracts/product/PolicyService.sol +112 -184
  402. package/contracts/product/PolicyServiceLib.sol +119 -0
  403. package/contracts/product/PolicyServiceManager.sol +1 -1
  404. package/contracts/product/PricingService.sol +28 -19
  405. package/contracts/product/PricingServiceManager.sol +3 -3
  406. package/contracts/product/Product.sol +55 -13
  407. package/contracts/product/RiskService.sol +76 -29
  408. package/contracts/product/RiskServiceManager.sol +1 -1
  409. package/contracts/registry/ChainNft.sol +4 -2
  410. package/contracts/registry/IRegistry.sol +8 -15
  411. package/contracts/registry/IRelease.sol +26 -0
  412. package/contracts/registry/Registry.sol +7 -2
  413. package/contracts/registry/RegistryAdmin.sol +143 -342
  414. package/contracts/registry/RegistryAuthorization.sol +267 -0
  415. package/contracts/registry/RegistryService.sol +3 -3
  416. package/contracts/registry/RegistryServiceManager.sol +1 -1
  417. package/contracts/registry/ReleaseAdmin.sol +253 -0
  418. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  419. package/contracts/registry/ReleaseRegistry.sol +149 -117
  420. package/contracts/registry/ServiceAuthorizationV3.sol +159 -2
  421. package/contracts/registry/TokenRegistry.sol +6 -8
  422. package/contracts/shared/Component.sol +27 -19
  423. package/contracts/shared/ComponentService.sol +119 -116
  424. package/contracts/shared/ComponentServiceManager.sol +1 -1
  425. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  426. package/contracts/shared/ContractLib.sol +60 -3
  427. package/contracts/shared/IComponent.sol +3 -4
  428. package/contracts/shared/IComponentService.sol +4 -10
  429. package/contracts/shared/IRegisterable.sol +15 -4
  430. package/contracts/shared/IService.sol +3 -5
  431. package/contracts/shared/InitializableERC165.sol +9 -1
  432. package/contracts/shared/InstanceLinkedComponent.sol +2 -2
  433. package/contracts/shared/NftOwnable.sol +6 -5
  434. package/contracts/shared/PolicyHolder.sol +1 -1
  435. package/contracts/shared/Registerable.sol +42 -19
  436. package/contracts/shared/RegistryLinked.sol +1 -1
  437. package/contracts/shared/Service.sol +8 -27
  438. package/contracts/shared/TokenHandler.sol +45 -92
  439. package/contracts/staking/IStaking.sol +12 -10
  440. package/contracts/staking/IStakingService.sol +19 -1
  441. package/contracts/staking/Staking.sol +57 -26
  442. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  443. package/contracts/staking/StakingReader.sol +6 -16
  444. package/contracts/staking/StakingService.sol +71 -44
  445. package/contracts/staking/StakingServiceManager.sol +5 -4
  446. package/contracts/staking/StakingStore.sol +2 -1
  447. package/contracts/type/ObjectType.sol +47 -39
  448. package/contracts/type/RiskId.sol +9 -3
  449. package/contracts/type/RoleId.sol +24 -4
  450. package/contracts/type/Selector.sol +5 -0
  451. package/contracts/type/Timestamp.sol +0 -5
  452. package/contracts/type/UFixed.sol +9 -119
  453. package/contracts/type/Version.sol +54 -5
  454. package/contracts/upgradeability/ProxyManager.sol +1 -1
  455. package/package.json +2 -2
  456. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  457. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  458. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  459. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  460. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  461. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  462. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  463. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  464. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  465. package/contracts/instance/module/IAccess.sol +0 -46
@@ -3,9 +3,6 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
- import {Amount, AmountLib} from "../type/Amount.sol";
7
- import {ContractLib} from "../shared/ContractLib.sol";
8
- import {Fee, FeeLib} from "../type/Fee.sol";
9
6
  import {IAccountingService} from "../accounting/IAccountingService.sol";
10
7
  import {IComponent} from "../shared/IComponent.sol";
11
8
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -26,7 +23,7 @@ import {Amount, AmountLib} from "../type/Amount.sol";
26
23
  import {ContractLib} from "../shared/ContractLib.sol";
27
24
  import {Fee, FeeLib} from "../type/Fee.sol";
28
25
  import {KEEP_STATE} from "../type/StateId.sol";
29
- import {NftId} from "../type/NftId.sol";
26
+ import {NftId, NftIdLib} from "../type/NftId.sol";
30
27
  import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
31
28
  import {Service} from "../shared/Service.sol";
32
29
  import {TokenHandler} from "../shared/TokenHandler.sol";
@@ -79,11 +76,11 @@ contract ComponentService is
79
76
  initializer()
80
77
  {
81
78
  (
82
- address registryAddress,
83
- address authority
79
+ address authority,
80
+ address registry
84
81
  ) = abi.decode(data, (address, address));
85
82
 
86
- _initializeService(registryAddress, authority, owner);
83
+ __Service_init(authority, registry, owner);
87
84
 
88
85
  _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
89
86
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
@@ -97,6 +94,7 @@ contract ComponentService is
97
94
  function registerComponent(address component)
98
95
  external
99
96
  virtual
97
+ restricted()
100
98
  onlyComponent(component)
101
99
  returns (NftId componentNftId)
102
100
  {
@@ -122,6 +120,7 @@ contract ComponentService is
122
120
  )
123
121
  external
124
122
  virtual
123
+ restricted()
125
124
  {
126
125
  // checks
127
126
  (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
@@ -133,27 +132,10 @@ contract ComponentService is
133
132
  }
134
133
 
135
134
 
136
- function approveStakingTokenHandler(
137
- IERC20Metadata token,
138
- Amount amount
139
- )
140
- external
141
- virtual
142
- {
143
- // checks
144
- ContractLib.getAndVerifyStaking(
145
- getRegistry(),
146
- msg.sender); // only active
147
-
148
- // effects
149
- TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
150
- tokenHandler.approve(token, amount);
151
- }
152
-
153
-
154
135
  function setWallet(address newWallet)
155
136
  external
156
137
  virtual
138
+ restricted()
157
139
  {
158
140
  // checks
159
141
  (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
@@ -165,56 +147,67 @@ contract ComponentService is
165
147
  }
166
148
 
167
149
  /// @inheritdoc IComponentService
168
- function setLockedFromInstance(address componentAddress, bool locked)
150
+ function setLocked(bool locked)
169
151
  external
170
152
  virtual
171
- onlyInstance()
172
- {
173
- address instanceAddress = msg.sender;
174
- // NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
175
- IInstance instance = IInstance(instanceAddress);
176
- _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
177
- }
178
-
179
- /// @inheritdoc IComponentService
180
- function setLockedFromComponent(address componentAddress, bool locked)
181
- external
182
- virtual
183
- onlyComponent(msg.sender)
153
+ restricted()
184
154
  {
185
155
  (, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
186
- _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
156
+
157
+ address component = msg.sender;
158
+ instance.getInstanceAdmin().setComponentLocked(
159
+ component,
160
+ locked);
187
161
  }
188
162
 
163
+ /// @inheritdoc IComponentService
189
164
  function withdrawFees(Amount amount)
190
165
  external
191
166
  virtual
167
+ restricted()
192
168
  returns (Amount withdrawnAmount)
193
169
  {
170
+ // checks
194
171
  (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
195
- IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
196
- address componentWallet = info.tokenHandler.getWallet();
172
+ InstanceReader instanceReader = instance.getInstanceReader();
197
173
 
198
174
  // determine withdrawn amount
175
+ Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
199
176
  withdrawnAmount = amount;
200
- if (withdrawnAmount.gte(AmountLib.max())) {
201
- withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
202
- } else if (withdrawnAmount.eqz()) {
177
+
178
+ // max amount -> withraw all available fees
179
+ if (amount == AmountLib.max()) {
180
+ withdrawnAmount = maxAvailableAmount;
181
+ }
182
+
183
+ // check modified withdrawn amount
184
+ if (withdrawnAmount.eqz()) {
203
185
  revert ErrorComponentServiceWithdrawAmountIsZero();
204
- } else {
205
- Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
206
- if (withdrawnAmount.gt(withdrawLimit)) {
207
- revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
208
- }
186
+ } else if (withdrawnAmount > maxAvailableAmount) {
187
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
209
188
  }
210
189
 
190
+ // effects
211
191
  // decrease fee counters by withdrawnAmount
212
- _accountingService.decreaseComponentFees(instance.getInstanceStore(), componentNftId, withdrawnAmount);
192
+ _accountingService.decreaseComponentFees(
193
+ instance.getInstanceStore(),
194
+ componentNftId,
195
+ withdrawnAmount);
213
196
 
214
197
  // transfer amount to component owner
215
198
  address componentOwner = getRegistry().ownerOf(componentNftId);
216
- emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
217
- info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
199
+ TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
200
+ emit LogComponentServiceComponentFeesWithdrawn(
201
+ componentNftId,
202
+ componentOwner,
203
+ address(tokenHandler.TOKEN()),
204
+ withdrawnAmount);
205
+
206
+ // interactions
207
+ // transfer amount to component owner
208
+ tokenHandler.pushFeeToken(
209
+ componentOwner,
210
+ withdrawnAmount);
218
211
  }
219
212
 
220
213
 
@@ -223,6 +216,8 @@ contract ComponentService is
223
216
  function registerProduct(address productAddress)
224
217
  external
225
218
  virtual
219
+ restricted()
220
+ nonReentrant()
226
221
  onlyComponent(productAddress)
227
222
  returns (NftId productNftId)
228
223
  {
@@ -235,14 +230,22 @@ contract ComponentService is
235
230
 
236
231
  // get product
237
232
  IProductComponent product = IProductComponent(productAddress);
233
+
234
+ IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
235
+ // force initialization of linked components with empty values to
236
+ // ensure no components are linked upon initialization of the product
237
+ initialProductInfo.poolNftId = NftIdLib.zero();
238
+ initialProductInfo.distributionNftId = NftIdLib.zero();
239
+ initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
238
240
 
239
241
  // create info
240
242
  instanceStore.createProduct(
241
243
  productNftId,
242
- product.getInitialProductInfo());
244
+ initialProductInfo);
243
245
 
244
- // authorize
245
- instanceAdmin.initializeComponentAuthorization(product);
246
+ instanceStore.createFee(
247
+ productNftId,
248
+ product.getInitialFeeInfo());
246
249
  }
247
250
 
248
251
 
@@ -252,27 +255,29 @@ contract ComponentService is
252
255
  )
253
256
  external
254
257
  virtual
258
+ restricted()
259
+ nonReentrant()
255
260
  {
256
261
  (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
257
- IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
262
+ IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
258
263
  bool feesChanged = false;
259
264
 
260
265
  // update product fee if required
261
- if(!FeeLib.eq(productInfo.productFee, productFee)) {
262
- _logUpdateFee(productNftId, "ProductFee", productInfo.productFee, productFee);
263
- productInfo.productFee = productFee;
266
+ if(!FeeLib.eq(feeInfo.productFee, productFee)) {
267
+ _logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
268
+ feeInfo.productFee = productFee;
264
269
  feesChanged = true;
265
270
  }
266
271
 
267
272
  // update processing fee if required
268
- if(!FeeLib.eq(productInfo.processingFee, processingFee)) {
269
- _logUpdateFee(productNftId, "ProcessingFee", productInfo.processingFee, processingFee);
270
- productInfo.processingFee = processingFee;
273
+ if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
274
+ _logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
275
+ feeInfo.processingFee = processingFee;
271
276
  feesChanged = true;
272
277
  }
273
278
 
274
279
  if(feesChanged) {
275
- instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
280
+ instance.getInstanceStore().updateFee(productNftId, feeInfo);
276
281
  emit LogComponentServiceProductFeesUpdated(productNftId);
277
282
  }
278
283
  }
@@ -283,6 +288,7 @@ contract ComponentService is
283
288
  function _registerDistribution(address distributioAddress)
284
289
  internal
285
290
  virtual
291
+ nonReentrant()
286
292
  returns (NftId distributionNftId)
287
293
  {
288
294
  // register/create component info
@@ -306,10 +312,6 @@ contract ComponentService is
306
312
  // set distribution in product info
307
313
  productInfo.distributionNftId = distributionNftId;
308
314
  instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
309
-
310
- // authorize
311
- instanceAdmin.initializeComponentAuthorization(
312
- IInstanceLinkedComponent(distributioAddress));
313
315
  }
314
316
 
315
317
 
@@ -319,28 +321,29 @@ contract ComponentService is
319
321
  )
320
322
  external
321
323
  virtual
324
+ restricted()
322
325
  {
323
326
  (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
324
- (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
327
+ (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
325
328
  instance.getInstanceReader(), distributionNftId);
326
329
  bool feesChanged = false;
327
330
 
328
331
  // update distributino fee if required
329
- if(!FeeLib.eq(productInfo.distributionFee, distributionFee)) {
330
- _logUpdateFee(productNftId, "DistributionFee", productInfo.distributionFee, distributionFee);
331
- productInfo.distributionFee = distributionFee;
332
+ if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
333
+ _logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
334
+ feeInfo.distributionFee = distributionFee;
332
335
  feesChanged = true;
333
336
  }
334
337
 
335
338
  // update min distribution owner fee if required
336
- if(!FeeLib.eq(productInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
337
- _logUpdateFee(productNftId, "MinDistributionOwnerFee", productInfo.minDistributionOwnerFee, minDistributionOwnerFee);
338
- productInfo.minDistributionOwnerFee = minDistributionOwnerFee;
339
+ if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
340
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
341
+ feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
339
342
  feesChanged = true;
340
343
  }
341
344
 
342
345
  if(feesChanged) {
343
- instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
346
+ instance.getInstanceStore().updateFee(productNftId, feeInfo);
344
347
  emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
345
348
  }
346
349
  }
@@ -375,10 +378,6 @@ contract ComponentService is
375
378
  productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
376
379
  productInfo.numberOfOracles++;
377
380
  instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
378
-
379
- // authorize
380
- instanceAdmin.initializeComponentAuthorization(
381
- IInstanceLinkedComponent(oracleAddress));
382
381
  }
383
382
 
384
383
  //-------- pool ---------------------------------------------------------//
@@ -413,9 +412,6 @@ contract ComponentService is
413
412
  // update pool in product info
414
413
  productInfo.poolNftId = poolNftId;
415
414
  instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
416
-
417
- // authorize
418
- instanceAdmin.initializeComponentAuthorization(pool);
419
415
  }
420
416
 
421
417
 
@@ -426,36 +422,37 @@ contract ComponentService is
426
422
  )
427
423
  external
428
424
  virtual
425
+ restricted()
429
426
  {
430
427
  (NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
431
428
 
432
- (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
429
+ (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
433
430
  instance.getInstanceReader(), poolNftId);
434
431
  bool feesChanged = false;
435
432
 
436
433
  // update pool fee if required
437
- if(!FeeLib.eq(productInfo.poolFee, poolFee)) {
438
- _logUpdateFee(productNftId, "PoolFee", productInfo.poolFee, poolFee);
439
- productInfo.poolFee = poolFee;
434
+ if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
435
+ _logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
436
+ feeInfo.poolFee = poolFee;
440
437
  feesChanged = true;
441
438
  }
442
439
 
443
440
  // update staking fee if required
444
- if(!FeeLib.eq(productInfo.stakingFee, stakingFee)) {
445
- _logUpdateFee(productNftId, "StakingFee", productInfo.stakingFee, stakingFee);
446
- productInfo.stakingFee = stakingFee;
441
+ if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
442
+ _logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
443
+ feeInfo.stakingFee = stakingFee;
447
444
  feesChanged = true;
448
445
  }
449
446
 
450
447
  // update performance fee if required
451
- if(!FeeLib.eq(productInfo.performanceFee, performanceFee)) {
452
- _logUpdateFee(productNftId, "PerformanceFee", productInfo.performanceFee, performanceFee);
453
- productInfo.performanceFee = performanceFee;
448
+ if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
449
+ _logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
450
+ feeInfo.performanceFee = performanceFee;
454
451
  feesChanged = true;
455
452
  }
456
453
 
457
454
  if(feesChanged) {
458
- instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
455
+ instance.getInstanceStore().updateFee(productNftId, feeInfo);
459
456
  emit LogComponentServicePoolFeesUpdated(poolNftId);
460
457
  }
461
458
  }
@@ -506,26 +503,29 @@ contract ComponentService is
506
503
  }
507
504
 
508
505
  // deploy and wire token handler
509
- IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
510
- IERC20Metadata token = componentInfo.token;
511
- componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
512
- address(getRegistry()),
513
- address(component), // initially, component is its own wallet
514
- address(token),
515
- address(instanceAdmin.authority()));
516
-
517
- // set token handler allowance to max
518
- // componentInfo.tokenHandler.approve(token, AmountLib.max());
519
-
520
- // register component with instance
521
- instanceStore.createComponent(
522
- componentNftId,
523
- componentInfo);
506
+ address token;
507
+ {
508
+ IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
509
+ token = address(componentInfo.token);
510
+ componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
511
+ address(getRegistry()),
512
+ componentAddress, // initially, component is its own wallet
513
+ token,
514
+ address(instanceAdmin.authority()));
515
+
516
+ // register component with instance
517
+ instanceStore.createComponent(
518
+ componentNftId,
519
+ componentInfo);
520
+ }
524
521
 
525
522
  // link component contract to nft id
526
523
  component.linkToRegisteredNftId();
527
524
 
528
- emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
525
+ // authorize
526
+ instanceAdmin.initializeComponentAuthorization(componentAddress, requiredType);
527
+
528
+ emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, componentAddress, token, initialOwner);
529
529
  }
530
530
 
531
531
 
@@ -544,7 +544,7 @@ contract ComponentService is
544
544
  }
545
545
 
546
546
 
547
- function _getLinkedProductInfo(
547
+ function _getLinkedFeeInfo(
548
548
  InstanceReader instanceReader,
549
549
  NftId componentNftId
550
550
  )
@@ -552,11 +552,11 @@ contract ComponentService is
552
552
  view
553
553
  returns(
554
554
  NftId productNftId,
555
- IComponents.ProductInfo memory info
555
+ IComponents.FeeInfo memory info
556
556
  )
557
557
  {
558
- productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
559
- info = instanceReader.getProductInfo(productNftId);
558
+ productNftId = getRegistry().getParentNftId(componentNftId);
559
+ info = instanceReader.getFeeInfo(productNftId);
560
560
  }
561
561
 
562
562
 
@@ -604,9 +604,12 @@ contract ComponentService is
604
604
  revert ErrorComponentServiceAlreadyRegistered(componentAddress);
605
605
  }
606
606
 
607
- // check release matches
607
+ // component release matches servie release
608
608
  address parentAddress = registry.getObjectAddress(parentNftId);
609
- if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
609
+ if (component.getRelease() != getRelease()) {
610
+ revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), getRelease());
611
+ // component release matches parent release
612
+ } else if (component.getRelease() != IRegisterable(parentAddress).getRelease()){
610
613
  revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
611
614
  }
612
615
 
@@ -17,7 +17,7 @@ contract ComponentServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  ComponentService svc = new ComponentService();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -116,7 +116,7 @@ abstract contract ComponentVerifyingService is
116
116
  /// @dev returns the product nft id from the registry.
117
117
  /// assumes the component nft id is valid and represents a product linked component.
118
118
  function _getProductNftId(NftId componentNftId) internal view returns (NftId productNftId) {
119
- productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
119
+ productNftId = getRegistry().getParentNftId(componentNftId);
120
120
  }
121
121
 
122
122
 
@@ -2,12 +2,15 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
6
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
7
 
6
8
  // import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
7
9
  import {IRegistry} from "../registry/IRegistry.sol";
8
10
  import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
9
11
  import {NftId} from "../type/NftId.sol";
10
12
  import {ObjectType, PRODUCT, DISTRIBUTION, ORACLE, POOL, STAKING} from "../type/ObjectType.sol";
13
+ import {VersionPart} from "../type/Version.sol";
11
14
 
12
15
  interface ITargetHelper {
13
16
  function isTargetLocked(address target) external view returns (bool);
@@ -17,6 +20,10 @@ interface IInstanceAdminHelper {
17
20
  function getInstanceAdmin() external view returns (ITargetHelper);
18
21
  }
19
22
 
23
+ interface ITokenRegistryHelper {
24
+ function isActive(uint256 chainId, address token, VersionPart release) external view returns (bool);
25
+ }
26
+
20
27
  library ContractLib {
21
28
 
22
29
  error ErrorContractLibNotRegistered(address target);
@@ -25,7 +32,6 @@ library ContractLib {
25
32
  error ErrorContractLibComponentTypeMismatch(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
26
33
  error ErrorContractLibComponentInactive(NftId componentNftId);
27
34
 
28
-
29
35
  function getAndVerifyComponent(
30
36
  IRegistry registry,
31
37
  address target,
@@ -130,17 +136,68 @@ library ContractLib {
130
136
  view
131
137
  returns (address instance)
132
138
  {
133
- NftId productNftId = registry.getObjectInfo(componentNftId).parentNftId;
134
- NftId instanceNftId = registry.getObjectInfo(productNftId).parentNftId;
139
+ NftId productNftId = registry.getParentNftId(componentNftId);
140
+ NftId instanceNftId = registry.getParentNftId(productNftId);
135
141
  return registry.getObjectInfo(instanceNftId).objectAddress;
136
142
  }
137
143
 
138
144
 
145
+ function isActiveToken(
146
+ address tokenRegistryAddress,
147
+ address token,
148
+ uint256 chainId,
149
+ VersionPart release
150
+ )
151
+ external
152
+ view
153
+ returns (bool)
154
+ {
155
+ return ITokenRegistryHelper(
156
+ tokenRegistryAddress).isActive(
157
+ chainId, token, release);
158
+ }
159
+
139
160
  function isPolicyHolder(address target) external view returns (bool) {
140
161
  return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
141
162
  }
142
163
 
143
164
 
165
+ function isAuthority(address authority) public view returns (bool) {
166
+ if (!isContract(authority)) {
167
+ return false;
168
+ }
169
+
170
+ return supportsInterface(authority, type(IAccessManager).interfaceId);
171
+ }
172
+
173
+
174
+ function isAccessManaged(address target)
175
+ public
176
+ view
177
+ returns (bool)
178
+ {
179
+ if (!isContract(target)) {
180
+ return false;
181
+ }
182
+
183
+ (bool success, ) = target.staticcall(
184
+ abi.encodeWithSelector(
185
+ IAccessManaged.authority.selector));
186
+
187
+ return success;
188
+ }
189
+
190
+
191
+ function isRegistered(address registry, address caller, ObjectType expectedType) public view returns (bool) {
192
+ NftId nftId = IRegistry(registry).getNftIdForAddress(caller);
193
+ if (nftId.eqz()) {
194
+ return false;
195
+ }
196
+
197
+ return IRegistry(registry).getObjectInfo(nftId).objectType == expectedType;
198
+ }
199
+
200
+
144
201
  function isRegistry(address registry) public view returns (bool) {
145
202
  if (!isContract(registry)) {
146
203
  return false;
@@ -1,7 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
5
 
7
6
  import {Amount} from "../type/Amount.sol";
@@ -13,18 +12,18 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
13
12
  /// @dev component base class
14
13
  /// component examples are staking, product, distribution, pool and oracle
15
14
  interface IComponent is
16
- IAccessManaged,
17
15
  IRegisterable,
18
16
  ITransferInterceptor
19
17
  {
18
+
19
+ error ErrorComponentTokenInvalid(address token);
20
+
20
21
  error ErrorComponentProductNftIdZero();
21
22
  error ErrorComponentProductNftIdNonzero();
22
23
  error ErrorComponentNameLengthZero();
23
24
 
24
25
  error ErrorComponentNotChainNft(address caller);
25
26
 
26
- error ErrorComponentTokenAddressNonzero();
27
- error ErrorComponentTokenAddressZero();
28
27
  error ErrorComponentWalletAddressZero();
29
28
  error ErrorComponentWalletAddressIsSameAsCurrent();
30
29
  error ErrorComponentWalletNotComponent();
@@ -67,18 +67,12 @@ interface IComponentService is
67
67
  /// Reverts if the component's token handler wallet is not the token handler itself.
68
68
  function approveTokenHandler(IERC20Metadata token, Amount amount) external;
69
69
 
70
- /// @dev Approves the staking token handler.
71
- /// Reverts if the staking token handler wallet is not the token handler itself.
72
- function approveStakingTokenHandler(IERC20Metadata token, Amount amount) external;
73
-
74
- /// @dev Sets the components associated wallet address
70
+ /// @dev Sets the components associated wallet address.
71
+ /// To set the wallet to the token handler contract, use address(0) as the new wallet adress.
75
72
  function setWallet(address newWallet) external;
76
73
 
77
- /// @dev Locks/Unlocks the given component - call from instanceService
78
- function setLockedFromInstance(address componentAddress, bool locked) external;
79
-
80
- /// @dev Locks/Unlocks the given component - call from component
81
- function setLockedFromComponent(address componentAddress, bool locked) external;
74
+ /// @dev Locks/Unlocks the calling component.
75
+ function setLocked(bool locked) external;
82
76
 
83
77
  /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
84
78
  /// @param withdrawAmount the amount to withdraw
@@ -1,7 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
4
6
  import {INftOwnable} from "./INftOwnable.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
5
8
  import {IRegistry} from "../registry/IRegistry.sol";
6
9
  import {VersionPart} from "../type/Version.sol";
7
10
 
@@ -9,11 +12,19 @@ import {VersionPart} from "../type/Version.sol";
9
12
  /// @dev Marks contracts that are intended to be registered in the registry.
10
13
  ///
11
14
  interface IRegisterable is
12
- INftOwnable
15
+ IAccessManaged,
16
+ INftOwnable,
17
+ IRelease
13
18
  {
14
- /// @dev retuns the GIF release version for this contract.
15
- /// This
16
- function getRelease() external pure returns (VersionPart release);
19
+ // __Registerable_init
20
+ error ErrorAuthorityInvalid(address authority);
21
+
22
+ // onlyActive()
23
+ error ErrorRegisterableNotActive();
24
+
25
+ /// @dev Returns true iff this contract managed by its authority is active.
26
+ /// Queries the IAccessManaged.authority().
27
+ function isActive() external view returns (bool active);
17
28
 
18
29
  /// @dev retuns the object info relevant for registering for this contract
19
30
  /// IMPORTANT information returned by this function may only be used