@etherisc/gif-next 0.0.2-9b97b55 → 0.0.2-9badda4-428

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