@etherisc/gif-next 0.0.2-b2e620f-736 → 0.0.2-b37fa8b-169

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 (482) hide show
  1. package/README.md +63 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +91 -45
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +573 -288
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +295 -47
  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 +452 -210
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +119 -14
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -144
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +275 -59
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -88
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +512 -204
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -77
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -87
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +358 -82
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -100
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +274 -58
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -132
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +274 -58
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +128 -168
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +274 -58
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -63
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -138
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +274 -58
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +342 -183
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  63. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  64. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  67. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  68. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +429 -35
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +345 -12
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +473 -98
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +805 -448
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +246 -70
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +656 -418
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +377 -64
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -55
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +524 -1520
  87. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  88. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2835 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -35
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +294 -53
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -21
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -21
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +96 -50
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -69
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +274 -58
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +300 -123
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +124 -58
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +186 -33
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -31
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +238 -19
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -31
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +100 -34
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +346 -87
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +121 -63
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +103 -41
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -48
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +274 -58
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +113 -75
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +50 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -42
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +231 -19
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +511 -21
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +118 -72
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +100 -70
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +40 -42
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +279 -43
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +91 -41
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +71 -60
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +704 -472
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +76 -38
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +710 -407
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +184 -128
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +19 -21
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +224 -210
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +113 -63
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -21
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +131 -141
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -21
  230. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +43 -6
  232. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  235. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  238. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  244. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -21
  245. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  246. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +43 -6
  247. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  248. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  249. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  250. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  252. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  253. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  254. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  256. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  257. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  258. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  259. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  264. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  265. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  266. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1450 -140
  268. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  269. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +161 -110
  270. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  271. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  272. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  273. package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -229
  274. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  275. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  276. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +129 -70
  278. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  280. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +200 -157
  282. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +86 -52
  284. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
  286. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  287. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  288. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  289. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
  290. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  291. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
  293. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  295. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  296. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  297. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  299. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  301. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  303. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  305. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  306. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  307. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  309. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  310. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  311. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  313. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  315. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  317. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  319. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +9 -4
  321. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
  323. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  325. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  330. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  332. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  334. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  336. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
  338. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  340. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +65 -27
  342. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  344. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  345. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  346. package/contracts/accounting/AccountingService.sol +15 -3
  347. package/contracts/accounting/IAccountingService.sol +4 -2
  348. package/contracts/authorization/AccessAdmin.sol +389 -298
  349. package/contracts/authorization/AccessAdminLib.sol +396 -0
  350. package/contracts/authorization/AccessManagerCloneable.sol +40 -31
  351. package/contracts/authorization/Authorization.sol +60 -228
  352. package/contracts/authorization/IAccess.sol +25 -7
  353. package/contracts/authorization/IAccessAdmin.sol +81 -80
  354. package/contracts/authorization/IAuthorization.sol +3 -51
  355. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  356. package/contracts/authorization/ServiceAuthorization.sol +248 -34
  357. package/contracts/distribution/BasicDistribution.sol +13 -11
  358. package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
  359. package/contracts/distribution/Distribution.sol +20 -60
  360. package/contracts/distribution/DistributionService.sol +165 -74
  361. package/contracts/distribution/IDistributionComponent.sol +3 -10
  362. package/contracts/distribution/IDistributionService.sol +34 -19
  363. package/contracts/examples/fire/FirePool.sol +0 -4
  364. package/contracts/examples/fire/FireProduct.sol +7 -12
  365. package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
  366. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  367. package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
  368. package/contracts/examples/unpermissioned/SimpleProduct.sol +87 -27
  369. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  370. package/contracts/instance/BaseStore.sol +93 -0
  371. package/contracts/instance/IBaseStore.sol +37 -0
  372. package/contracts/instance/IInstance.sol +99 -14
  373. package/contracts/instance/IInstanceService.sol +54 -7
  374. package/contracts/instance/Instance.sol +166 -70
  375. package/contracts/instance/InstanceAdmin.sol +227 -296
  376. package/contracts/instance/InstanceAuthorizationV3.sol +121 -60
  377. package/contracts/instance/InstanceReader.sol +378 -373
  378. package/contracts/instance/InstanceService.sol +283 -173
  379. package/contracts/instance/InstanceStore.sol +9 -82
  380. package/contracts/instance/ProductStore.sol +235 -0
  381. package/contracts/instance/RiskSet.sol +10 -2
  382. package/contracts/instance/TargetNames.sol +10 -0
  383. package/contracts/instance/base/BalanceStore.sol +4 -6
  384. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  385. package/contracts/instance/module/IBundle.sol +6 -5
  386. package/contracts/instance/module/IComponents.sol +16 -5
  387. package/contracts/instance/module/IDistribution.sol +21 -8
  388. package/contracts/instance/module/IPolicy.sol +28 -8
  389. package/contracts/instance/module/IRisk.sol +2 -0
  390. package/contracts/oracle/BasicOracle.sol +2 -4
  391. package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
  392. package/contracts/oracle/IOracle.sol +9 -4
  393. package/contracts/oracle/Oracle.sol +2 -4
  394. package/contracts/oracle/OracleService.sol +8 -8
  395. package/contracts/pool/BasicPool.sol +3 -16
  396. package/contracts/pool/BasicPoolAuthorization.sol +10 -5
  397. package/contracts/pool/BundleService.sol +34 -43
  398. package/contracts/pool/IBundleService.sol +14 -13
  399. package/contracts/pool/IPoolService.sol +7 -2
  400. package/contracts/pool/Pool.sol +4 -16
  401. package/contracts/pool/PoolLib.sol +127 -2
  402. package/contracts/pool/PoolService.sol +41 -184
  403. package/contracts/product/ApplicationService.sol +85 -17
  404. package/contracts/product/BasicProduct.sol +1 -3
  405. package/contracts/product/BasicProductAuthorization.sol +11 -4
  406. package/contracts/product/ClaimService.sol +99 -105
  407. package/contracts/product/IApplicationService.sol +24 -2
  408. package/contracts/product/IClaimService.sol +5 -4
  409. package/contracts/product/IPolicyService.sol +9 -2
  410. package/contracts/product/IPricingService.sol +1 -0
  411. package/contracts/product/IRiskService.sol +25 -10
  412. package/contracts/product/PolicyService.sol +41 -103
  413. package/contracts/product/PolicyServiceLib.sol +79 -5
  414. package/contracts/product/PricingService.sol +33 -31
  415. package/contracts/product/Product.sol +44 -29
  416. package/contracts/product/RiskService.sol +63 -18
  417. package/contracts/registry/IRegistry.sol +15 -9
  418. package/contracts/registry/IRelease.sol +6 -3
  419. package/contracts/registry/Registry.sol +15 -9
  420. package/contracts/registry/RegistryAdmin.sol +100 -263
  421. package/contracts/registry/RegistryAuthorization.sol +336 -0
  422. package/contracts/registry/RegistryService.sol +1 -1
  423. package/contracts/registry/ReleaseAdmin.sol +62 -112
  424. package/contracts/registry/ReleaseRegistry.sol +57 -43
  425. package/contracts/registry/ServiceAuthorizationV3.sol +48 -32
  426. package/contracts/registry/TokenRegistry.sol +56 -52
  427. package/contracts/shared/Component.sol +17 -29
  428. package/contracts/shared/ComponentService.sol +249 -238
  429. package/contracts/shared/ContractLib.sol +134 -75
  430. package/contracts/shared/IComponent.sol +1 -4
  431. package/contracts/shared/IComponentService.sol +21 -19
  432. package/contracts/shared/IKeyValueStore.sol +9 -1
  433. package/contracts/shared/INftOwnable.sol +2 -0
  434. package/contracts/shared/IRegisterable.sol +0 -1
  435. package/contracts/shared/InitializableERC165.sol +9 -1
  436. package/contracts/shared/InstanceLinkedComponent.sol +4 -7
  437. package/contracts/shared/KeyValueStore.sol +3 -3
  438. package/contracts/shared/NftOwnable.sol +4 -2
  439. package/contracts/shared/PolicyHolder.sol +3 -2
  440. package/contracts/shared/Registerable.sol +1 -4
  441. package/contracts/shared/Service.sol +6 -4
  442. package/contracts/shared/TokenHandler.sol +5 -4
  443. package/contracts/staking/IStaking.sol +266 -64
  444. package/contracts/staking/IStakingService.sol +44 -82
  445. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  446. package/contracts/staking/Staking.sol +474 -202
  447. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  448. package/contracts/staking/StakingManager.sol +4 -3
  449. package/contracts/staking/StakingReader.sol +58 -77
  450. package/contracts/staking/StakingService.sol +49 -158
  451. package/contracts/staking/StakingServiceManager.sol +1 -0
  452. package/contracts/staking/StakingStore.sol +1093 -330
  453. package/contracts/staking/TargetHandler.sol +132 -0
  454. package/contracts/staking/TargetManagerLib.sol +69 -46
  455. package/contracts/type/Amount.sol +4 -0
  456. package/contracts/type/Blocknumber.sol +15 -15
  457. package/contracts/type/ChainId.sol +101 -0
  458. package/contracts/type/Fee.sol +8 -8
  459. package/contracts/type/NftId.sol +3 -3
  460. package/contracts/type/ObjectType.sol +21 -17
  461. package/contracts/type/RiskId.sol +4 -3
  462. package/contracts/type/RoleId.sol +57 -59
  463. package/contracts/type/Seconds.sol +19 -0
  464. package/contracts/type/String.sol +12 -0
  465. package/contracts/type/Timestamp.sol +4 -2
  466. package/contracts/type/UFixed.sol +28 -10
  467. package/contracts/type/Version.sol +39 -0
  468. package/contracts/upgradeability/IVersionable.sol +3 -0
  469. package/contracts/upgradeability/ProxyManager.sol +25 -11
  470. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  471. package/contracts/upgradeability/Versionable.sol +6 -3
  472. package/package.json +2 -2
  473. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  474. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  475. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  476. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  477. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  478. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  479. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  480. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  481. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  482. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -4,7 +4,6 @@ pragma solidity ^0.8.20;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {IAccountingService} from "../accounting/IAccountingService.sol";
