@etherisc/gif-next 0.0.2-b2910e7-757 → 0.0.2-b2e620f-736

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 (452) hide show
  1. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  3. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  5. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  7. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  11. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  13. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +82 -12
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +77 -65
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +51 -39
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +117 -110
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -26
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +27 -3
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +102 -42
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +260 -185
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +117 -54
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -63
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -48
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +306 -147
  59. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  60. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  61. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  62. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -21
  63. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -5
  65. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/Instance.sol/Instance.json +150 -41
  67. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +355 -99
  69. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
  71. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +549 -218
  73. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +87 -60
  75. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
  77. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
  79. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  80. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  81. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  83. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  85. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  86. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  90. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  92. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  97. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +68 -56
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +38 -26
  105. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  107. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -40
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +98 -83
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +40 -22
  113. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -39
  115. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
  117. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -310
  119. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -83
  121. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -122
  123. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -26
  125. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
  127. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  128. package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -39
  129. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  130. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  131. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +241 -302
  133. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -45
  135. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +91 -65
  137. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -22
  139. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -130
  141. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
  143. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -187
  145. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
  147. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -55
  153. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  155. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -117
  157. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  159. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -181
  161. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  162. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +51 -45
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
  169. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  170. package/artifacts/contracts/product/Product.sol/Product.json +157 -130
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  172. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  176. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  178. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +26 -2
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  180. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  181. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  182. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  183. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  184. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
  186. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  187. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
  188. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
  190. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
  192. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  193. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +316 -50
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  199. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  202. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Component.sol/Component.json +51 -39
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  205. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +119 -514
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  207. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +38 -72
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  209. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +435 -5
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  218. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -26
  220. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +45 -327
  222. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -26
  224. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  225. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  226. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  230. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  233. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  234. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  235. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +51 -39
  236. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  239. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  243. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  247. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  248. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  249. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  255. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  256. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  257. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +38 -26
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  259. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
  262. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  263. package/artifacts/contracts/staking/Staking.sol/Staking.json +90 -57
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  265. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  267. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +27 -19
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  269. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  271. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -51
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +18 -20
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  277. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  278. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  281. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  290. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  291. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  292. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  294. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  295. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  296. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  298. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  300. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  302. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  304. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  306. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  308. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  311. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  313. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  317. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  319. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  321. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  323. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  325. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
  326. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  327. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  328. package/contracts/accounting/AccountingService.sol +262 -0
  329. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  330. package/contracts/accounting/IAccountingService.sol +45 -0
  331. package/contracts/authorization/AccessAdmin.sol +177 -84
  332. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  333. package/contracts/authorization/Authorization.sol +277 -229
  334. package/contracts/authorization/IAccessAdmin.sol +13 -7
  335. package/contracts/authorization/IAuthorization.sol +15 -1
  336. package/contracts/distribution/BasicDistribution.sol +4 -4
  337. package/contracts/distribution/BasicDistributionAuthorization.sol +21 -8
  338. package/contracts/distribution/Distribution.sol +27 -24
  339. package/contracts/distribution/DistributionService.sol +18 -15
  340. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  341. package/contracts/examples/fire/FirePool.sol +6 -2
  342. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  343. package/contracts/examples/fire/FireProduct.sol +8 -1
  344. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  345. package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
  346. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  347. package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
  348. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  349. package/contracts/examples/unpermissioned/SimpleProduct.sol +32 -0
  350. package/contracts/instance/BundleSet.sol +42 -38
  351. package/contracts/instance/IInstance.sol +13 -7
  352. package/contracts/instance/IInstanceService.sol +7 -1
  353. package/contracts/instance/Instance.sol +41 -16
  354. package/contracts/instance/InstanceAdmin.sol +241 -76
  355. package/contracts/instance/InstanceAuthorizationV3.sol +53 -31
  356. package/contracts/instance/InstanceReader.sol +162 -32
  357. package/contracts/instance/InstanceService.sol +59 -35
  358. package/contracts/instance/InstanceServiceManager.sol +1 -1
  359. package/contracts/instance/InstanceStore.sol +13 -2
  360. package/contracts/instance/RiskSet.sol +118 -0
  361. package/contracts/instance/base/ObjectCounter.sol +1 -2
  362. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  363. package/contracts/instance/base/ObjectSet.sol +31 -33
  364. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  365. package/contracts/instance/module/IComponents.sol +3 -2
  366. package/contracts/instance/module/IRisk.sol +3 -0
  367. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  368. package/contracts/oracle/Oracle.sol +1 -1
  369. package/contracts/oracle/OracleService.sol +92 -74
  370. package/contracts/oracle/OracleServiceManager.sol +1 -1
  371. package/contracts/pool/BasicPoolAuthorization.sol +21 -13
  372. package/contracts/pool/BundleService.sol +35 -125
  373. package/contracts/pool/BundleServiceManager.sol +1 -1
  374. package/contracts/pool/IBundleService.sol +13 -38
  375. package/contracts/pool/IPoolService.sol +49 -56
  376. package/contracts/pool/Pool.sol +9 -9
  377. package/contracts/pool/PoolLib.sol +216 -0
  378. package/contracts/pool/PoolService.sol +323 -186
  379. package/contracts/pool/PoolServiceManager.sol +1 -1
  380. package/contracts/product/ApplicationService.sol +15 -15
  381. package/contracts/product/ApplicationServiceManager.sol +1 -1
  382. package/contracts/product/BasicProduct.sol +2 -0
  383. package/contracts/product/BasicProductAuthorization.sol +24 -10
  384. package/contracts/product/ClaimService.sol +157 -139
  385. package/contracts/product/ClaimServiceManager.sol +1 -1
  386. package/contracts/product/IApplicationService.sol +5 -2
  387. package/contracts/product/IClaimService.sol +14 -2
  388. package/contracts/product/IPolicyService.sol +23 -10
  389. package/contracts/product/IProductComponent.sol +4 -1
  390. package/contracts/product/PolicyService.sol +269 -257
  391. package/contracts/product/PolicyServiceLib.sol +65 -0
  392. package/contracts/product/PolicyServiceManager.sol +1 -1
  393. package/contracts/product/PricingService.sol +23 -19
  394. package/contracts/product/PricingServiceManager.sol +3 -3
  395. package/contracts/product/Product.sol +53 -7
  396. package/contracts/product/RiskService.sol +74 -25
  397. package/contracts/product/RiskServiceManager.sol +1 -1
  398. package/contracts/registry/ChainNft.sol +4 -2
  399. package/contracts/registry/IRegistry.sol +8 -15
  400. package/contracts/registry/IRelease.sol +26 -0
  401. package/contracts/registry/Registry.sol +7 -2
  402. package/contracts/registry/RegistryAdmin.sol +129 -237
  403. package/contracts/registry/RegistryService.sol +3 -3
  404. package/contracts/registry/RegistryServiceManager.sol +1 -1
  405. package/contracts/registry/ReleaseAdmin.sol +245 -0
  406. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  407. package/contracts/registry/ReleaseRegistry.sol +127 -101
  408. package/contracts/registry/ServiceAuthorizationV3.sol +163 -40
  409. package/contracts/registry/TokenRegistry.sol +6 -8
  410. package/contracts/shared/Component.sol +30 -38
  411. package/contracts/shared/ComponentService.sol +165 -302
  412. package/contracts/shared/ComponentServiceManager.sol +1 -1
  413. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  414. package/contracts/shared/ContractLib.sol +208 -9
  415. package/contracts/shared/IComponent.sol +3 -9
  416. package/contracts/shared/IComponentService.sol +2 -27
  417. package/contracts/shared/IRegisterable.sol +15 -4
  418. package/contracts/shared/IService.sol +3 -5
  419. package/contracts/shared/InstanceLinkedComponent.sol +3 -3
  420. package/contracts/shared/NftOwnable.sol +4 -4
  421. package/contracts/shared/PolicyHolder.sol +1 -1
  422. package/contracts/shared/Registerable.sol +45 -19
  423. package/contracts/shared/RegistryLinked.sol +1 -1
  424. package/contracts/shared/Service.sol +8 -27
  425. package/contracts/shared/TokenHandler.sol +40 -96
  426. package/contracts/staking/IStaking.sol +0 -8
  427. package/contracts/staking/IStakingService.sol +8 -0
  428. package/contracts/staking/StakeManagerLib.sol +1 -1
  429. package/contracts/staking/Staking.sol +34 -13
  430. package/contracts/staking/StakingReader.sol +1 -1
  431. package/contracts/staking/StakingService.sol +32 -55
  432. package/contracts/staking/StakingServiceManager.sol +5 -4
  433. package/contracts/type/Key32.sol +2 -2
  434. package/contracts/type/Key32Set.sol +62 -0
  435. package/contracts/type/NftId.sol +6 -0
  436. package/contracts/type/ObjectType.sol +48 -21
  437. package/contracts/type/RiskId.sol +23 -6
  438. package/contracts/type/RoleId.sol +24 -4
  439. package/contracts/type/Selector.sol +5 -0
  440. package/contracts/type/Timestamp.sol +0 -5
  441. package/contracts/type/UFixed.sol +9 -119
  442. package/contracts/type/Version.sol +15 -5
  443. package/contracts/upgradeability/ProxyManager.sol +1 -1
  444. package/package.json +1 -1
  445. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  446. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  447. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  448. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  449. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  450. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  451. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  452. package/contracts/instance/module/IAccess.sol +0 -46
