@etherisc/gif-next 0.0.2-f626d92-602 → 0.0.2-f634e5c-828

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 (687) hide show
  1. package/README.md +77 -10
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  6. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  10. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  12. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  14. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  18. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1310 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → distribution/Distribution.sol/Distribution.json} +348 -313
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1494 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +862 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +903 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +221 -327
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1415 -0
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1965 -0
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1163 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2267 -0
  56. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  57. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +350 -1997
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +189 -113
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +406 -2791
  64. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1684 -0
  66. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  68. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1328 -331
  70. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +264 -425
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +156 -151
  74. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3668 -0
  76. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  77. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  78. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  80. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  81. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  82. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  84. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  86. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  88. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  90. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  95. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  96. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  97. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  99. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  101. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  103. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  105. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  106. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +282 -179
  107. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  108. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +274 -253
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
  113. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  114. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +321 -457
  115. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  117. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1360 -0
  119. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  121. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  122. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +323 -60
  123. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  124. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → pool/IPoolComponent.sol/IPoolComponent.json} +346 -281
  125. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1285 -0
  127. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  128. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +387 -436
  129. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  130. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1619 -0
  131. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  132. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +794 -0
  133. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  134. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +806 -0
  135. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  136. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  137. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  138. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +409 -442
  139. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  140. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  141. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  142. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1439 -0
  143. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  144. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +858 -0
  145. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  146. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +117 -166
  147. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  148. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  149. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  150. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPolicyService.sol/IPolicyService.json} +485 -385
  151. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  153. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  154. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +991 -0
  155. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  156. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +41 -62
  157. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  158. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1313 -0
  159. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +810 -0
  161. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.json +923 -0
  163. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  165. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  166. package/artifacts/contracts/product/Product.sol/Product.json +1092 -0
  167. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  168. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  169. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  170. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  171. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  172. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  173. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  174. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +457 -27
  175. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  176. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +263 -110
  177. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  179. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/Registry.sol/Registry.json +949 -128
  181. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  182. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  183. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +349 -245
  185. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +161 -94
  187. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  188. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  189. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  190. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  191. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  192. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  193. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  195. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  196. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +292 -204
  197. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1908 -0
  199. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +850 -0
  201. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  202. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +124 -125
  203. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  204. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  205. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  206. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  207. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  208. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  209. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  210. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +146 -131
  211. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  212. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1467 -0
  213. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  214. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  215. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  216. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  217. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  218. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  219. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -10
  221. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  223. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +28 -6
  225. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  227. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IService.sol/IService.json +46 -6
  229. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  230. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  231. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  232. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  233. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  234. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  235. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  236. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +28 -70
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +69 -99
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  247. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Service.sol/Service.json +58 -112
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +734 -8
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  253. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  255. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  256. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → staking/IStaking.sol/IStaking.json} +708 -602
  257. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  259. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  261. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  262. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  263. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  265. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  267. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  269. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1265 -0
  271. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +734 -0
  273. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  275. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  277. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  278. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  280. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  281. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  282. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  283. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  285. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  287. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  288. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  289. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  290. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  291. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  292. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  293. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  294. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  295. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  296. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  297. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  298. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  299. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  300. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  301. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  302. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  303. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  304. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  305. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  306. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +180 -0
  307. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  308. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  309. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  310. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  311. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  312. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  313. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  314. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  315. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  316. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  317. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  318. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  319. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  320. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  321. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  322. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  323. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  324. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  325. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  326. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  327. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  328. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  329. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  330. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  331. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  332. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  333. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  334. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  335. package/contracts/authorization/AccessAdmin.sol +615 -0
  336. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  337. package/contracts/authorization/Authorization.sol +289 -0
  338. package/contracts/authorization/IAccess.sol +49 -0
  339. package/contracts/authorization/IAccessAdmin.sol +137 -0
  340. package/contracts/authorization/IAuthorization.sol +60 -0
  341. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  342. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  343. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  344. package/contracts/distribution/BasicDistribution.sol +139 -0
  345. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  346. package/contracts/{components → distribution}/Distribution.sol +166 -162
  347. package/contracts/distribution/DistributionService.sol +354 -0
  348. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  349. package/contracts/distribution/IDistributionComponent.sol +52 -0
  350. package/contracts/{instance/service → distribution}/IDistributionService.sol +35 -34
  351. package/contracts/examples/fire/DamageLevel.sol +59 -0
  352. package/contracts/examples/fire/FirePool.sol +86 -0
  353. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  354. package/contracts/examples/fire/FireProduct.sol +431 -0
  355. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  356. package/contracts/examples/fire/FireUSD.sol +26 -0
  357. package/contracts/examples/unpermissioned/SimpleDistribution.sol +65 -0
  358. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  359. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  360. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  361. package/contracts/instance/BundleSet.sol +130 -0
  362. package/contracts/instance/IInstance.sol +45 -72
  363. package/contracts/instance/IInstanceService.sol +37 -39
  364. package/contracts/instance/Instance.sol +162 -250
  365. package/contracts/instance/InstanceAdmin.sol +288 -0
  366. package/contracts/instance/InstanceAuthorizationV3.sol +218 -0
  367. package/contracts/instance/InstanceReader.sol +351 -61
  368. package/contracts/instance/InstanceService.sol +250 -353
  369. package/contracts/instance/InstanceServiceManager.sol +14 -29
  370. package/contracts/instance/InstanceStore.sol +287 -0
  371. package/contracts/instance/RiskSet.sol +119 -0
  372. package/contracts/instance/base/BalanceStore.sol +123 -0
  373. package/contracts/instance/base/Cloneable.sol +28 -0
  374. package/contracts/instance/base/ObjectCounter.sol +20 -0
  375. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  376. package/contracts/instance/base/ObjectSet.sol +78 -0
  377. package/contracts/instance/module/IAccess.sol +4 -12
  378. package/contracts/instance/module/IBundle.sol +6 -9
  379. package/contracts/instance/module/IComponents.sol +27 -18
  380. package/contracts/instance/module/IDistribution.sol +6 -6
  381. package/contracts/instance/module/IPolicy.sol +48 -35
  382. package/contracts/instance/module/IRisk.sol +2 -1
  383. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  384. package/contracts/oracle/BasicOracle.sol +47 -0
  385. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  386. package/contracts/oracle/IOracle.sol +36 -0
  387. package/contracts/oracle/IOracleComponent.sol +33 -0
  388. package/contracts/oracle/IOracleService.sol +66 -0
  389. package/contracts/oracle/Oracle.sol +156 -0
  390. package/contracts/oracle/OracleService.sol +309 -0
  391. package/contracts/oracle/OracleServiceManager.sol +39 -0
  392. package/contracts/pool/BasicPool.sol +175 -0
  393. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  394. package/contracts/pool/BundleService.sol +423 -0
  395. package/contracts/pool/BundleServiceManager.sol +39 -0
  396. package/contracts/pool/IBundleService.sol +122 -0
  397. package/contracts/pool/IPoolComponent.sol +62 -0
  398. package/contracts/pool/IPoolService.sol +153 -0
  399. package/contracts/pool/Pool.sol +345 -0
  400. package/contracts/pool/PoolService.sol +612 -0
  401. package/contracts/pool/PoolServiceManager.sol +39 -0
  402. package/contracts/product/ApplicationService.sol +259 -0
  403. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  404. package/contracts/product/BasicProduct.sol +49 -0
  405. package/contracts/product/BasicProductAuthorization.sol +42 -0
  406. package/contracts/product/ClaimService.sol +614 -0
  407. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  408. package/contracts/{instance/service → product}/IApplicationService.sol +19 -35
  409. package/contracts/product/IClaimService.sol +123 -0
  410. package/contracts/product/IPolicyService.sol +90 -0
  411. package/contracts/product/IPricingService.sol +39 -0
  412. package/contracts/product/IProductComponent.sol +59 -0
  413. package/contracts/product/IRiskService.sol +33 -0
  414. package/contracts/product/PolicyService.sol +733 -0
  415. package/contracts/product/PolicyServiceManager.sol +39 -0
  416. package/contracts/product/PricingService.sol +300 -0
  417. package/contracts/product/PricingServiceManager.sol +39 -0
  418. package/contracts/product/Product.sol +427 -0
  419. package/contracts/product/RiskService.sol +107 -0
  420. package/contracts/product/RiskServiceManager.sol +39 -0
  421. package/contracts/registry/ChainNft.sol +79 -40
  422. package/contracts/registry/IRegistry.sol +98 -26
  423. package/contracts/registry/IRegistryService.sol +34 -40
  424. package/contracts/registry/ITransferInterceptor.sol +1 -2
  425. package/contracts/registry/Registry.sol +453 -195
  426. package/contracts/registry/RegistryAdmin.sol +451 -0
  427. package/contracts/registry/RegistryService.sol +87 -128
  428. package/contracts/registry/RegistryServiceManager.sol +23 -32
  429. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  430. package/contracts/registry/ReleaseRegistry.sol +486 -0
  431. package/contracts/registry/ServiceAuthorizationV3.sol +176 -0
  432. package/contracts/registry/TokenRegistry.sol +261 -62
  433. package/contracts/shared/Component.sol +222 -0
  434. package/contracts/shared/ComponentService.sol +869 -0
  435. package/contracts/shared/ComponentServiceManager.sol +38 -0
  436. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  437. package/contracts/shared/ContractLib.sol +224 -0
  438. package/contracts/shared/IComponent.sol +67 -0
  439. package/contracts/shared/IComponentService.sol +134 -0
  440. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  441. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  442. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  443. package/contracts/shared/INftOwnable.sol +4 -2
  444. package/contracts/shared/IPolicyHolder.sol +23 -14
  445. package/contracts/shared/IRegisterable.sol +11 -0
  446. package/contracts/shared/IRegistryLinked.sol +0 -1
  447. package/contracts/shared/IService.sol +12 -3
  448. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  449. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  450. package/contracts/shared/KeyValueStore.sol +131 -0
  451. package/contracts/shared/Lifecycle.sol +88 -0
  452. package/contracts/shared/NftIdSet.sol +65 -0
  453. package/contracts/shared/NftOwnable.sol +32 -25
  454. package/contracts/shared/PolicyHolder.sol +22 -41
  455. package/contracts/shared/Registerable.sol +32 -23
  456. package/contracts/shared/RegistryLinked.sol +9 -19
  457. package/contracts/shared/Service.sol +48 -36
  458. package/contracts/shared/TokenHandler.sol +368 -12
  459. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  460. package/contracts/staking/IStaking.sol +173 -0
  461. package/contracts/staking/IStakingService.sol +157 -0
  462. package/contracts/staking/StakeManagerLib.sol +224 -0
  463. package/contracts/staking/Staking.sol +505 -0
  464. package/contracts/staking/StakingLifecycle.sol +23 -0
  465. package/contracts/staking/StakingManager.sol +52 -0
  466. package/contracts/staking/StakingReader.sol +190 -0
  467. package/contracts/staking/StakingService.sol +440 -0
  468. package/contracts/staking/StakingServiceManager.sol +44 -0
  469. package/contracts/staking/StakingStore.sol +605 -0
  470. package/contracts/staking/TargetManagerLib.sol +211 -0
  471. package/contracts/{types → type}/AddressSet.sol +1 -1
  472. package/contracts/type/Amount.sol +150 -0
  473. package/contracts/{types → type}/Blocknumber.sol +26 -3
  474. package/contracts/{types → type}/ClaimId.sol +31 -3
  475. package/contracts/{types → type}/Fee.sol +24 -22
  476. package/contracts/{types → type}/Key32.sol +2 -2
  477. package/contracts/type/Key32Set.sol +62 -0
  478. package/contracts/{types → type}/NftId.sol +21 -16
  479. package/contracts/{types → type}/NftIdSet.sol +2 -2
  480. package/contracts/type/ObjectType.sol +278 -0
  481. package/contracts/type/PayoutId.sol +82 -0
  482. package/contracts/{types → type}/Referral.sol +2 -1
  483. package/contracts/type/RequestId.sol +75 -0
  484. package/contracts/{types → type}/RiskId.sol +31 -5
  485. package/contracts/type/RoleId.sol +162 -0
  486. package/contracts/type/Seconds.sol +101 -0
  487. package/contracts/type/Selector.sol +102 -0
  488. package/contracts/{types → type}/StateId.sol +47 -4
  489. package/contracts/type/String.sol +53 -0
  490. package/contracts/{types → type}/Timestamp.sol +21 -2
  491. package/contracts/{types → type}/UFixed.sol +40 -121
  492. package/contracts/{types → type}/Version.sol +4 -2
  493. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  494. package/contracts/{shared → upgradeability}/ProxyManager.sol +93 -30
  495. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  496. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  497. package/package.json +11 -7
  498. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  499. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  500. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  501. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  502. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  503. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  504. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  505. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  506. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  507. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  508. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  509. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  510. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  511. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  513. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  514. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  515. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  516. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  519. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  520. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  522. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  523. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  524. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  525. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  526. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  527. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  528. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  529. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  531. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  533. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  535. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  537. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  539. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  541. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  550. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  552. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  554. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  555. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  556. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  557. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  558. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  560. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  561. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  562. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  563. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  564. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  565. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  566. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  567. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  568. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  569. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  570. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  571. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  572. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  573. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  574. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  576. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  577. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  578. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  579. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  580. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  581. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  582. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  583. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  584. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  585. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  586. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  587. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  588. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  589. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  590. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  591. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  592. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  594. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  595. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  596. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  598. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  600. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  602. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  604. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  606. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  608. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  609. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  610. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  612. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  614. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  616. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  618. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  620. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  622. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  624. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  626. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  628. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  630. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  632. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  634. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  636. package/contracts/components/Component.sol +0 -253
  637. package/contracts/components/IComponent.sol +0 -76
  638. package/contracts/components/IDistributionComponent.sol +0 -71
  639. package/contracts/components/IPoolComponent.sol +0 -113
  640. package/contracts/components/IProductComponent.sol +0 -40
  641. package/contracts/components/Pool.sol +0 -303
  642. package/contracts/components/Product.sol +0 -293
  643. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  644. package/contracts/instance/BundleManager.sol +0 -127
  645. package/contracts/instance/Cloneable.sol +0 -51
  646. package/contracts/instance/InstanceAccessManager.sol +0 -527
  647. package/contracts/instance/ObjectManager.sol +0 -82
  648. package/contracts/instance/base/ComponentService.sol +0 -121
  649. package/contracts/instance/base/KeyValueStore.sol +0 -180
  650. package/contracts/instance/base/Lifecycle.sol +0 -109
  651. package/contracts/instance/module/ISetup.sol +0 -33
  652. package/contracts/instance/module/ITreasury.sol +0 -23
  653. package/contracts/instance/service/ApplicationService.sol +0 -350
  654. package/contracts/instance/service/BundleService.sol +0 -431
  655. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  656. package/contracts/instance/service/ClaimService.sol +0 -151
  657. package/contracts/instance/service/DistributionService.sol +0 -435
  658. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  659. package/contracts/instance/service/IBundleService.sol +0 -93
  660. package/contracts/instance/service/IClaimService.sol +0 -61
  661. package/contracts/instance/service/IPolicyService.sol +0 -72
  662. package/contracts/instance/service/IPoolService.sol +0 -99
  663. package/contracts/instance/service/IProductService.sol +0 -40
  664. package/contracts/instance/service/PolicyService.sol +0 -362
  665. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  666. package/contracts/instance/service/PoolService.sol +0 -303
  667. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  668. package/contracts/instance/service/ProductService.sol +0 -210
  669. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  670. package/contracts/registry/RegistryAccessManager.sol +0 -216
  671. package/contracts/registry/ReleaseManager.sol +0 -324
  672. package/contracts/shared/ContractDeployerLib.sol +0 -72
  673. package/contracts/test/TestFee.sol +0 -25
  674. package/contracts/test/TestRegisterable.sol +0 -18
  675. package/contracts/test/TestRoleId.sol +0 -14
  676. package/contracts/test/TestService.sol +0 -25
  677. package/contracts/test/TestToken.sol +0 -26
  678. package/contracts/test/TestVersion.sol +0 -44
  679. package/contracts/test/TestVersionable.sol +0 -17
  680. package/contracts/types/Amount.sol +0 -60
  681. package/contracts/types/ChainId.sol +0 -38
  682. package/contracts/types/NumberId.sol +0 -52
  683. package/contracts/types/ObjectType.sol +0 -157
  684. package/contracts/types/PayoutId.sol +0 -54
  685. package/contracts/types/RoleId.sol +0 -97
  686. package/contracts/types/Seconds.sol +0 -54
  687. /package/contracts/{types → type}/DistributorType.sol +0 -0