7
- import {IComponent} from "../shared/IComponent.sol";
8
7
  import {IComponents} from "../instance/module/IComponents.sol";
9
8
  import {IComponentService} from "./IComponentService.sol";
10
9
  import {IInstance} from "../instance/IInstance.sol";
@@ -12,23 +11,25 @@ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
12
11
  import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
13
12
  import {InstanceReader} from "../instance/InstanceReader.sol";
14
13
  import {InstanceStore} from "../instance/InstanceStore.sol";
15
- import {IInstanceService} from "../instance/IInstanceService.sol";
16
14
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
17
15
  import {IProductComponent} from "../product/IProductComponent.sol";
18
- import {IRegisterable} from "../shared/IRegisterable.sol";
19
16
  import {IRegistry} from "../registry/IRegistry.sol";
20
17
  import {IRegistryService} from "../registry/IRegistryService.sol";
18
+ import {IStaking} from "../staking/IStaking.sol";
19
+ import {IStakingService} from "../staking/IStakingService.sol";
21
20
 
21
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
22
22
  import {Amount, AmountLib} from "../type/Amount.sol";
23
+ import {ChainIdLib} from "../type/ChainId.sol";
23
24
  import {ContractLib} from "../shared/ContractLib.sol";
24
25
  import {Fee, FeeLib} from "../type/Fee.sol";
