@etherisc/gif-next 0.0.2-95b223b-528 → 0.0.2-95f0eec-843

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