@etherisc/gif-next 0.0.2-f626d92-602 → 0.0.2-f62dcdf-553

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