@etherisc/gif-next 0.0.2-edc084c-558 → 0.0.2-edc2c3a-751

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