@etherisc/gif-next 0.0.2-f12cf4d-104 → 0.0.2-f13fd28-503

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