@@ -3,11 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
- import {AccessAdmin} from "../authorization/AccessAdmin.sol";
7
- import {Amount, AmountLib} from "../type/Amount.sol";
8
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
9
- import {ContractLib} from "../shared/ContractLib.sol";
10
- import {Fee, FeeLib} from "../type/Fee.sol";
6
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
11
7
  import {IComponent} from "../shared/IComponent.sol";
12
8
  import {IComponents} from "../instance/module/IComponents.sol";
13
9
  import {IComponentService} from "./IComponentService.sol";
@@ -17,51 +13,54 @@ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
17
13
  import {InstanceReader} from "../instance/InstanceReader.sol";
18
14
  import {InstanceStore} from "../instance/InstanceStore.sol";
19
15
  import {IInstanceService} from "../instance/IInstanceService.sol";
20
- import {IRegisterable} from "../shared/IRegisterable.sol";
21
16
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
22
17
  import {IProductComponent} from "../product/IProductComponent.sol";
18
+ import {IRegisterable} from "../shared/IRegisterable.sol";
23
19
  import {IRegistry} from "../registry/IRegistry.sol";
24
20
  import {IRegistryService} from "../registry/IRegistryService.sol";
21
+
22
+ import {Amount, AmountLib} from "../type/Amount.sol";
23
+ import {ContractLib} from "../shared/ContractLib.sol";
24
+ import {Fee, FeeLib} from "../type/Fee.sol";
25
25
  import {KEEP_STATE} from "../type/StateId.sol";
