@etherisc/gif-next 0.0.2-d96b9e1-825 → 0.0.2-d9bed37-033

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