@etherisc/gif-next 0.0.2-771d9e9-515 → 0.0.2-77438d0-379

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 +1439 -0
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +830 -0
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +929 -0
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +961 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -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 +474 -553
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +389 -167
  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 +490 -386
  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 +1299 -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 +1098 -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 +354 -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 +75 -0
  344. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  345. package/contracts/examples/fire/FireProduct.sol +412 -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 -16
  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 +351 -123
  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 +461 -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 +335 -0
  390. package/contracts/pool/PoolService.sol +525 -0
  391. package/contracts/pool/PoolServiceManager.sol +39 -0
  392. package/contracts/product/ApplicationService.sol +251 -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 +591 -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 +683 -0
  405. package/contracts/product/PolicyServiceManager.sol +39 -0
  406. package/contracts/product/PricingService.sol +297 -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 +735 -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 +72 -85
  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 +393 -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,735 @@
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, COMPONENT, DISTRIBUTION, 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
+ _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
224
+ }
225
+
226
+
227
+ function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
228
+ external
229
+ virtual
230
+ // TODO re-enable once role granting is stable and fixed
231
+ // restricted()
232
+ {
233
+ _changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
234
+ }
235
+
236
+ //-------- distribution -------------------------------------------------//
237
+
238
+ /// @dev registers the sending component as a distribution component
239
+ function _registerDistribution(address distributioAddress)
240
+ internal
241
+ virtual
242
+ returns (NftId distributionNftId)
243
+ {
244
+ // register/create component info
245
+ InstanceReader instanceReader;
246
+ InstanceAdmin instanceAdmin;
247
+ InstanceStore instanceStore;
248
+ NftId productNftId;
249
+ (instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
250
+ distributioAddress,
251
+ DISTRIBUTION());
252
+
253
+ // check product is still expecting a distribution registration
254
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
255
+ if (!productInfo.hasDistribution) {
256
+ revert ErrorProductServiceNoDistributionExpected(productNftId);
257
+ }
258
+ if (productInfo.distributionNftId.gtz()) {
259
+ revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
260
+ }
261
+
262
+ // set distribution in product info
263
+ productInfo.distributionNftId = distributionNftId;
264
+ instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
265
+
266
+ // authorize
267
+ instanceAdmin.initializeComponentAuthorization(
268
+ IInstanceLinkedComponent(distributioAddress));
269
+ }
270
+
271
+
272
+ function setDistributionFees(
273
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
274
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
275
+ )
276
+ external
277
+ virtual
278
+ {
279
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
280
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
281
+ instance.getInstanceReader(), distributionNftId);
282
+ bool feesChanged = false;
283
+
284
+ // update distributino fee if required
285
+ if(!FeeLib.eq(productInfo.distributionFee, distributionFee)) {
286
+ _logUpdateFee(productNftId, "DistributionFee", productInfo.distributionFee, distributionFee);
287
+ productInfo.distributionFee = distributionFee;
288
+ feesChanged = true;
289
+ }
290
+
291
+ // update min distribution owner fee if required
292
+ if(!FeeLib.eq(productInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
293
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", productInfo.minDistributionOwnerFee, minDistributionOwnerFee);
294
+ productInfo.minDistributionOwnerFee = minDistributionOwnerFee;
295
+ feesChanged = true;
296
+ }
297
+
298
+ if(feesChanged) {
299
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
300
+ emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
301
+ }
302
+ }
303
+
304
+ function increaseDistributionBalance(
305
+ InstanceStore instanceStore,
306
+ NftId distributionNftId,
307
+ Amount amount,
308
+ Amount feeAmount
309
+ )
310
+ external
311
+ virtual
312
+ // TODO re-enable once role granting is stable and fixed
313
+ // restricted()
314
+ {
315
+ _changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
316
+ }
317
+
318
+
319
+ function decreaseDistributionBalance(
320
+ InstanceStore instanceStore,
321
+ NftId distributionNftId,
322
+ Amount amount,
323
+ Amount feeAmount
324
+ )
325
+ external
326
+ virtual
327
+ // TODO re-enable once role granting is stable and fixed
328
+ // restricted()
329
+ {
330
+ _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
331
+ }
332
+
333
+ //-------- distributor -------------------------------------------------------//
334
+
335
+ function increaseDistributorBalance(
336
+ InstanceStore instanceStore,
337
+ NftId distributorNftId,
338
+ Amount amount,
339
+ Amount feeAmount
340
+ )
341
+ external
342
+ virtual
343
+ // TODO re-enable once role granting is stable and fixed
344
+ // restricted()
345
+ {
346
+ _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
347
+ }
348
+
349
+ function decreaseDistributorBalance(
350
+ InstanceStore instanceStore,
351
+ NftId distributorNftId,
352
+ Amount amount,
353
+ Amount feeAmount
354
+ )
355
+ external
356
+ virtual
357
+ // TODO re-enable once role granting is stable and fixed
358
+ // restricted()
359
+ {
360
+ _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
361
+ }
362
+
363
+ //-------- oracle -------------------------------------------------------//
364
+
365
+ function _registerOracle(address oracleAddress)
366
+ internal
367
+ virtual
368
+ returns (NftId oracleNftId)
369
+ {
370
+ // register/create component setup
371
+ InstanceReader instanceReader;
372
+ InstanceAdmin instanceAdmin;
373
+ InstanceStore instanceStore;
374
+ NftId productNftId;
375
+
376
+ (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
377
+ oracleAddress,
378
+ ORACLE());
379
+
380
+ // check product is still expecting an oracle registration
381
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
382
+ if (productInfo.expectedNumberOfOracles == 0) {
383
+ revert ErrorProductServiceNoOraclesExpected(productNftId);
384
+ }
385
+ if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
386
+ revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
387
+ }
388
+
389
+ // update/add oracle to product info
390
+ productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
391
+ productInfo.numberOfOracles++;
392
+ instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
393
+
394
+ // authorize
395
+ instanceAdmin.initializeComponentAuthorization(
396
+ IInstanceLinkedComponent(oracleAddress));
397
+ }
398
+
399
+ //-------- pool ---------------------------------------------------------//
400
+
401
+ function _registerPool(address poolAddress)
402
+ internal
403
+ virtual
404
+ returns (NftId poolNftId)
405
+ {
406
+ // register/create component setup
407
+ InstanceReader instanceReader;
408
+ InstanceAdmin instanceAdmin;
409
+ InstanceStore instanceStore;
410
+ NftId productNftId;
411
+
412
+ (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
413
+ poolAddress,
414
+ POOL());
415
+
416
+ // check product is still expecting a pool registration
417
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
418
+ if (productInfo.poolNftId.gtz()) {
419
+ revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
420
+ }
421
+
422
+ // create info
423
+ IPoolComponent pool = IPoolComponent(poolAddress);
424
+ instanceStore.createPool(
425
+ poolNftId,
426
+ pool.getInitialPoolInfo());
427
+
428
+ // update pool in product info
429
+ productInfo.poolNftId = poolNftId;
430
+ instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
431
+
432
+ // authorize
433
+ instanceAdmin.initializeComponentAuthorization(pool);
434
+ }
435
+
436
+
437
+ function setPoolFees(
438
+ Fee memory poolFee, // pool fee on net premium
439
+ Fee memory stakingFee, // pool fee on staked capital from investor
440
+ Fee memory performanceFee // pool fee on profits from capital investors
441
+ )
442
+ external
443
+ virtual
444
+ {
445
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
446
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
447
+ instance.getInstanceReader(), poolNftId);
448
+ bool feesChanged = false;
449
+
450
+ // update pool fee if required
451
+ if(!FeeLib.eq(productInfo.poolFee, poolFee)) {
452
+ _logUpdateFee(productNftId, "PoolFee", productInfo.poolFee, poolFee);
453
+ productInfo.poolFee = poolFee;
454
+ feesChanged = true;
455
+ }
456
+
457
+ // update staking fee if required
458
+ if(!FeeLib.eq(productInfo.stakingFee, stakingFee)) {
459
+ _logUpdateFee(productNftId, "StakingFee", productInfo.stakingFee, stakingFee);
460
+ productInfo.stakingFee = stakingFee;
461
+ feesChanged = true;
462
+ }
463
+
464
+ // update performance fee if required
465
+ if(!FeeLib.eq(productInfo.performanceFee, performanceFee)) {
466
+ _logUpdateFee(productNftId, "PerformanceFee", productInfo.performanceFee, performanceFee);
467
+ productInfo.performanceFee = performanceFee;
468
+ feesChanged = true;
469
+ }
470
+
471
+ if(feesChanged) {
472
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
473
+ emit LogComponentServicePoolFeesUpdated(poolNftId);
474
+ }
475
+ }
476
+
477
+ function increasePoolBalance(
478
+ InstanceStore instanceStore,
479
+ NftId poolNftId,
480
+ Amount amount,
481
+ Amount feeAmount
482
+ )
483
+ public
484
+ virtual
485
+ // TODO re-enable once role granting is stable and fixed
486
+ // restricted()
487
+ {
488
+ _changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
489
+ }
490
+
491
+ function decreasePoolBalance(
492
+ InstanceStore instanceStore,
493
+ NftId poolNftId,
494
+ Amount amount,
495
+ Amount feeAmount
496
+ )
497
+ public
498
+ virtual
499
+ // TODO re-enable once role granting is stable and fixed
500
+ // restricted()
501
+ {
502
+ _changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
503
+ }
504
+
505
+ //-------- bundle -------------------------------------------------------//
506
+
507
+ function increaseBundleBalance(
508
+ InstanceStore instanceStore,
509
+ NftId bundleNftId,
510
+ Amount amount,
511
+ Amount feeAmount
512
+ )
513
+ external
514
+ virtual
515
+ // TODO re-enable once role granting is stable and fixed
516
+ // restricted()
517
+ {
518
+ _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
519
+ }
520
+
521
+ function decreaseBundleBalance(
522
+ InstanceStore instanceStore,
523
+ NftId bundleNftId,
524
+ Amount amount,
525
+ Amount feeAmount
526
+ )
527
+ external
528
+ virtual
529
+ // TODO re-enable once role granting is stable and fixed
530
+ // restricted()
531
+ {
532
+ _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
533
+ }
534
+
535
+
536
+ //-------- internal functions ------------------------------------------//
537
+
538
+ function _changeTargetBalance(
539
+ bool increase,
540
+ InstanceStore instanceStore,
541
+ NftId targetNftId,
542
+ Amount amount,
543
+ Amount feeAmount
544
+ )
545
+ internal
546
+ virtual
547
+ {
548
+ Amount totalAmount = amount + feeAmount;
549
+
550
+ if(increase) {
551
+ if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
552
+ if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
553
+ } else {
554
+ if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
555
+ if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
556
+ }
557
+ }
558
+
559
+ /// @dev Registers the component represented by the provided address.
560
+ function _register(
561
+ address componentAddress, // address of component to register
562
+ ObjectType requiredType // required type for component for registration
563
+ )
564
+ internal
565
+ virtual
566
+ returns (
567
+ InstanceReader instanceReader,
568
+ InstanceAdmin instanceAdmin,
569
+ InstanceStore instanceStore,
570
+ NftId parentNftId,
571
+ NftId componentNftId
572
+ )
573
+ {
574
+ NftId instanceNftId;
575
+ IInstance instance;
576
+ IInstanceLinkedComponent component;
577
+ address initialOwner;
578
+
579
+ (
580
+ instanceNftId,
581
+ instance,
582
+ parentNftId,
583
+ component,
584
+ initialOwner
585
+ ) = _getAndVerifyRegisterableComponent(
586
+ getRegistry(),
587
+ componentAddress,
588
+ requiredType);
589
+
590
+ // get instance supporting contracts (as function return values)
591
+ instanceReader = instance.getInstanceReader();
592
+ instanceAdmin = instance.getInstanceAdmin();
593
+ instanceStore = instance.getInstanceStore();
594
+
595
+ // register with registry
596
+ if (requiredType == PRODUCT()) {
597
+ componentNftId = _registryService.registerProduct(
598
+ component, initialOwner).nftId;
599
+ } else {
600
+ componentNftId = _registryService.registerProductLinkedComponent(
601
+ component, requiredType, initialOwner).nftId;
602
+ }
603
+
604
+ // deploy and wire token handler
605
+ IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
606
+ IERC20Metadata token = componentInfo.token;
607
+ componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
608
+ address(token),
609
+ address(instanceAdmin.authority()));
610
+
611
+ // register component with instance
612
+ instanceStore.createComponent(
613
+ componentNftId,
614
+ componentInfo);
615
+
616
+ // link component contract to nft id
617
+ component.linkToRegisteredNftId();
618
+
619
+ emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
620
+ }
621
+
622
+
623
+ function _logUpdateFee(NftId productNftId, string memory name, Fee memory feeBefore, Fee memory feeAfter)
624
+ internal
625
+ virtual
626
+ {
627
+ emit LogComponentServiceUpdateFee(
628
+ productNftId,
629
+ name,
630
+ feeBefore.fractionalFee,
631
+ feeBefore.fixedFee,
632
+ feeAfter.fractionalFee,
633
+ feeAfter.fixedFee
634
+ );
635
+ }
636
+
637
+
638
+ function _getLinkedProductInfo(
639
+ InstanceReader instanceReader,
640
+ NftId componentNftId
641
+ )
642
+ internal
643
+ view
644
+ returns(
645
+ NftId productNftId,
646
+ IComponents.ProductInfo memory info
647
+ )
648
+ {
649
+ productNftId = _getProductNftId(componentNftId);
650
+ info = instanceReader.getProductInfo(productNftId);
651
+ }
652
+
653
+
654
+ /// @dev Based on the provided component address required type the component
655
+ /// and related instance contract this function reverts iff:
656
+ /// - the sender is not registered
657
+ /// - the component contract does not support IInstanceLinkedComponent
658
+ /// - the component type does not match with the required type
659
+ /// - the component has already been registered
660
+ function _getAndVerifyRegisterableComponent(
661
+ IRegistry registry,
662
+ address componentAddress,
663
+ ObjectType requiredType
664
+ )
665
+ internal
666
+ view
667
+ returns (
668
+ NftId instanceNftId,
669
+ IInstance instance,
670
+ NftId parentNftId,
671
+ IInstanceLinkedComponent component,
672
+ address initialOwner
673
+ )
674
+ {
675
+ // check sender (instance or product) is registered
676
+ IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
677
+ if (senderInfo.nftId.eqz()) {
678
+ revert ErrorComponentServiceSenderNotRegistered(msg.sender);
679
+ }
680
+
681
+ // the sender is the parent of the component to be registered
682
+ // an instance caller wanting to register a product - or -
683
+ // a product caller wantint go register a distribution, oracle or pool
684
+ parentNftId = senderInfo.nftId;
685
+
686
+ // check component is of required type
687
+ component = IInstanceLinkedComponent(componentAddress);
688
+ IRegistry.ObjectInfo memory info = component.getInitialInfo();
689
+ if(info.objectType != requiredType) {
690
+ revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
691
+ }
692
+
693
+ // check component has not already been registered
694
+ if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
695
+ revert ErrorComponentServiceAlreadyRegistered(componentAddress);
696
+ }
697
+
698
+ // check release matches
699
+ address parentAddress = registry.getObjectAddress(parentNftId);
700
+ if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
701
+ revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
702
+ }
703
+
704
+ // check component belongs to same product cluster
705
+ // parent of product must be instance, parent of other componet types must be product
706
+ if (info.parentNftId != senderInfo.nftId) {
707
+ revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
708
+ }
709
+
710
+ // verify parent is registered instance
711
+ if (requiredType == PRODUCT()) {
712
+ if (senderInfo.objectType != INSTANCE()) {
713
+ revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
714
+ }
715
+
716
+ instanceNftId = senderInfo.nftId;
717
+ // verify parent is registered product
718
+ } else {
719
+ if (senderInfo.objectType != PRODUCT()) {
720
+ revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
721
+ }
722
+
723
+ instanceNftId = senderInfo.parentNftId;
724
+ }
725
+
726
+ // get initial owner and instance
727
+ initialOwner = info.initialOwner;
728
+ instance = _getInstance(registry, instanceNftId);
729
+ }
730
+
731
+
732
+ function _getDomain() internal pure virtual override returns(ObjectType) {
733
+ return COMPONENT();
734
+ }
735
+ }