@etherisc/gif-next 0.0.2-d911522 → 0.0.2-d9bed37-033

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