@etherisc/gif-next 0.0.2-f0d86c2-077 → 0.0.2-f12cf4d-104

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