26
- import {NftId} from "../type/NftId.sol";
27
- import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
26
+ import {NftId, NftIdLib} from "../type/NftId.sol";
27
+ import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
28
+ import {Service} from "../shared/Service.sol";
28
29
  import {TokenHandler} from "../shared/TokenHandler.sol";
29
30
  import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
30
31
  import {VersionPart} from "../type/Version.sol";
31
32
 
33
+
32
34
  contract ComponentService is
33
- ComponentVerifyingService,
35
+ Service,
34
36
  IComponentService
35
37
  {
36
-
37
38
  bool private constant INCREASE = true;
38
39
  bool private constant DECREASE = false;
39
40
 
41
+ IAccountingService private _accountingService;
40
42
  IRegistryService private _registryService;
41
43
  IInstanceService private _instanceService;
42
44
 
43
45
  modifier onlyComponent(address component) {
44
- if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
45
- revert ErrorComponentServiceNotInstanceLinkedComponent(component);
46
- }
46
+ _checkSupportsInterface(component);
47
47
  _;
48
48
  }
49
49
 
50
50
  modifier onlyInstance() {
51
- address instanceAddress = msg.sender;
52
51
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
53
52
  if (instanceNftId.eqz()) {
54
- revert ErrorComponentServiceNotRegistered(instanceAddress);
53
+ revert ErrorComponentServiceNotRegistered(msg.sender);
55
54
  }
56
55
 
57
56
  ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
58
57
  if (objectType != INSTANCE()) {
59
- revert ErrorComponentServiceNotInstance(instanceAddress, objectType);
58
+ revert ErrorComponentServiceNotInstance(msg.sender, objectType);
60
59
  }
61
60
 
62
- VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
61
+ VersionPart instanceVersion = IInstance(msg.sender).getRelease();
63
62
  if (instanceVersion != getVersion().toMajorPart()) {
64
- revert ErrorComponentServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
63
+ revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
65
64
  }
66
65
 
67
66
  _;
@@ -77,12 +76,13 @@ contract ComponentService is
77
76
  initializer()
78
77
  {
79
78
  (
80
- address registryAddress,
81
- address authority
79
+ address authority,
80
+ address registry
82
81
  ) = abi.decode(data, (address, address));
83
82
 
84
- _initializeService(registryAddress, authority, owner);
83
+ __Service_init(authority, registry, owner);
85
84
 
85
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
86
86
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
87
87
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
88
88
 
@@ -121,7 +121,7 @@ contract ComponentService is
121
121
  virtual
122
122
  {
123
123
  // checks
124
- (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
124
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
125
125
  TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
126
126
  componentNftId).tokenHandler;
127
127
 
@@ -130,32 +130,12 @@ contract ComponentService is
130
130
  }
131
131
 
132
132
 
133
- function approveStakingTokenHandler(
134
- IERC20Metadata token,
135
- Amount amount
136
- )
137
- external
138
- virtual
139
- {
140
- // checks
141
- NftId stakingNftId = getRegistry().getNftIdForAddress(msg.sender);
142
- (IRegistry.ObjectInfo memory objectInfo,) = _getAndVerifyComponentInfo(
143
- stakingNftId,
144
- STAKING(),
145
- true);
146
-
147
- // effects
148
- TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
149
- tokenHandler.approve(token, amount);
150
- }
151
-
152
-
153
133
  function setWallet(address newWallet)
154
134
  external
155
135
  virtual
156
136
  {
157
137
  // checks
158
- (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
138
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
159
139
  TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
160
140
  componentNftId).tokenHandler;
161
141
 
@@ -164,56 +144,63 @@ contract ComponentService is
164
144
  }
165
145
 
166
146
  /// @inheritdoc IComponentService
167
- function setLockedFromInstance(address componentAddress, bool locked)
147
+ function setComponentLocked(address componentAddress, bool locked)
168
148
  external
169
149
  virtual
170
- onlyInstance()
150
+ restricted()
171
151
  {
172
- address instanceAddress = msg.sender;
173
- // NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
174
- IInstance instance = IInstance(instanceAddress);
175
- _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
152
+ // TODO inactive component can lock/unlock other components?
153
+ (, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
154
+ instance.setLockedFromService(componentAddress, locked);
176
155
  }
177
156
 
178
157
  /// @inheritdoc IComponentService
179
- function setLockedFromComponent(address componentAddress, bool locked)
180
- external
181
- virtual
182
- onlyComponent(msg.sender)
183
- {
184
- (,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
185
- _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
186
- }
187
-
188
158
  function withdrawFees(Amount amount)
189
159
  external
190
160
  virtual
191
161
  returns (Amount withdrawnAmount)
192
162
  {
193
- (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
194
- IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
195
- address componentWallet = info.tokenHandler.getWallet();
163
+ // checks
164
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
165
+ InstanceReader instanceReader = instance.getInstanceReader();
196
166
 
197
167
  // determine withdrawn amount
168
+ Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
198
169
  withdrawnAmount = amount;
199
- if (withdrawnAmount.gte(AmountLib.max())) {
200
- withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
201
- } else if (withdrawnAmount.eqz()) {
170
+
171
+ // max amount -> withraw all available fees
172
+ if (amount == AmountLib.max()) {
173
+ withdrawnAmount = maxAvailableAmount;
174
+ }
175
+
176
+ // check modified withdrawn amount
177
+ if (withdrawnAmount.eqz()) {
202
178
  revert ErrorComponentServiceWithdrawAmountIsZero();
203
- } else {
204
- Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
205
- if (withdrawnAmount.gt(withdrawLimit)) {
206
- revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
207
- }
179
+ } else if (withdrawnAmount > maxAvailableAmount) {
180
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
208
181
  }
209
182
 
183
+ // effects
210
184
  // decrease fee counters by withdrawnAmount
211
- _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
185
+ _accountingService.decreaseComponentFees(
186
+ instance.getInstanceStore(),
187
+ componentNftId,
188
+ withdrawnAmount);
212
189
 
213
190
  // transfer amount to component owner
214
191
  address componentOwner = getRegistry().ownerOf(componentNftId);
215
- emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
216
- info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
192
+ TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
193
+ emit LogComponentServiceComponentFeesWithdrawn(
194
+ componentNftId,
195
+ componentOwner,
196
+ address(tokenHandler.TOKEN()),
197
+ withdrawnAmount);
198
+
199
+ // interactions
200
+ // transfer amount to component owner
201
+ tokenHandler.pushFeeToken(
202
+ componentOwner,
203
+ withdrawnAmount);
217
204
  }
218
205
 
219
206
 
@@ -222,6 +209,7 @@ contract ComponentService is
222
209
  function registerProduct(address productAddress)
223
210
  external
224
211
  virtual
212
+ nonReentrant()
225
213
  onlyComponent(productAddress)
226
214
  returns (NftId productNftId)
227
215
  {
@@ -234,14 +222,22 @@ contract ComponentService is
234
222
 
235
223
  // get product
236
224
  IProductComponent product = IProductComponent(productAddress);
225
+
226
+ IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
227
+ // force initialization of linked components with empty values to
228
+ // ensure no components are linked upon initialization of the product
229
+ initialProductInfo.poolNftId = NftIdLib.zero();
230
+ initialProductInfo.distributionNftId = NftIdLib.zero();
231
+ initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
237
232
 
238
233
  // create info
239
234
  instanceStore.createProduct(
240
235
  productNftId,
241
- product.getInitialProductInfo());
236
+ initialProductInfo);
242
237
 
243
- // authorize
244
- instanceAdmin.initializeComponentAuthorization(product);
238
+ instanceStore.createFee(
239
+ productNftId,
240
+ product.getInitialFeeInfo());
245
241
  }
246
242
 
247
243
 
@@ -251,62 +247,39 @@ contract ComponentService is
251
247
  )
252
248
  external
253
249
  virtual
250
+ nonReentrant()
254
251
  {
255
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
256
- IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
252
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
253
+ IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
257
254
  bool feesChanged = false;
258
255
 
259
256
  // update product fee if required
260
- if(!FeeLib.eq(productInfo.productFee, productFee)) {
261
- _logUpdateFee(productNftId, "ProductFee", productInfo.productFee, productFee);
262
- productInfo.productFee = productFee;
257
+ if(!FeeLib.eq(feeInfo.productFee, productFee)) {
258
+ _logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
259
+ feeInfo.productFee = productFee;
263
260
  feesChanged = true;
264
261
  }
265
262
 
266
263
  // update processing fee if required
267
- if(!FeeLib.eq(productInfo.processingFee, processingFee)) {
268
- _logUpdateFee(productNftId, "ProcessingFee", productInfo.processingFee, processingFee);
269
- productInfo.processingFee = processingFee;
264
+ if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
265
+ _logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
266
+ feeInfo.processingFee = processingFee;
270
267
  feesChanged = true;
271
268
  }
272
269
 
273
270
  if(feesChanged) {
274
- instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
271
+ instance.getInstanceStore().updateFee(productNftId, feeInfo);
275
272
  emit LogComponentServiceProductFeesUpdated(productNftId);
276
273
  }
277
274
  }
278
275
 
279
- function increaseProductFees(
280
- InstanceStore instanceStore,
281
- NftId productNftId,
282
- Amount feeAmount
283
- )
284
- external
285
- virtual
286
- // TODO re-enable once role granting is stable and fixed
287
- // restricted()
288
- {
289
- _checkNftType(productNftId, PRODUCT());
290
- _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
291
- }
292
-
293
-
294
- function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
295
- external
296
- virtual
297
- // TODO re-enable once role granting is stable and fixed
298
- // restricted()
299
- {
300
- _checkNftType(productNftId, PRODUCT());
301
- _changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
302
- }
303
-
304
276
  //-------- distribution -------------------------------------------------//
305
277
 
306
278
  /// @dev registers the sending component as a distribution component
307
279
  function _registerDistribution(address distributioAddress)
308
280
  internal
309
281
  virtual
282
+ nonReentrant()
310
283
  returns (NftId distributionNftId)
311
284
  {
312
285
  // register/create component info
@@ -330,10 +303,6 @@ contract ComponentService is
330
303
  // set distribution in product info
331
304
  productInfo.distributionNftId = distributionNftId;
332
305
  instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
333
-
334
- // authorize
335
- instanceAdmin.initializeComponentAuthorization(
336
- IInstanceLinkedComponent(distributioAddress));
337
306
  }
338
307
 
339
308
 
@@ -344,94 +313,31 @@ contract ComponentService is
344
313
  external
345
314
  virtual
346
315
  {
347
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
348
- (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
316
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
317
+ (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
349
318
  instance.getInstanceReader(), distributionNftId);
350
319
  bool feesChanged = false;
351
320
 
352
321
  // update distributino fee if required
353
- if(!FeeLib.eq(productInfo.distributionFee, distributionFee)) {
354
- _logUpdateFee(productNftId, "DistributionFee", productInfo.distributionFee, distributionFee);
355
- productInfo.distributionFee = distributionFee;
322
+ if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
323
+ _logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
324
+ feeInfo.distributionFee = distributionFee;
356
325
  feesChanged = true;
357
326
  }
358
327
 
359
328
  // update min distribution owner fee if required
360
- if(!FeeLib.eq(productInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
361
- _logUpdateFee(productNftId, "MinDistributionOwnerFee", productInfo.minDistributionOwnerFee, minDistributionOwnerFee);
362
- productInfo.minDistributionOwnerFee = minDistributionOwnerFee;
329
+ if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
330
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
331
+ feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
363
332
  feesChanged = true;
364
333
  }
365
334
 
366
335
  if(feesChanged) {
367
- instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
336
+ instance.getInstanceStore().updateFee(productNftId, feeInfo);
368
337
  emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
369
338
  }
370
339
  }
371
340
 
372
- function increaseDistributionBalance(
373
- InstanceStore instanceStore,
374
- NftId distributionNftId,
375
- Amount amount,
376
- Amount feeAmount
377
- )
378
- external
379
- virtual
380
- // TODO re-enable once role granting is stable and fixed
381
- // restricted()
382
- {
383
- _checkNftType(distributionNftId, DISTRIBUTION());
384
- _changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
385
- }
386
-
387
-
388
- function decreaseDistributionBalance(
389
- InstanceStore instanceStore,
390
- NftId distributionNftId,
391
- Amount amount,
392
- Amount feeAmount
393
- )
394
- external
395
- virtual
396
- // TODO re-enable once role granting is stable and fixed
397
- // restricted()
398
- {
399
- _checkNftType(distributionNftId, DISTRIBUTION());
400
- _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
401
- }
402
-
403
- //-------- distributor -------------------------------------------------------//
404
-
405
- function increaseDistributorBalance(
406
- InstanceStore instanceStore,
407
- NftId distributorNftId,
408
- Amount amount,
409
- Amount feeAmount
410
- )
411
- external
412
- virtual
413
- // TODO re-enable once role granting is stable and fixed
414
- // restricted()
415
- {
416
- _checkNftType(distributorNftId, DISTRIBUTOR());
417
- _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
418
- }
419
-
420
- function decreaseDistributorBalance(
421
- InstanceStore instanceStore,
422
- NftId distributorNftId,
423
- Amount amount,
424
- Amount feeAmount
425
- )
426
- external
427
- virtual
428
- // TODO re-enable once role granting is stable and fixed
429
- // restricted()
430
- {
431
- _checkNftType(distributorNftId, DISTRIBUTOR());
432
- _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
433
- }
434
-
435
341
  //-------- oracle -------------------------------------------------------//
436
342
 
437
343
  function _registerOracle(address oracleAddress)
@@ -445,7 +351,7 @@ contract ComponentService is
445
351
  InstanceStore instanceStore;
446
352
  NftId productNftId;
447
353
 
448
- (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
354
+ (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
449
355
  oracleAddress,
450
356
  ORACLE());
451
357
 
@@ -462,10 +368,6 @@ contract ComponentService is
462
368
  productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
463
369
  productInfo.numberOfOracles++;
464
370
  instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
465
-
466
- // authorize
467
- instanceAdmin.initializeComponentAuthorization(
468
- IInstanceLinkedComponent(oracleAddress));
469
371
  }
470
372
 
471
373
  //-------- pool ---------------------------------------------------------//
@@ -481,7 +383,7 @@ contract ComponentService is
481
383
  InstanceStore instanceStore;
482
384
  NftId productNftId;
483
385
 
484
- (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
386
+ (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
485
387
  poolAddress,
486
388
  POOL());
487
389
 
@@ -500,9 +402,6 @@ contract ComponentService is
500
402
  // update pool in product info
501
403
  productInfo.poolNftId = poolNftId;
502
404
  instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
503
-
504
- // authorize
505
- instanceAdmin.initializeComponentAuthorization(pool);
506
405
  }
507
406
 
508
407
 
@@ -514,124 +413,39 @@ contract ComponentService is
514
413
  external
515
414
  virtual
516
415
  {
517
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
518
- (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
416
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
417
+
418
+ (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
519
419
  instance.getInstanceReader(), poolNftId);
520
420
  bool feesChanged = false;
521
421
 
522
422
  // update pool fee if required
523
- if(!FeeLib.eq(productInfo.poolFee, poolFee)) {
524
- _logUpdateFee(productNftId, "PoolFee", productInfo.poolFee, poolFee);
525
- productInfo.poolFee = poolFee;
423
+ if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
424
+ _logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
425
+ feeInfo.poolFee = poolFee;
526
426
  feesChanged = true;
527
427
  }
528
428
 
529
429
  // update staking fee if required
530
- if(!FeeLib.eq(productInfo.stakingFee, stakingFee)) {
531
- _logUpdateFee(productNftId, "StakingFee", productInfo.stakingFee, stakingFee);
532
- productInfo.stakingFee = stakingFee;
430
+ if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
431
+ _logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
432
+ feeInfo.stakingFee = stakingFee;
533
433
  feesChanged = true;
534
434
  }
535
435
 
536
436
  // update performance fee if required
537
- if(!FeeLib.eq(productInfo.performanceFee, performanceFee)) {
538
- _logUpdateFee(productNftId, "PerformanceFee", productInfo.performanceFee, performanceFee);
539
- productInfo.performanceFee = performanceFee;
437
+ if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
438
+ _logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
439
+ feeInfo.performanceFee = performanceFee;
540
440
  feesChanged = true;
541
441
  }
542
442
 
543
443
  if(feesChanged) {
544
- instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
444
+ instance.getInstanceStore().updateFee(productNftId, feeInfo);
545
445
  emit LogComponentServicePoolFeesUpdated(poolNftId);
546
446
  }
547
447
  }
548
448
 
549
- function increasePoolBalance(
550
- InstanceStore instanceStore,
551
- NftId poolNftId,
552
- Amount amount,
553
- Amount feeAmount
554
- )
555
- public
556
- virtual
557
- // TODO re-enable once role granting is stable and fixed
558
- // restricted()
559
- {
560
- _checkNftType(poolNftId, POOL());
561
- _changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
562
- }
563
-
564
- function decreasePoolBalance(
565
- InstanceStore instanceStore,
566
- NftId poolNftId,
567
- Amount amount,
568
- Amount feeAmount
569
- )
570
- public
571
- virtual
572
- // TODO re-enable once role granting is stable and fixed
573
- // restricted()
574
- {
575
- _checkNftType(poolNftId, POOL());
576
- _changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
577
- }
578
-
579
- //-------- bundle -------------------------------------------------------//
580
-
581
- function increaseBundleBalance(
582
- InstanceStore instanceStore,
583
- NftId bundleNftId,
584
- Amount amount,
585
- Amount feeAmount
586
- )
587
- external
588
- virtual
589
- // TODO re-enable once role granting is stable and fixed
590
- // restricted()
591
- {
592
- _checkNftType(bundleNftId, BUNDLE());
593
- _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
594
- }
595
-
596
- function decreaseBundleBalance(
597
- InstanceStore instanceStore,
598
- NftId bundleNftId,
599
- Amount amount,
600
- Amount feeAmount
601
- )
602
- external
603
- virtual
604
- // TODO re-enable once role granting is stable and fixed
605
- // restricted()
606
- {
607
- _checkNftType(bundleNftId, BUNDLE());
608
- _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
609
- }
610
-
611
-
612
- //-------- internal functions ------------------------------------------//
613
-
614
- function _changeTargetBalance(
615
- bool increase,
616
- InstanceStore instanceStore,
617
- NftId targetNftId,
618
- Amount amount,
619
- Amount feeAmount
620
- )
621
- internal
622
- virtual
623
- {
624
- Amount totalAmount = amount + feeAmount;
625
-
626
- if(increase) {
627
- if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
628
- if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
629
- } else {
630
- if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
631
- if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
632
- }
633
- }
634
-
635
449
  /// @dev Registers the component represented by the provided address.
636
450
  function _register(
637
451
  address componentAddress, // address of component to register
@@ -686,9 +500,6 @@ contract ComponentService is
686
500
  address(token),
687
501
  address(instanceAdmin.authority()));
688
502
 
689
- // set token handler allowance to max
690
- // componentInfo.tokenHandler.approve(token, AmountLib.max());
691
-
692
503
  // register component with instance
693
504
  instanceStore.createComponent(
694
505
  componentNftId,
@@ -697,6 +508,9 @@ contract ComponentService is
697
508
  // link component contract to nft id
698
509
  component.linkToRegisteredNftId();
699
510
 
511
+ // authorize
512
+ instanceAdmin.initializeComponentAuthorization(component);
513
+
700
514
  emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
701
515
  }
702
516
 
@@ -716,7 +530,7 @@ contract ComponentService is
716
530
  }
717
531
 
718
532
 
719
- function _getLinkedProductInfo(
533
+ function _getLinkedFeeInfo(
720
534
  InstanceReader instanceReader,
721
535
  NftId componentNftId
722
536
  )
@@ -724,11 +538,11 @@ contract ComponentService is
724
538
  view
725
539
  returns(
726
540
  NftId productNftId,
727
- IComponents.ProductInfo memory info
541
+ IComponents.FeeInfo memory info
728
542
  )
729
543
  {
730
- productNftId = _getProductNftId(componentNftId);
731
- info = instanceReader.getProductInfo(productNftId);
544
+ productNftId = getRegistry().getParentNftId(componentNftId);
545
+ info = instanceReader.getFeeInfo(productNftId);
732
546
  }
733
547
 
734
548
 
@@ -776,9 +590,12 @@ contract ComponentService is
776
590
  revert ErrorComponentServiceAlreadyRegistered(componentAddress);
777
591
  }
778
592
 
779
- // check release matches
593
+ // component release matches servie release
780
594
  address parentAddress = registry.getObjectAddress(parentNftId);
781
- if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
595
+ if (component.getRelease() != getRelease()) {
596
+ revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), getRelease());
597
+ // component release matches parent release
598
+ } else if (component.getRelease() != IRegisterable(parentAddress).getRelease()){
782
599
  revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
783
600
  }
784
601
 
@@ -806,14 +623,60 @@ contract ComponentService is
806
623
 
807
624
  // get initial owner and instance
808
625
  initialOwner = info.initialOwner;
809
- instance = _getInstance(registry, instanceNftId);
626
+ instance = IInstance(registry.getObjectAddress(instanceNftId));
810
627
  }
811
628
 
812
629
  function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
813
630
  instanceAdmin.setTargetLocked(componentAddress, locked);
814
631
  }
815
632
 
633
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
634
+ internal
635
+ view
636
+ returns (
637
+ NftId componentNftId,
638
+ IInstance instance
639
+ )
640
+ {
641
+ return _getAndVerifyComponent(expectedType, true); // only active
642
+ }
643
+
644
+ function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
645
+ internal
646
+ view
647
+ returns (
648
+ NftId componentNftId,
649
+ IInstance instance
650
+ )
651
+ {
652
+ IRegistry.ObjectInfo memory info;
653
+ address instanceAddress;
654
+
655
+ if (expectedType != COMPONENT()) {
656
+ (info, instanceAddress) = ContractLib.getAndVerifyComponent(
657
+ getRegistry(),
658
+ msg.sender, // caller
659
+ expectedType,
660
+ isActive);
661
+ } else {
662
+ (info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
663
+ getRegistry(),
664
+ msg.sender,
665
+ isActive);
666
+ }
667
+
668
+ // get component nft id and instance
669
+ componentNftId = info.nftId;
670
+ instance = IInstance(instanceAddress);
671
+ }
672
+
816
673
  function _getDomain() internal pure virtual override returns(ObjectType) {
817
674
  return COMPONENT();
818
675
  }
676
+
677
+ function _checkSupportsInterface(address component) internal view {
678
+ if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
679
+ revert ErrorComponentServiceNotInstanceLinkedComponent(component);
680
+ }
681
+ }
819
682
  }