@@ -0,0 +1,869 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
7
+ import {Amount, AmountLib} from "../type/Amount.sol";
8
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
9
+ import {ContractLib} from "../shared/ContractLib.sol";
10
+ import {Fee, FeeLib} from "../type/Fee.sol";
11
+ import {IComponent} from "../shared/IComponent.sol";
12
+ import {IComponents} from "../instance/module/IComponents.sol";
13
+ import {IComponentService} from "./IComponentService.sol";
14
+ import {IInstance} from "../instance/IInstance.sol";
15
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
16
+ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
17
+ import {InstanceReader} from "../instance/InstanceReader.sol";
18
+ import {InstanceStore} from "../instance/InstanceStore.sol";
19
+ import {IInstanceService} from "../instance/IInstanceService.sol";
20
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
21
+ import {IProductComponent} from "../product/IProductComponent.sol";
22
+ import {IRegisterable} from "../shared/IRegisterable.sol";
23
+ import {IRegistry} from "../registry/IRegistry.sol";
24
+ import {IRegistryService} from "../registry/IRegistryService.sol";
25
+
26
+ import {Amount, AmountLib} from "../type/Amount.sol";
27
+ import {ContractLib} from "../shared/ContractLib.sol";
28
+ import {Fee, FeeLib} from "../type/Fee.sol";
29
+ import {KEEP_STATE} from "../type/StateId.sol";
30
+ import {NftId} from "../type/NftId.sol";
31
+ import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
32
+ import {Service} from "../shared/Service.sol";
33
+ import {TokenHandler} from "../shared/TokenHandler.sol";
34
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
35
+ import {VersionPart} from "../type/Version.sol";
36
+
37
+
38
+ contract ComponentService is
39
+ Service,
40
+ IComponentService
41
+ {
42
+ bool private constant INCREASE = true;
43
+ bool private constant DECREASE = false;
44
+
45
+ IRegistryService private _registryService;
46
+ IInstanceService private _instanceService;
47
+
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
+ function _initialize(
74
+ address owner,
75
+ bytes memory data
76
+ )
77
+ internal
78
+ virtual override
79
+ initializer()
80
+ {
81
+ (
82
+ address registryAddress,
83
+ address authority
84
+ ) = abi.decode(data, (address, address));
85
+
86
+ _initializeService(registryAddress, authority, owner);
87
+
88
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
89
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
90
+
91
+ _registerInterface(type(IComponentService).interfaceId);
92
+ }
93
+
94
+ //-------- component ----------------------------------------------------//
95
+
96
+ function registerComponent(address component)
97
+ external
98
+ virtual
99
+ onlyComponent(component)
100
+ returns (NftId componentNftId)
101
+ {
102
+ // type specific registration
103
+ ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
104
+ if (componentType == POOL()) {
105
+ return _registerPool(component);
106
+ }
107
+ if (componentType == DISTRIBUTION()) {
108
+ return _registerDistribution(component);
109
+ }
110
+ if (componentType == ORACLE()) {
111
+ return _registerOracle(component);
112
+ }
113
+
114
+ // fail
115
+ revert ErrorComponentServiceTypeNotSupported(component, componentType);
116
+ }
117
+
118
+ function approveTokenHandler(
119
+ IERC20Metadata token,
120
+ Amount amount
121
+ )
122
+ external
123
+ virtual
124
+ {
125
+ // checks
126
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
127
+ TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
128
+ componentNftId).tokenHandler;
129
+
130
+ // effects
131
+ tokenHandler.approve(token, amount);
132
+ }
133
+
134
+
135
+ function approveStakingTokenHandler(
136
+ IERC20Metadata token,
137
+ Amount amount
138
+ )
139
+ external
140
+ virtual
141
+ {
142
+ // checks
143
+ ContractLib.getAndVerifyStaking(
144
+ getRegistry(),
145
+ msg.sender); // only active
146
+
147
+ // effects
148
+ TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
149
+ tokenHandler.approve(token, amount);
150
+ }
151
+
152
+
153
+ function setWallet(address newWallet)
154
+ external
155
+ virtual
156
+ {
157
+ // checks
158
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
159
+ TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
160
+ componentNftId).tokenHandler;
161
+
162
+ // effects
163
+ tokenHandler.setWallet(newWallet);
164
+ }
165
+
166
+ /// @inheritdoc IComponentService
167
+ function setLockedFromInstance(address componentAddress, bool locked)
168
+ external
169
+ virtual
170
+ onlyInstance()
171
+ {
172
+ address instanceAddress = msg.sender;
173
+ // NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
174
+ IInstance instance = IInstance(instanceAddress);
175
+ _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
176
+ }
177
+
178
+ /// @inheritdoc IComponentService
179
+ function setLockedFromComponent(address componentAddress, bool locked)
180
+ external
181
+ virtual
182
+ onlyComponent(msg.sender)
183
+ {
184
+ (, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
185
+ _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
186
+ }
187
+
188
+ function withdrawFees(Amount amount)
189
+ external
190
+ virtual
191
+ returns (Amount withdrawnAmount)
192
+ {
193
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
194
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
195
+ address componentWallet = info.tokenHandler.getWallet();
196
+
197
+ // determine withdrawn amount
198
+ withdrawnAmount = amount;
199
+ if (withdrawnAmount.gte(AmountLib.max())) {
200
+ withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
201
+ } else if (withdrawnAmount.eqz()) {
202
+ revert ErrorComponentServiceWithdrawAmountIsZero();
203
+ } else {
204
+ Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
205
+ if (withdrawnAmount.gt(withdrawLimit)) {
206
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
207
+ }
208
+ }
209
+
210
+ // decrease fee counters by withdrawnAmount
211
+ _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
212
+
213
+ // transfer amount to component owner
214
+ address componentOwner = getRegistry().ownerOf(componentNftId);
215
+ emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
216
+ info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
217
+ }
218
+
219
+
220
+ //-------- product ------------------------------------------------------//
221
+
222
+ function registerProduct(address productAddress)
223
+ external
224
+ virtual
225
+ nonReentrant()
226
+ onlyComponent(productAddress)
227
+ returns (NftId productNftId)
228
+ {
229
+ // register/create component setup
230
+ InstanceAdmin instanceAdmin;
231
+ InstanceStore instanceStore;
232
+ (, instanceAdmin, instanceStore,, productNftId) = _register(
233
+ productAddress,
234
+ PRODUCT());
235
+
236
+ // get product
237
+ IProductComponent product = IProductComponent(productAddress);
238
+
239
+ // create info
240
+ instanceStore.createProduct(
241
+ productNftId,
242
+ product.getInitialProductInfo());
243
+
244
+ // authorize
245
+ instanceAdmin.initializeComponentAuthorization(product);
246
+ }
247
+
248
+
249
+ function setProductFees(
250
+ Fee memory productFee, // product fee on net premium
251
+ Fee memory processingFee // product fee on payout amounts
252
+ )
253
+ external
254
+ virtual
255
+ nonReentrant()
256
+ {
257
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
258
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
259
+ bool feesChanged = false;
260
+
261
+ // update product fee if required
262
+ if(!FeeLib.eq(productInfo.productFee, productFee)) {
263
+ _logUpdateFee(productNftId, "ProductFee", productInfo.productFee, productFee);
264
+ productInfo.productFee = productFee;
265
+ feesChanged = true;
266
+ }
267
+
268
+ // update processing fee if required
269
+ if(!FeeLib.eq(productInfo.processingFee, processingFee)) {
270
+ _logUpdateFee(productNftId, "ProcessingFee", productInfo.processingFee, processingFee);
271
+ productInfo.processingFee = processingFee;
272
+ feesChanged = true;
273
+ }
274
+
275
+ if(feesChanged) {
276
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
277
+ emit LogComponentServiceProductFeesUpdated(productNftId);
278
+ }
279
+ }
280
+
281
+ function increaseProductFees(
282
+ InstanceStore instanceStore,
283
+ NftId productNftId,
284
+ Amount feeAmount
285
+ )
286
+ external
287
+ virtual
288
+ // TODO re-enable once role granting is stable and fixed
289
+ // restricted()
290
+ {
291
+ _checkNftType(productNftId, PRODUCT());
292
+ _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
293
+ }
294
+
295
+
296
+ function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
297
+ external
298
+ virtual
299
+ // TODO re-enable once role granting is stable and fixed
300
+ // restricted()
301
+ {
302
+ _checkNftType(productNftId, PRODUCT());
303
+ _changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
304
+ }
305
+
306
+ //-------- distribution -------------------------------------------------//
307
+
308
+ /// @dev registers the sending component as a distribution component
309
+ function _registerDistribution(address distributioAddress)
310
+ internal
311
+ virtual
312
+ nonReentrant()
313
+ returns (NftId distributionNftId)
314
+ {
315
+ // register/create component info
316
+ InstanceReader instanceReader;
317
+ InstanceAdmin instanceAdmin;
318
+ InstanceStore instanceStore;
319
+ NftId productNftId;
320
+ (instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
321
+ distributioAddress,
322
+ DISTRIBUTION());
323
+
324
+ // check product is still expecting a distribution registration
325
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
326
+ if (!productInfo.hasDistribution) {
327
+ revert ErrorProductServiceNoDistributionExpected(productNftId);
328
+ }
329
+ if (productInfo.distributionNftId.gtz()) {
330
+ revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
331
+ }
332
+
333
+ // set distribution in product info
334
+ productInfo.distributionNftId = distributionNftId;
335
+ instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
336
+
337
+ // authorize
338
+ instanceAdmin.initializeComponentAuthorization(
339
+ IInstanceLinkedComponent(distributioAddress));
340
+ }
341
+
342
+
343
+ function setDistributionFees(
344
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
345
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
346
+ )
347
+ external
348
+ virtual
349
+ {
350
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
351
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
352
+ instance.getInstanceReader(), distributionNftId);
353
+ bool feesChanged = false;
354
+
355
+ // update distributino fee if required
356
+ if(!FeeLib.eq(productInfo.distributionFee, distributionFee)) {
357
+ _logUpdateFee(productNftId, "DistributionFee", productInfo.distributionFee, distributionFee);
358
+ productInfo.distributionFee = distributionFee;
359
+ feesChanged = true;
360
+ }
361
+
362
+ // update min distribution owner fee if required
363
+ if(!FeeLib.eq(productInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
364
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", productInfo.minDistributionOwnerFee, minDistributionOwnerFee);
365
+ productInfo.minDistributionOwnerFee = minDistributionOwnerFee;
366
+ feesChanged = true;
367
+ }
368
+
369
+ if(feesChanged) {
370
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
371
+ emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
372
+ }
373
+ }
374
+
375
+ function increaseDistributionBalance(
376
+ InstanceStore instanceStore,
377
+ NftId distributionNftId,
378
+ Amount amount,
379
+ Amount feeAmount
380
+ )
381
+ external
382
+ virtual
383
+ // TODO re-enable once role granting is stable and fixed
384
+ // restricted()
385
+ {
386
+ _checkNftType(distributionNftId, DISTRIBUTION());
387
+ _changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
388
+ }
389
+
390
+
391
+ function decreaseDistributionBalance(
392
+ InstanceStore instanceStore,
393
+ NftId distributionNftId,
394
+ Amount amount,
395
+ Amount feeAmount
396
+ )
397
+ external
398
+ virtual
399
+ // TODO re-enable once role granting is stable and fixed
400
+ // restricted()
401
+ {
402
+ _checkNftType(distributionNftId, DISTRIBUTION());
403
+ _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
404
+ }
405
+
406
+ //-------- distributor -------------------------------------------------------//
407
+
408
+ function increaseDistributorBalance(
409
+ InstanceStore instanceStore,
410
+ NftId distributorNftId,
411
+ Amount amount,
412
+ Amount feeAmount
413
+ )
414
+ external
415
+ virtual
416
+ // TODO re-enable once role granting is stable and fixed
417
+ // restricted()
418
+ {
419
+ _checkNftType(distributorNftId, DISTRIBUTOR());
420
+ _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
421
+ }
422
+
423
+ function decreaseDistributorBalance(
424
+ InstanceStore instanceStore,
425
+ NftId distributorNftId,
426
+ Amount amount,
427
+ Amount feeAmount
428
+ )
429
+ external
430
+ virtual
431
+ // TODO re-enable once role granting is stable and fixed
432
+ // restricted()
433
+ {
434
+ _checkNftType(distributorNftId, DISTRIBUTOR());
435
+ _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
436
+ }
437
+
438
+ //-------- oracle -------------------------------------------------------//
439
+
440
+ function _registerOracle(address oracleAddress)
441
+ internal
442
+ virtual
443
+ returns (NftId oracleNftId)
444
+ {
445
+ // register/create component setup
446
+ InstanceReader instanceReader;
447
+ InstanceAdmin instanceAdmin;
448
+ InstanceStore instanceStore;
449
+ NftId productNftId;
450
+
451
+ (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
452
+ oracleAddress,
453
+ ORACLE());
454
+
455
+ // check product is still expecting an oracle registration
456
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
457
+ if (productInfo.expectedNumberOfOracles == 0) {
458
+ revert ErrorProductServiceNoOraclesExpected(productNftId);
459
+ }
460
+ if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
461
+ revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
462
+ }
463
+
464
+ // update/add oracle to product info
465
+ productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
466
+ productInfo.numberOfOracles++;
467
+ instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
468
+
469
+ // authorize
470
+ instanceAdmin.initializeComponentAuthorization(
471
+ IInstanceLinkedComponent(oracleAddress));
472
+ }
473
+
474
+ //-------- pool ---------------------------------------------------------//
475
+
476
+ function _registerPool(address poolAddress)
477
+ internal
478
+ virtual
479
+ returns (NftId poolNftId)
480
+ {
481
+ // register/create component setup
482
+ InstanceReader instanceReader;
483
+ InstanceAdmin instanceAdmin;
484
+ InstanceStore instanceStore;
485
+ NftId productNftId;
486
+
487
+ (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
488
+ poolAddress,
489
+ POOL());
490
+
491
+ // check product is still expecting a pool registration
492
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
493
+ if (productInfo.poolNftId.gtz()) {
494
+ revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
495
+ }
496
+
497
+ // create info
498
+ IPoolComponent pool = IPoolComponent(poolAddress);
499
+ instanceStore.createPool(
500
+ poolNftId,
501
+ pool.getInitialPoolInfo());
502
+
503
+ // update pool in product info
504
+ productInfo.poolNftId = poolNftId;
505
+ instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
506
+
507
+ // authorize
508
+ instanceAdmin.initializeComponentAuthorization(pool);
509
+ }
510
+
511
+
512
+ function setPoolFees(
513
+ Fee memory poolFee, // pool fee on net premium
514
+ Fee memory stakingFee, // pool fee on staked capital from investor
515
+ Fee memory performanceFee // pool fee on profits from capital investors
516
+ )
517
+ external
518
+ virtual
519
+ {
520
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
521
+
522
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
523
+ instance.getInstanceReader(), poolNftId);
524
+ bool feesChanged = false;
525
+
526
+ // update pool fee if required
527
+ if(!FeeLib.eq(productInfo.poolFee, poolFee)) {
528
+ _logUpdateFee(productNftId, "PoolFee", productInfo.poolFee, poolFee);
529
+ productInfo.poolFee = poolFee;
530
+ feesChanged = true;
531
+ }
532
+
533
+ // update staking fee if required
534
+ if(!FeeLib.eq(productInfo.stakingFee, stakingFee)) {
535
+ _logUpdateFee(productNftId, "StakingFee", productInfo.stakingFee, stakingFee);
536
+ productInfo.stakingFee = stakingFee;
537
+ feesChanged = true;
538
+ }
539
+
540
+ // update performance fee if required
541
+ if(!FeeLib.eq(productInfo.performanceFee, performanceFee)) {
542
+ _logUpdateFee(productNftId, "PerformanceFee", productInfo.performanceFee, performanceFee);
543
+ productInfo.performanceFee = performanceFee;
544
+ feesChanged = true;
545
+ }
546
+
547
+ if(feesChanged) {
548
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
549
+ emit LogComponentServicePoolFeesUpdated(poolNftId);
550
+ }
551
+ }
552
+
553
+ function increasePoolBalance(
554
+ InstanceStore instanceStore,
555
+ NftId poolNftId,
556
+ Amount amount,
557
+ Amount feeAmount
558
+ )
559
+ public
560
+ virtual
561
+ // TODO re-enable once role granting is stable and fixed
562
+ // restricted()
563
+ {
564
+ _checkNftType(poolNftId, POOL());
565
+ _changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
566
+ }
567
+
568
+ function decreasePoolBalance(
569
+ InstanceStore instanceStore,
570
+ NftId poolNftId,
571
+ Amount amount,
572
+ Amount feeAmount
573
+ )
574
+ public
575
+ virtual
576
+ // TODO re-enable once role granting is stable and fixed
577
+ // restricted()
578
+ {
579
+ _checkNftType(poolNftId, POOL());
580
+ _changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
581
+ }
582
+
583
+ //-------- bundle -------------------------------------------------------//
584
+
585
+ function increaseBundleBalance(
586
+ InstanceStore instanceStore,
587
+ NftId bundleNftId,
588
+ Amount amount,
589
+ Amount feeAmount
590
+ )
591
+ external
592
+ virtual
593
+ // TODO re-enable once role granting is stable and fixed
594
+ // restricted()
595
+ {
596
+ _checkNftType(bundleNftId, BUNDLE());
597
+ _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
598
+ }
599
+
600
+ function decreaseBundleBalance(
601
+ InstanceStore instanceStore,
602
+ NftId bundleNftId,
603
+ Amount amount,
604
+ Amount feeAmount
605
+ )
606
+ external
607
+ virtual
608
+ // TODO re-enable once role granting is stable and fixed
609
+ // restricted()
610
+ {
611
+ _checkNftType(bundleNftId, BUNDLE());
612
+ _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
613
+ }
614
+
615
+
616
+ //-------- internal functions ------------------------------------------//
617
+
618
+ function _changeTargetBalance(
619
+ bool increase,
620
+ InstanceStore instanceStore,
621
+ NftId targetNftId,
622
+ Amount amount,
623
+ Amount feeAmount
624
+ )
625
+ internal
626
+ virtual
627
+ {
628
+ Amount totalAmount = amount + feeAmount;
629
+
630
+ if(increase) {
631
+ if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
632
+ if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
633
+ } else {
634
+ if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
635
+ if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
636
+ }
637
+ }
638
+
639
+ /// @dev Registers the component represented by the provided address.
640
+ function _register(
641
+ address componentAddress, // address of component to register
642
+ ObjectType requiredType // required type for component for registration
643
+ )
644
+ internal
645
+ virtual
646
+ returns (
647
+ InstanceReader instanceReader,
648
+ InstanceAdmin instanceAdmin,
649
+ InstanceStore instanceStore,
650
+ NftId parentNftId,
651
+ NftId componentNftId
652
+ )
653
+ {
654
+ NftId instanceNftId;
655
+ IInstance instance;
656
+ IInstanceLinkedComponent component;
657
+ address initialOwner;
658
+
659
+ (
660
+ instanceNftId,
661
+ instance,
662
+ parentNftId,
663
+ component,
664
+ initialOwner
665
+ ) = _getAndVerifyRegisterableComponent(
666
+ getRegistry(),
667
+ componentAddress,
668
+ requiredType);
669
+
670
+ // get instance supporting contracts (as function return values)
671
+ instanceReader = instance.getInstanceReader();
672
+ instanceAdmin = instance.getInstanceAdmin();
673
+ instanceStore = instance.getInstanceStore();
674
+
675
+ // register with registry
676
+ if (requiredType == PRODUCT()) {
677
+ componentNftId = _registryService.registerProduct(
678
+ component, initialOwner).nftId;
679
+ } else {
680
+ componentNftId = _registryService.registerProductLinkedComponent(
681
+ component, requiredType, initialOwner).nftId;
682
+ }
683
+
684
+ // deploy and wire token handler
685
+ IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
686
+ IERC20Metadata token = componentInfo.token;
687
+ componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
688
+ address(getRegistry()),
689
+ address(component), // initially, component is its own wallet
690
+ address(token),
691
+ address(instanceAdmin.authority()));
692
+
693
+ // set token handler allowance to max
694
+ // componentInfo.tokenHandler.approve(token, AmountLib.max());
695
+
696
+ // register component with instance
697
+ instanceStore.createComponent(
698
+ componentNftId,
699
+ componentInfo);
700
+
701
+ // link component contract to nft id
702
+ component.linkToRegisteredNftId();
703
+
704
+ emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
705
+ }
706
+
707
+
708
+ function _logUpdateFee(NftId productNftId, string memory name, Fee memory feeBefore, Fee memory feeAfter)
709
+ internal
710
+ virtual
711
+ {
712
+ emit LogComponentServiceUpdateFee(
713
+ productNftId,
714
+ name,
715
+ feeBefore.fractionalFee,
716
+ feeBefore.fixedFee,
717
+ feeAfter.fractionalFee,
718
+ feeAfter.fixedFee
719
+ );
720
+ }
721
+
722
+
723
+ function _getLinkedProductInfo(
724
+ InstanceReader instanceReader,
725
+ NftId componentNftId
726
+ )
727
+ internal
728
+ view
729
+ returns(
730
+ NftId productNftId,
731
+ IComponents.ProductInfo memory info
732
+ )
733
+ {
734
+ productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
735
+ info = instanceReader.getProductInfo(productNftId);
736
+ }
737
+
738
+
739
+ /// @dev Based on the provided component address required type the component
740
+ /// and related instance contract this function reverts iff:
741
+ /// - the sender is not registered
742
+ /// - the component contract does not support IInstanceLinkedComponent
743
+ /// - the component type does not match with the required type
744
+ /// - the component has already been registered
745
+ function _getAndVerifyRegisterableComponent(
746
+ IRegistry registry,
747
+ address componentAddress,
748
+ ObjectType requiredType
749
+ )
750
+ internal
751
+ view
752
+ returns (
753
+ NftId instanceNftId,
754
+ IInstance instance,
755
+ NftId parentNftId,
756
+ IInstanceLinkedComponent component,
757
+ address initialOwner
758
+ )
759
+ {
760
+ // check sender (instance or product) is registered
761
+ IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
762
+ if (senderInfo.nftId.eqz()) {
763
+ revert ErrorComponentServiceSenderNotRegistered(msg.sender);
764
+ }
765
+
766
+ // the sender is the parent of the component to be registered
767
+ // an instance caller wanting to register a product - or -
768
+ // a product caller wantint go register a distribution, oracle or pool
769
+ parentNftId = senderInfo.nftId;
770
+
771
+ // check component is of required type
772
+ component = IInstanceLinkedComponent(componentAddress);
773
+ IRegistry.ObjectInfo memory info = component.getInitialInfo();
774
+ if(info.objectType != requiredType) {
775
+ revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
776
+ }
777
+
778
+ // check component has not already been registered
779
+ if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
780
+ revert ErrorComponentServiceAlreadyRegistered(componentAddress);
781
+ }
782
+
783
+ // check release matches
784
+ address parentAddress = registry.getObjectAddress(parentNftId);
785
+ if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
786
+ revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
787
+ }
788
+
789
+ // check component belongs to same product cluster
790
+ // parent of product must be instance, parent of other componet types must be product
791
+ if (info.parentNftId != senderInfo.nftId) {
792
+ revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
793
+ }
794
+
795
+ // verify parent is registered instance
796
+ if (requiredType == PRODUCT()) {
797
+ if (senderInfo.objectType != INSTANCE()) {
798
+ revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
799
+ }
800
+
801
+ instanceNftId = senderInfo.nftId;
802
+ // verify parent is registered product
803
+ } else {
804
+ if (senderInfo.objectType != PRODUCT()) {
805
+ revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
806
+ }
807
+
808
+ instanceNftId = senderInfo.parentNftId;
809
+ }
810
+
811
+ // get initial owner and instance
812
+ initialOwner = info.initialOwner;
813
+ instance = IInstance(registry.getObjectAddress(instanceNftId));
814
+ }
815
+
816
+ function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
817
+ instanceAdmin.setTargetLocked(componentAddress, locked);
818
+ }
819
+
820
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
821
+ internal
822
+ view
823
+ returns (
824
+ NftId componentNftId,
825
+ IInstance instance
826
+ )
827
+ {
828
+ return _getAndVerifyComponent(expectedType, true); // only active
829
+ }
830
+
831
+ function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
832
+ internal
833
+ view
834
+ returns (
835
+ NftId componentNftId,
836
+ IInstance instance
837
+ )
838
+ {
839
+ IRegistry.ObjectInfo memory info;
840
+ address instanceAddress;
841
+
842
+ if (expectedType != COMPONENT()) {
843
+ (info, instanceAddress) = ContractLib.getAndVerifyComponent(
844
+ getRegistry(),
845
+ msg.sender, // caller
846
+ expectedType,
847
+ isActive);
848
+ } else {
849
+ (info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
850
+ getRegistry(),
851
+ msg.sender,
852
+ isActive);
853
+ }
854
+
855
+ // get component nft id and instance
856
+ componentNftId = info.nftId;
857
+ instance = IInstance(instanceAddress);
858
+ }
859
+
860
+ function _getDomain() internal pure virtual override returns(ObjectType) {
861
+ return COMPONENT();
862
+ }
863
+
864
+ function _checkSupportsInterface(address component) internal view {
865
+ if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
866
+ revert ErrorComponentServiceNotInstanceLinkedComponent(component);
867
+ }
868
+ }
869
+ }