@etherisc/gif-next 0.0.2-de220d6-949 → 0.0.2-de9ede4-391

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