25
26
  import {KEEP_STATE} from "../type/StateId.sol";
26
27
  import {NftId, NftIdLib} from "../type/NftId.sol";
27
- import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
28
+ import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
29
+ import {ProductStore} from "../instance/ProductStore.sol";
28
30
  import {Service} from "../shared/Service.sol";
29
31
  import {TokenHandler} from "../shared/TokenHandler.sol";
30
32
  import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
31
- import {VersionPart} from "../type/Version.sol";
32
33
 
33
34
 
34
35
  contract ComponentService is
@@ -40,32 +41,7 @@ contract ComponentService is
40
41
 
41
42
  IAccountingService private _accountingService;
42
43
  IRegistryService private _registryService;
43
- IInstanceService private _instanceService;
44
-
45
- modifier onlyComponent(address 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);
64
- }
65
-
66
- _;
67
- }
68
-
44
+ IStaking private _staking;
69
45
 
70
46
  function _initialize(
71
47
  address owner,
@@ -84,84 +60,104 @@ contract ComponentService is
84
60
 
85
61
  _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
86
62
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
87
- _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
63
+ _staking = IStakingService(_getServiceAddress(STAKING())).getStaking();
88
64
 
89
65
  _registerInterface(type(IComponentService).interfaceId);
90
66
  }
91
67
 
92
68
  //-------- component ----------------------------------------------------//
93
69
 
94
- function registerComponent(address component)
70
+ /// @inheritdoc IComponentService
71
+ function registerComponent(address componentAddress)
95
72
  external
96
73
  virtual
97
- onlyComponent(component)
74
+ restricted()
98
75
  returns (NftId componentNftId)
