@etherisc/gif-next 0.0.2-ec436bf-674 → 0.0.2-ec4918f-024

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 (699) hide show
  1. package/README.md +121 -18
  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/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +125 -11
  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 +1519 -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 +1573 -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 +474 -553
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +391 -169
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +357 -3059
  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 +1048 -378
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +491 -387
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +344 -114
  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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  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 +30 -112
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  88. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  89. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  92. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  93. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  94. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
  96. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  98. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  100. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +405 -368
  102. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  104. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  105. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +907 -0
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
  110. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1280 -0
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1465 -0
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +834 -0
  118. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  119. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +960 -0
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  121. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +960 -0
  122. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  123. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1283 -0
  124. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/Pool.sol/Pool.json +1079 -0
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1625 -0
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +766 -0
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  131. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +771 -0
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +710 -0
  134. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  135. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
  136. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  138. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  139. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1431 -0
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  141. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +838 -0
  142. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  143. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → product/IApplicationService.sol/IApplicationService.json} +231 -225
  144. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  145. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  146. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  147. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +925 -0
  148. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  149. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +283 -266
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  151. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1012 -0
  152. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  153. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → product/IRiskService.sol/IRiskService.json} +149 -162
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  155. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1302 -0
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  159. package/artifacts/contracts/product/PricingService.sol/PricingService.json +907 -0
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +762 -0
  162. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  163. package/artifacts/contracts/product/Product.sol/Product.json +1131 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  165. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  167. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  168. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  169. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +595 -186
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +371 -205
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  176. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/Registry.sol/Registry.json +921 -213
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  179. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  181. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +339 -330
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +326 -138
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  185. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  187. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  191. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  192. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  193. package/artifacts/contracts/shared/Component.sol/Component.json +725 -0
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1768 -0
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +814 -0
  198. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  199. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +209 -201
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +351 -165
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  205. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1335 -0
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +723 -0
  208. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  210. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  214. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  215. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  216. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +40 -31
  218. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  219. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  220. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IService.sol/IService.json +119 -165
  222. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  223. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  224. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  225. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +829 -0
  226. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  227. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  228. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  230. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  231. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  232. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  234. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  235. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  236. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +96 -48
  238. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  240. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Service.sol/Service.json +150 -176
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  244. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  245. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  246. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  247. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
  248. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  249. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  250. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  252. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  253. package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
  254. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  256. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +776 -0
  258. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  260. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1249 -0
  262. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +710 -0
  264. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  266. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  267. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  268. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  270. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  272. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  274. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  276. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  278. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  280. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  282. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  284. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  285. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  286. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  288. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  290. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  292. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  294. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  296. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  298. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  300. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  304. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  306. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  308. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  310. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  312. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  314. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  316. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  318. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  319. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  320. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  322. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  326. package/contracts/authorization/AccessAdmin.sol +596 -0
  327. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  328. package/contracts/authorization/Authorization.sol +289 -0
  329. package/contracts/authorization/IAccess.sol +49 -0
  330. package/contracts/authorization/IAccessAdmin.sol +137 -0
  331. package/contracts/authorization/IAuthorization.sol +60 -0
  332. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  333. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  334. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  335. package/contracts/distribution/BasicDistribution.sol +139 -0
  336. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  337. package/contracts/distribution/Distribution.sol +285 -0
  338. package/contracts/distribution/DistributionService.sol +355 -0
  339. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  340. package/contracts/distribution/IDistributionComponent.sol +52 -0
  341. package/contracts/distribution/IDistributionService.sol +101 -0
  342. package/contracts/examples/fire/DamageLevel.sol +59 -0
  343. package/contracts/examples/fire/FirePool.sol +73 -0
  344. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  345. package/contracts/examples/fire/FireProduct.sol +415 -0
  346. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  347. package/contracts/examples/fire/FireUSD.sol +26 -0
  348. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  349. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  350. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  351. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  352. package/contracts/instance/BundleSet.sol +126 -0
  353. package/contracts/instance/IInstance.sol +51 -24
  354. package/contracts/instance/IInstanceService.sol +58 -17
  355. package/contracts/instance/Instance.sol +164 -375
  356. package/contracts/instance/InstanceAdmin.sol +277 -0
  357. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  358. package/contracts/instance/InstanceReader.sol +271 -82
  359. package/contracts/instance/InstanceService.sol +356 -124
  360. package/contracts/instance/InstanceServiceManager.sol +14 -31
  361. package/contracts/instance/InstanceStore.sol +287 -0
  362. package/contracts/instance/base/BalanceStore.sol +123 -0
  363. package/contracts/instance/base/Cloneable.sol +28 -0
  364. package/contracts/instance/base/ObjectCounter.sol +21 -0
  365. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  366. package/contracts/instance/base/ObjectSet.sol +79 -0
  367. package/contracts/instance/module/IAccess.sol +29 -21
  368. package/contracts/instance/module/IBundle.sol +8 -8
  369. package/contracts/instance/module/IComponents.sol +51 -0
  370. package/contracts/instance/module/IDistribution.sol +6 -4
  371. package/contracts/instance/module/IPolicy.sol +58 -19
  372. package/contracts/instance/module/IRisk.sol +1 -1
  373. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  374. package/contracts/oracle/BasicOracle.sol +47 -0
  375. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  376. package/contracts/oracle/IOracle.sol +36 -0
  377. package/contracts/oracle/IOracleComponent.sol +33 -0
  378. package/contracts/oracle/IOracleService.sol +66 -0
  379. package/contracts/oracle/Oracle.sol +156 -0
  380. package/contracts/oracle/OracleService.sol +291 -0
  381. package/contracts/oracle/OracleServiceManager.sol +39 -0
  382. package/contracts/pool/BasicPool.sol +154 -0
  383. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  384. package/contracts/pool/BundleService.sol +493 -0
  385. package/contracts/pool/BundleServiceManager.sol +39 -0
  386. package/contracts/pool/IBundleService.sol +143 -0
  387. package/contracts/pool/IPoolComponent.sol +68 -0
  388. package/contracts/pool/IPoolService.sol +167 -0
  389. package/contracts/pool/Pool.sol +330 -0
  390. package/contracts/pool/PoolService.sol +544 -0
  391. package/contracts/pool/PoolServiceManager.sol +39 -0
  392. package/contracts/product/ApplicationService.sol +259 -0
  393. package/contracts/product/ApplicationServiceManager.sol +38 -0
  394. package/contracts/product/BasicProduct.sol +53 -0
  395. package/contracts/product/BasicProductAuthorization.sol +42 -0
  396. package/contracts/product/ClaimService.sol +612 -0
  397. package/contracts/product/ClaimServiceManager.sol +38 -0
  398. package/contracts/product/IApplicationService.sol +63 -0
  399. package/contracts/product/IClaimService.sol +123 -0
  400. package/contracts/product/IPolicyService.sol +80 -0
  401. package/contracts/product/IPricingService.sol +39 -0
  402. package/contracts/product/IProductComponent.sol +59 -0
  403. package/contracts/product/IRiskService.sol +33 -0
  404. package/contracts/product/PolicyService.sol +691 -0
  405. package/contracts/product/PolicyServiceManager.sol +39 -0
  406. package/contracts/product/PricingService.sol +300 -0
  407. package/contracts/product/PricingServiceManager.sol +39 -0
  408. package/contracts/product/Product.sol +455 -0
  409. package/contracts/product/RiskService.sol +96 -0
  410. package/contracts/product/RiskServiceManager.sol +39 -0
  411. package/contracts/registry/ChainNft.sol +78 -33
  412. package/contracts/registry/IRegistry.sol +125 -48
  413. package/contracts/registry/IRegistryService.sol +45 -16
  414. package/contracts/registry/ITransferInterceptor.sol +1 -1
  415. package/contracts/registry/Registry.sol +532 -304
  416. package/contracts/registry/RegistryAdmin.sol +448 -0
  417. package/contracts/registry/RegistryService.sol +126 -284
  418. package/contracts/registry/RegistryServiceManager.sol +26 -53
  419. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  420. package/contracts/registry/ReleaseRegistry.sol +501 -0
  421. package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
  422. package/contracts/registry/TokenRegistry.sol +261 -57
  423. package/contracts/shared/Component.sol +265 -0
  424. package/contracts/shared/ComponentService.sol +745 -0
  425. package/contracts/shared/ComponentServiceManager.sol +38 -0
  426. package/contracts/shared/ComponentVerifyingService.sol +126 -0
  427. package/contracts/shared/ContractLib.sol +38 -0
  428. package/contracts/shared/IComponent.sol +74 -0
  429. package/contracts/shared/IComponentService.sol +120 -0
  430. package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
  431. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  432. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  433. package/contracts/shared/INftOwnable.sol +15 -12
  434. package/contracts/shared/IPolicyHolder.sol +35 -0
  435. package/contracts/shared/IRegisterable.sol +15 -6
  436. package/contracts/shared/IRegistryLinked.sol +11 -0
  437. package/contracts/shared/IService.sol +16 -6
  438. package/contracts/shared/InitializableERC165.sol +27 -0
  439. package/contracts/shared/InstanceLinkedComponent.sol +213 -0
  440. package/contracts/shared/KeyValueStore.sol +131 -0
  441. package/contracts/shared/Lifecycle.sol +88 -0
  442. package/contracts/shared/NftIdSet.sol +65 -0
  443. package/contracts/shared/NftOwnable.sol +75 -84
  444. package/contracts/shared/PolicyHolder.sol +62 -0
  445. package/contracts/shared/Registerable.sol +34 -39
  446. package/contracts/shared/RegistryLinked.sol +44 -0
  447. package/contracts/shared/Service.sol +61 -32
  448. package/contracts/shared/TokenHandler.sol +122 -10
  449. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  450. package/contracts/staking/IStaking.sol +168 -0
  451. package/contracts/staking/IStakingService.sol +157 -0
  452. package/contracts/staking/StakeManagerLib.sol +224 -0
  453. package/contracts/staking/Staking.sol +497 -0
  454. package/contracts/staking/StakingLifecycle.sol +23 -0
  455. package/contracts/staking/StakingManager.sol +52 -0
  456. package/contracts/staking/StakingReader.sol +190 -0
  457. package/contracts/staking/StakingService.sol +407 -0
  458. package/contracts/staking/StakingServiceManager.sol +44 -0
  459. package/contracts/staking/StakingStore.sol +605 -0
  460. package/contracts/staking/TargetManagerLib.sol +211 -0
  461. package/contracts/{types → type}/AddressSet.sol +1 -1
  462. package/contracts/type/Amount.sol +150 -0
  463. package/contracts/{types → type}/Blocknumber.sol +27 -3
  464. package/contracts/type/ClaimId.sol +80 -0
  465. package/contracts/{types → type}/DistributorType.sol +2 -2
  466. package/contracts/{types → type}/Fee.sol +33 -23
  467. package/contracts/{types → type}/NftId.sol +22 -15
  468. package/contracts/type/NftIdSet.sol +62 -0
  469. package/contracts/type/ObjectType.sol +276 -0
  470. package/contracts/type/PayoutId.sol +82 -0
  471. package/contracts/{types → type}/Referral.sol +6 -1
  472. package/contracts/type/RequestId.sol +75 -0
  473. package/contracts/{types → type}/RiskId.sol +16 -2
  474. package/contracts/type/RoleId.sol +162 -0
  475. package/contracts/type/Seconds.sol +101 -0
  476. package/contracts/type/Selector.sol +102 -0
  477. package/contracts/{types → type}/StateId.sol +48 -4
  478. package/contracts/type/String.sol +53 -0
  479. package/contracts/{types → type}/Timestamp.sol +34 -15
  480. package/contracts/{types → type}/UFixed.sol +39 -9
  481. package/contracts/{types → type}/Version.sol +5 -2
  482. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  483. package/contracts/upgradeability/ProxyManager.sol +232 -0
  484. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  485. package/contracts/upgradeability/Versionable.sol +59 -0
  486. package/package.json +11 -7
  487. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  488. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  489. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  490. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  491. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  492. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  493. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  494. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  495. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  496. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  497. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  498. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  499. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  500. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  501. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  502. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  503. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  505. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  507. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  509. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  511. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  512. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  513. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  514. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  515. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  516. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  517. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  518. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  519. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  520. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  521. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  522. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  523. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  524. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  526. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  528. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  530. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  532. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  534. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  536. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  538. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  540. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  541. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  542. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  543. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  544. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  545. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  546. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  547. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  548. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  549. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  550. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  551. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  552. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  553. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  554. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  555. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  556. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  557. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  558. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  560. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  561. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  563. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  564. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -448
  565. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -855
  571. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
  573. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  574. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  575. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  576. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  577. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  578. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  579. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  580. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  581. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  582. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  583. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  584. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  585. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  586. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  587. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  588. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  589. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  590. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  591. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  592. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  593. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  594. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  595. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  596. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  597. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  598. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  599. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  600. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  601. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  602. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  603. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  604. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  606. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  608. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  610. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  612. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  614. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  616. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  617. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  618. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  620. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  622. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  624. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  626. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  628. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  630. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  632. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  634. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  636. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  638. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  640. package/contracts/components/BaseComponent.sol +0 -91
  641. package/contracts/components/Distribution.sol +0 -160
  642. package/contracts/components/IBaseComponent.sol +0 -25
  643. package/contracts/components/IDistributionComponent.sol +0 -44
  644. package/contracts/components/IPoolComponent.sol +0 -62
  645. package/contracts/components/IProductComponent.sol +0 -35
  646. package/contracts/components/Pool.sol +0 -243
  647. package/contracts/components/Product.sol +0 -297
  648. package/contracts/experiment/cloning/Cloner.sol +0 -47
  649. package/contracts/experiment/errors/Require.sol +0 -38
  650. package/contracts/experiment/errors/Revert.sol +0 -44
  651. package/contracts/experiment/inheritance/A.sol +0 -53
  652. package/contracts/experiment/inheritance/B.sol +0 -28
  653. package/contracts/experiment/inheritance/C.sol +0 -34
  654. package/contracts/experiment/inheritance/IA.sol +0 -13
  655. package/contracts/experiment/inheritance/IB.sol +0 -10
  656. package/contracts/experiment/inheritance/IC.sol +0 -12
  657. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  658. package/contracts/experiment/statemachine/ISM.sol +0 -25
  659. package/contracts/experiment/statemachine/SM.sol +0 -57
  660. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  661. package/contracts/experiment/types/TypeA.sol +0 -47
  662. package/contracts/experiment/types/TypeB.sol +0 -29
  663. package/contracts/instance/AccessManagedSimple.sol +0 -115
  664. package/contracts/instance/AccessManagerSimple.sol +0 -692
  665. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  666. package/contracts/instance/InstanceAccessManager.sol +0 -288
  667. package/contracts/instance/base/ComponentServiceBase.sol +0 -118
  668. package/contracts/instance/base/IInstanceBase.sol +0 -23
  669. package/contracts/instance/base/KeyValueStore.sol +0 -172
  670. package/contracts/instance/base/Lifecycle.sol +0 -100
  671. package/contracts/instance/module/ISetup.sol +0 -44
  672. package/contracts/instance/module/ITreasury.sol +0 -23
  673. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  674. package/contracts/instance/service/DistributionService.sol +0 -87
  675. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  676. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  677. package/contracts/instance/service/IDistributionService.sol +0 -12
  678. package/contracts/instance/service/IPoolService.sol +0 -37
  679. package/contracts/instance/service/IProductService.sol +0 -107
  680. package/contracts/instance/service/PoolService.sol +0 -193
  681. package/contracts/instance/service/PoolServiceManager.sol +0 -53
  682. package/contracts/shared/ContractDeployerLib.sol +0 -72
  683. package/contracts/shared/ERC165.sol +0 -25
  684. package/contracts/shared/ProxyManager.sol +0 -94
  685. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  686. package/contracts/shared/Versionable.sol +0 -147
  687. package/contracts/test/TestFee.sol +0 -25
  688. package/contracts/test/TestRegisterable.sol +0 -18
  689. package/contracts/test/TestRoleId.sol +0 -14
  690. package/contracts/test/TestService.sol +0 -24
  691. package/contracts/test/TestToken.sol +0 -26
  692. package/contracts/test/TestVersion.sol +0 -44
  693. package/contracts/test/TestVersionable.sol +0 -17
  694. package/contracts/types/ChainId.sol +0 -38
  695. package/contracts/types/NftIdSet.sol +0 -60
  696. package/contracts/types/NumberId.sol +0 -52
  697. package/contracts/types/ObjectType.sol +0 -152
  698. package/contracts/types/RoleId.sol +0 -89
  699. /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
+ }