@etherisc/gif-next 0.0.2-fe77319 → 0.0.2-fe8cf39-182

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