99
76
  {
100
- // type specific registration
101
- ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
102
- if (componentType == POOL()) {
103
- return _registerPool(component);
104
- }
105
- if (componentType == DISTRIBUTION()) {
106
- return _registerDistribution(component);
77
+ // checks
78
+ // check sender is registered product
79
+ IRegistry registry = getRegistry();
80
+ if (!registry.isObjectType(msg.sender, PRODUCT())) {
81
+ revert ErrorComponentServiceCallerNotProduct(msg.sender);
107
82
  }
108
- if (componentType == ORACLE()) {
109
- return _registerOracle(component);
83
+
84
+ // check provided address is product contract
85
+ if (!_isInstanceLinkedComponent(componentAddress)) {
86
+ revert ErrorComponentServiceNotComponent(componentAddress);
110
87
  }
111
88
 
112
- // fail
113
- revert ErrorComponentServiceTypeNotSupported(component, componentType);
89
+ NftId productNftId = registry.getNftIdForAddress(msg.sender);
90
+ IInstance instance = IInstance(
91
+ registry.getObjectAddress(
92
+ registry.getParentNftId(productNftId)));
93
+
94
+ componentNftId = _verifyAndRegister(
95
+ instance,
96
+ componentAddress,
97
+ productNftId, // product is parent of component to be registered
98
+ address(0)); // token will be inhereited from product
114
99
  }
115
100
 
101
+
102
+ /// @inheritdoc IComponentService
116
103
  function approveTokenHandler(
117
104
  IERC20Metadata token,
118
105
  Amount amount
119
106
  )
120
107
  external
121
108
  virtual
109
+ restricted()
122
110
  {
123
111
  // checks
124
- (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
125
- TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
126
- componentNftId).tokenHandler;
112
+ (NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
113
+ TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
114
+ componentNftId);
127
115
 
128
116
  // effects
129
117
  tokenHandler.approve(token, amount);
130
118
  }
131
119
 
132
120
 
121
+ /// @inheritdoc IComponentService
133
122
  function setWallet(address newWallet)
134
123
  external
135
124
  virtual
125
+ restricted()
136
126
  {
137
127
  // checks
138
- (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
139
- TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
140
- componentNftId).tokenHandler;
128
+ (NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
129
+ TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
130
+ componentNftId);
141
131
 
142
132
  // effects
143
133
  tokenHandler.setWallet(newWallet);
144
134
  }
145
135
 
146
136
  /// @inheritdoc IComponentService
147
- function setComponentLocked(address componentAddress, bool locked)
137
+ function setLocked(bool locked)
148
138
  external
149
139
  virtual
150
140
  restricted()
151
141
  {
152
- // TODO inactive component can lock/unlock other components?
153
142
  (, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
154
- instance.setLockedFromService(componentAddress, locked);
143
+
144
+ address component = msg.sender;
145
+ instance.getInstanceAdmin().setComponentLocked(
146
+ component,
147
+ locked);
148
+ emit LogComponentServiceComponentLocked(component, locked);
155
149
  }
156
150
 
151
+
157
152
  /// @inheritdoc IComponentService
158
153
  function withdrawFees(Amount amount)
159
154
  external
160
155
  virtual
156
+ restricted()
161
157
  returns (Amount withdrawnAmount)
162
158
  {
163
159
  // checks
164
- (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
160
+ (NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
165
161
  InstanceReader instanceReader = instance.getInstanceReader();
166
162
 
167
163
  // determine withdrawn amount
@@ -206,50 +202,70 @@ contract ComponentService is
206
202
 
207
203
  //-------- product ------------------------------------------------------//
208
204
 
209
- function registerProduct(address productAddress)
205
+ /// @inheritdoc IComponentService
206
+ function registerProduct(address productAddress, address token)
210
207
  external
211
208
  virtual
209
+ restricted()
212
210
  nonReentrant()
213
- onlyComponent(productAddress)
214
211
  returns (NftId productNftId)
215
212
  {
216
- // register/create component setup
217
- InstanceAdmin instanceAdmin;
218
- InstanceStore instanceStore;
219
- (, instanceAdmin, instanceStore,, productNftId) = _register(
220
- productAddress,
221
- PRODUCT());
222
-
223
- // get product
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);
213
+ // checks
214
+ // check sender is registered instance
215
+ IRegistry registry = getRegistry();
216
+ if (!registry.isObjectType(msg.sender, INSTANCE())) {
217
+ revert ErrorComponentServiceCallerNotInstance(msg.sender);
218
+ }
232
219
 
233
- // create info
234
- instanceStore.createProduct(
235
- productNftId,
236
- initialProductInfo);
220
+ // check provided address is product contract
221
+ if (!_isProduct(productAddress)) {
222
+ revert ErrorComponentServiceNotProduct(productAddress);
223
+ }
237
224
 
238
- instanceStore.createFee(
239
- productNftId,
240
- product.getInitialFeeInfo());
225
+ IInstance instance = IInstance(msg.sender);
226
+ NftId instanceNftId = registry.getNftIdForAddress(msg.sender);
227
+ productNftId = _verifyAndRegister(
228
+ instance,
229
+ productAddress,
230
+ instanceNftId, // instance is parent of product to be registered
231
+ token);
232
+
233
+ // add product specific token for product to staking
234
+ _staking.addTargetToken(
235
+ instanceNftId,
236
+ token);
237
+ }
238
+
239
+
240
+ function _isProduct(address target) internal view virtual returns (bool) {
241
+ if (!_isInstanceLinkedComponent(target)) {
242
+ return false;
243
+ }
244
+
245
+ return IInstanceLinkedComponent(target).getInitialInfo().objectType == PRODUCT();
246
+ }
247
+
248
+
249
+ function _isInstanceLinkedComponent(address target) internal view virtual returns (bool) {
250
+ if (!ContractLib.isContract(target)) {
251
+ return false;
252
+ }
253
+
254
+ return ContractLib.supportsInterface(target, type(IInstanceLinkedComponent).interfaceId);
241
255
  }
242
256
 
243
257
 
258
+ /// @inheritdoc IComponentService
244
259
  function setProductFees(
245
260
  Fee memory productFee, // product fee on net premium
246
261
  Fee memory processingFee // product fee on payout amounts
247
262
  )
248
263
  external
249
264
  virtual
265
+ restricted()
250
266
  nonReentrant()
251
267
  {
252
- (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
268
+ (NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
253
269
  IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
254
270
  bool feesChanged = false;
255
271
 
@@ -268,31 +284,54 @@ contract ComponentService is
268
284
  }
269
285
 
270
286
  if(feesChanged) {
271
- instance.getInstanceStore().updateFee(productNftId, feeInfo);
287
+ instance.getProductStore().updateFee(productNftId, feeInfo);
272
288
  emit LogComponentServiceProductFeesUpdated(productNftId);
273
289
  }
274
290
  }
275
291
 
292
+
293
+ function _createProduct(
294
+ ProductStore productStore,
295
+ NftId productNftId,
296
+ address productAddress
297
+ )
298
+ internal
299
+ virtual
300
+ {
301
+ // create product in instance instanceStore
302
+ IProductComponent product = IProductComponent(productAddress);
303
+ IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
304
+ // force initialization of linked components with empty values to
305
+ // ensure no components are linked upon initialization of the product
306
+ initialProductInfo.poolNftId = NftIdLib.zero();
307
+ initialProductInfo.distributionNftId = NftIdLib.zero();
308
+ initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
309
+
310
+ // create info
311
+ productStore.createProduct(
312
+ productNftId,
313
+ initialProductInfo);
314
+
315
+ productStore.createFee(
316
+ productNftId,
317
+ product.getInitialFeeInfo());
318
+ }
319
+
276
320
  //-------- distribution -------------------------------------------------//
277
321
 
278
322
  /// @dev registers the sending component as a distribution component
279
- function _registerDistribution(address distributioAddress)
323
+ function _createDistribution(
324
+ InstanceStore instanceStore,
325
+ ProductStore productStore,
326
+ NftId productNftId,
327
+ NftId distributionNftId,
328
+ IComponents.ProductInfo memory productInfo
329
+ )
280
330
  internal
281
331
  virtual
282
332
  nonReentrant()
283
- returns (NftId distributionNftId)
284
333
  {
285
- // register/create component info
286
- InstanceReader instanceReader;
287
- InstanceAdmin instanceAdmin;
288
- InstanceStore instanceStore;
289
- NftId productNftId;
290
- (instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
291
- distributioAddress,
292
- DISTRIBUTION());
293
-
294
334
  // check product is still expecting a distribution registration
295
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
296
335
  if (!productInfo.hasDistribution) {
297
336
  revert ErrorProductServiceNoDistributionExpected(productNftId);
298
337
  }
@@ -302,7 +341,7 @@ contract ComponentService is
302
341
 
303
342
  // set distribution in product info
304
343
  productInfo.distributionNftId = distributionNftId;
305
- instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
344
+ productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
306
345
  }
307
346
 
308
347
 
@@ -312,8 +351,9 @@ contract ComponentService is
312
351
  )
313
352
  external
314
353
  virtual
354
+ restricted()
315
355
  {
316
- (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
356
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyComponent(DISTRIBUTION(), true);
317
357
  (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
318
358
  instance.getInstanceReader(), distributionNftId);
319
359
  bool feesChanged = false;
@@ -333,30 +373,24 @@ contract ComponentService is
333
373
  }
334
374
 
335
375
  if(feesChanged) {
336
- instance.getInstanceStore().updateFee(productNftId, feeInfo);
376
+ instance.getProductStore().updateFee(productNftId, feeInfo);
337
377
  emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
338
378
  }
339
379
  }
340
380
 
341
381
  //-------- oracle -------------------------------------------------------//
342
382
 
343
- function _registerOracle(address oracleAddress)
383
+ function _createOracle(
384
+ InstanceStore instanceStore,
385
+ ProductStore productStore,
386
+ NftId productNftId,
387
+ NftId oracleNftId,
388
+ IComponents.ProductInfo memory productInfo
389
+ )
344
390
  internal
345
391
  virtual
346
- returns (NftId oracleNftId)
347
392
  {
348
- // register/create component setup
349
- InstanceReader instanceReader;
350
- InstanceAdmin instanceAdmin;
351
- InstanceStore instanceStore;
352
- NftId productNftId;
353
-
354
- (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
355
- oracleAddress,
356
- ORACLE());
357
-
358
393
  // check product is still expecting an oracle registration
359
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
360
394
  if (productInfo.expectedNumberOfOracles == 0) {
361
395
  revert ErrorProductServiceNoOraclesExpected(productNftId);
362
396
  }
@@ -367,41 +401,37 @@ contract ComponentService is
367
401
  // update/add oracle to product info
368
402
  productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
369
403
  productInfo.numberOfOracles++;
370
- instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
404
+ productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
371
405
  }
372
406
 
373
407
  //-------- pool ---------------------------------------------------------//
374
408
 
375
- function _registerPool(address poolAddress)
409
+ function _createPool(
410
+ InstanceStore instanceStore,
411
+ ProductStore productStore,
412
+ NftId productNftId,
413
+ NftId poolNftId,
414
+ address componentAddress,
415
+ IComponents.ProductInfo memory productInfo
416
+ )
376
417
  internal
377
418
  virtual
378
- returns (NftId poolNftId)
379
419
  {
380
- // register/create component setup
381
- InstanceReader instanceReader;
382
- InstanceAdmin instanceAdmin;
383
- InstanceStore instanceStore;
384
- NftId productNftId;
385
-
386
- (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
387
- poolAddress,
388
- POOL());
389
-
390
420
  // check product is still expecting a pool registration
391
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
421
+ //IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
392
422
  if (productInfo.poolNftId.gtz()) {
393
423
  revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
394
424
  }
395
425
 
396
426
  // create info
397
- IPoolComponent pool = IPoolComponent(poolAddress);
427
+ IPoolComponent pool = IPoolComponent(componentAddress);
398
428
  instanceStore.createPool(
399
429
  poolNftId,
400
430
  pool.getInitialPoolInfo());
401
431
 
402
432
  // update pool in product info
403
433
  productInfo.poolNftId = poolNftId;
404
- instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
434
+ productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
405
435
  }
406
436
 
407
437
 
@@ -412,8 +442,9 @@ contract ComponentService is
412
442
  )
413
443
  external
414
444
  virtual
445
+ restricted()
415
446
  {
416
- (NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
447
+ (NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
417
448
 
418
449
  (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
419
450
  instance.getInstanceReader(), poolNftId);
@@ -441,64 +472,79 @@ contract ComponentService is
441
472
  }
442
473
 
443
474
  if(feesChanged) {
444
- instance.getInstanceStore().updateFee(productNftId, feeInfo);
475
+ instance.getProductStore().updateFee(productNftId, feeInfo);
445
476
  emit LogComponentServicePoolFeesUpdated(poolNftId);
446
477
  }
447
478
  }
448
479
 
480
+
449
481
  /// @dev Registers the component represented by the provided address.
450
- function _register(
451
- address componentAddress, // address of component to register
452
- ObjectType requiredType // required type for component for registration
482
+ /// The caller must ensure componentAddress is IInstanceLinkedComponent.
483
+ function _verifyAndRegister(
484
+ IInstance instance,
485
+ address componentAddress,
486
+ NftId parentNftId,
487
+ address token
453
488
  )
454
489
  internal
455
490
  virtual
456
- returns (
457
- InstanceReader instanceReader,
458
- InstanceAdmin instanceAdmin,
459
- InstanceStore instanceStore,
460
- NftId parentNftId,
461
- NftId componentNftId
462
- )
491
+ returns (NftId componentNftId)
463
492
  {
464
- NftId instanceNftId;
465
- IInstance instance;
466
- IInstanceLinkedComponent component;
467
- address initialOwner;
468
-
469
493
  (
470
- instanceNftId,
471
- instance,
472
- parentNftId,
473
- component,
474
- initialOwner
494
+ IInstanceLinkedComponent component,
495
+ IRegistry.ObjectInfo memory objectInfo // initial component info
475
496
  ) = _getAndVerifyRegisterableComponent(
476
- getRegistry(),
477
497
  componentAddress,
478
- requiredType);
498
+ parentNftId);
479
499
 
480
- // get instance supporting contracts (as function return values)
481
- instanceReader = instance.getInstanceReader();
482
- instanceAdmin = instance.getInstanceAdmin();
483
- instanceStore = instance.getInstanceStore();
500
+ InstanceStore instanceStore = instance.getInstanceStore();
501
+ ObjectType componentType = objectInfo.objectType;
484
502
 
485
- // register with registry
486
- if (requiredType == PRODUCT()) {
503
+ if(componentType == PRODUCT()) {
504
+ // register product with registry
487
505
  componentNftId = _registryService.registerProduct(
488
- component, initialOwner).nftId;
506
+ component,
507
+ objectInfo.initialOwner).nftId;
508
+
509
+ // create product info in instance store
510
+ _createProduct(instance.getProductStore(), componentNftId, componentAddress);
489
511
  } else {
512
+ // register non product component with registry
490
513
  componentNftId = _registryService.registerProductLinkedComponent(
491
- component, requiredType, initialOwner).nftId;
514
+ component,
515
+ objectInfo.objectType,
516
+ objectInfo.initialOwner).nftId;
517
+
518
+ InstanceReader instanceReader = instance.getInstanceReader();
519
+
520
+ // create non product component info in instance store
521
+ NftId productNftId = parentNftId;
522
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
523
+ if(componentType == POOL()) {
524
+ _createPool(instanceStore, instance.getProductStore(), productNftId, componentNftId, componentAddress, productInfo);
525
+ } else if(componentType == DISTRIBUTION()) {
526
+ _createDistribution(instanceStore, instance.getProductStore(), productNftId, componentNftId, productInfo);
527
+ } else if(componentType == ORACLE()) {
528
+ _createOracle(instanceStore, instance.getProductStore(), productNftId, componentNftId, productInfo);
529
+ } else {
530
+ revert ErrorComponentServiceComponentTypeNotSupported(componentAddress, componentType);
531
+ }
532
+
533
+ // get product's token
534
+ token = address(instanceReader.getTokenHandler(productNftId).TOKEN());
492
535
  }
493
536
 
537
+ _checkToken(instance, token);
538
+
539
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
540
+
494
541
  // deploy and wire token handler
495
542
  IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
496
- IERC20Metadata token = componentInfo.token;
497
543
  componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
498
544
  address(getRegistry()),
499
545
  address(component), // initially, component is its own wallet
500
- address(token),
501
- address(instanceAdmin.authority()));
546
+ token,
547
+ instanceAdmin.authority());
502
548
 
503
549
  // register component with instance
504
550
  instanceStore.createComponent(
@@ -509,9 +555,33 @@ contract ComponentService is
509
555
  component.linkToRegisteredNftId();
510
556
 
511
557
  // authorize
512
- instanceAdmin.initializeComponentAuthorization(component);
558
+ instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
559
+
560
+ emit LogComponentServiceRegistered(
561
+ instance.getNftId(),
562
+ componentNftId,
563
+ componentType,
564
+ address(component),
565
+ token,
566
+ objectInfo.initialOwner);
567
+ }
568
+
513
569
 
514
- emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
570
+ function _checkToken(IInstance instance, address token)
571
+ internal
572
+ view
573
+ {
574
+ if (! instance.isTokenRegistryDisabled()) {
575
+ // check if provided token is whitelisted and active
576
+ if (!ContractLib.isActiveToken(
577
+ getRegistry().getTokenRegistryAddress(),
578
+ ChainIdLib.current(),
579
+ token,
580
+ AccessManagerCloneable(authority()).getRelease())
581
+ ) {
582
+ revert ErrorComponentServiceTokenInvalid(token);
583
+ }
584
+ }
515
585
  }
516
586
 
517
587
 
@@ -548,98 +618,44 @@ contract ComponentService is
548
618
 
549
619
  /// @dev Based on the provided component address required type the component
550
620
  /// and related instance contract this function reverts iff:
551
- /// - the sender is not registered
552
- /// - the component contract does not support IInstanceLinkedComponent
553
- /// - the component type does not match with the required type
621
+ /// - the component parent does not match with the required parent
622
+ /// - the component release does not match with the service release
554
623
  /// - the component has already been registered
555
624
  function _getAndVerifyRegisterableComponent(
556
- IRegistry registry,
557
625
  address componentAddress,
558
- ObjectType requiredType
626
+ NftId requiredParent
559
627
  )
560
628
  internal
561
629
  view
562
630
  returns (
563
- NftId instanceNftId,
564
- IInstance instance,
565
- NftId parentNftId,
566
631
  IInstanceLinkedComponent component,
567
- address initialOwner
632
+ IRegistry.ObjectInfo memory info
568
633
  )
569
634
  {
570
- // check sender (instance or product) is registered
571
- IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
572
- if (senderInfo.nftId.eqz()) {
573
- revert ErrorComponentServiceSenderNotRegistered(msg.sender);
574
- }
575
-
576
- // the sender is the parent of the component to be registered
577
- // an instance caller wanting to register a product - or -
578
- // a product caller wantint go register a distribution, oracle or pool
579
- parentNftId = senderInfo.nftId;
580
-
581
- // check component is of required type
582
635
  component = IInstanceLinkedComponent(componentAddress);
583
- IRegistry.ObjectInfo memory info = component.getInitialInfo();
584
- if(info.objectType != requiredType) {
585
- revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
586
- }
636
+ info = component.getInitialInfo();
587
637
 
588
- // check component has not already been registered
589
- if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
590
- revert ErrorComponentServiceAlreadyRegistered(componentAddress);
638
+ // check component parent
639
+ if(info.parentNftId != requiredParent) {
640
+ revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
591
641
  }
592
642
 
593
- // component release matches servie release
594
- address parentAddress = registry.getObjectAddress(parentNftId);
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()){
599
- revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
643
+ // check component release (must match with service release)
644
+ if(component.getRelease() != getRelease()) {
645
+ revert ErrorComponentServiceComponentReleaseMismatch(componentAddress, getRelease(), component.getRelease());
600
646
  }
601
647
 
602
- // check component belongs to same product cluster
603
- // parent of product must be instance, parent of other componet types must be product
604
- if (info.parentNftId != senderInfo.nftId) {
605
- revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
606
- }
607
-
608
- // verify parent is registered instance
609
- if (requiredType == PRODUCT()) {
610
- if (senderInfo.objectType != INSTANCE()) {
611
- revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
612
- }
613
-
614
- instanceNftId = senderInfo.nftId;
615
- // verify parent is registered product
616
- } else {
617
- if (senderInfo.objectType != PRODUCT()) {
618
- revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
619
- }
620
-
621
- instanceNftId = senderInfo.parentNftId;
648
+ // check component has not already been registered
649
+ if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
650
+ revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
622
651
  }
623
-
624
- // get initial owner and instance
625
- initialOwner = info.initialOwner;
626
- instance = IInstance(registry.getObjectAddress(instanceNftId));
627
652
  }
628
653
 
654
+
629
655
  function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
630
656
  instanceAdmin.setTargetLocked(componentAddress, locked);
631
657
  }
632
658
 
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
659
 
644
660
  function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
645
661
  internal
@@ -670,13 +686,8 @@ contract ComponentService is
670
686
  instance = IInstance(instanceAddress);
671
687
  }
672
688
 
689
+
673
690
  function _getDomain() internal pure virtual override returns(ObjectType) {
674
691
  return COMPONENT();
675
692
  }
676
-
677
- function _checkSupportsInterface(address component) internal view {
678
- if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
679
- revert ErrorComponentServiceNotInstanceLinkedComponent(component);
680
- }
681
- }
682
693
  }