@etherisc/gif-next 0.0.2-d3ee0cc-268 → 0.0.2-d437d8d-974

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 (727) hide show
  1. package/README.md +297 -25
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1234 -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 +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1013 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1012 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1400 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +787 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +932 -0
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +280 -1494
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +394 -1735
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1623 -0
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1850 -0
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1048 -0
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +683 -0
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3587 -0
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  78. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  80. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  82. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  84. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  87. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +922 -0
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +679 -0
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  105. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  107. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1362 -0
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +771 -0
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  115. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  117. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1198 -0
  118. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  119. package/artifacts/contracts/pool/Pool.sol/Pool.json +1034 -0
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  121. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1469 -0
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +695 -0
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +732 -0
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +667 -0
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  129. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  133. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1341 -0
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +783 -0
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  137. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +259 -219
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  139. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +835 -0
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  147. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IRiskService.sol/IRiskService.json} +202 -178
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1186 -0
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.json +860 -0
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +715 -0
  156. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  157. package/artifacts/contracts/product/Product.sol/Product.json +1054 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +924 -119
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +940 -0
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  170. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/Registry.sol/Registry.json +1343 -220
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  173. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1858 -0
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  175. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1340 -0
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  187. package/artifacts/contracts/shared/Component.sol/Component.json +685 -0
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1568 -0
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +753 -0
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +427 -0
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  197. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +605 -0
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  199. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +104 -141
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  207. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +37 -80
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  213. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  214. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  215. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +163 -143
  216. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  217. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  218. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  219. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  220. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  221. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  222. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  223. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  224. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  225. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  226. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  227. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  228. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  229. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +193 -0
  230. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  231. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  232. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +170 -27
  234. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  235. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  236. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/Service.sol/Service.json} +197 -166
  238. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  239. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +469 -0
  240. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  241. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  242. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  243. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  244. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  245. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  246. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  248. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  249. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  250. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  252. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +714 -0
  254. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  256. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1231 -0
  258. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  260. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  262. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  263. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  264. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  266. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  268. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  270. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  272. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  274. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  276. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  278. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  280. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  281. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  282. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  284. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  286. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  288. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  290. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  292. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  294. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  296. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  298. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  300. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  302. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  304. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  306. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  308. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  310. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  312. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  314. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  315. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  316. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  317. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  318. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  319. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  320. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  322. package/contracts/authorization/AccessAdmin.sol +592 -0
  323. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  324. package/contracts/authorization/Authorization.sol +217 -0
  325. package/contracts/authorization/IAccess.sol +48 -0
  326. package/contracts/authorization/IAccessAdmin.sol +135 -0
  327. package/contracts/authorization/IAuthorization.sol +54 -0
  328. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  329. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  330. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  331. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  332. package/contracts/distribution/BasicDistribution.sol +138 -0
  333. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  334. package/contracts/distribution/Distribution.sol +295 -0
  335. package/contracts/distribution/DistributionService.sol +336 -0
  336. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  337. package/contracts/distribution/IDistributionComponent.sol +52 -0
  338. package/contracts/distribution/IDistributionService.sol +101 -0
  339. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  340. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  341. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  342. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  343. package/contracts/instance/BundleSet.sol +126 -0
  344. package/contracts/instance/IInstance.sol +57 -46
  345. package/contracts/instance/IInstanceService.sol +92 -0
  346. package/contracts/instance/Instance.sol +215 -54
  347. package/contracts/instance/InstanceAdmin.sol +285 -0
  348. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  349. package/contracts/instance/InstanceReader.sol +430 -0
  350. package/contracts/instance/InstanceService.sol +467 -0
  351. package/contracts/instance/InstanceServiceManager.sol +40 -0
  352. package/contracts/instance/InstanceStore.sol +287 -0
  353. package/contracts/instance/base/BalanceStore.sol +123 -0
  354. package/contracts/instance/base/Cloneable.sol +28 -0
  355. package/contracts/instance/base/ObjectCounter.sol +21 -0
  356. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  357. package/contracts/instance/base/ObjectSet.sol +79 -0
  358. package/contracts/instance/module/IAccess.sol +46 -0
  359. package/contracts/instance/module/IBundle.sol +20 -0
  360. package/contracts/instance/module/IComponents.sol +46 -0
  361. package/contracts/instance/module/IDistribution.sol +41 -0
  362. package/contracts/instance/module/IPolicy.sol +84 -0
  363. package/contracts/instance/module/IRisk.sol +11 -0
  364. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  365. package/contracts/oracle/BasicOracle.sol +48 -0
  366. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  367. package/contracts/oracle/IOracle.sol +36 -0
  368. package/contracts/oracle/IOracleComponent.sol +33 -0
  369. package/contracts/oracle/IOracleService.sol +65 -0
  370. package/contracts/oracle/Oracle.sol +167 -0
  371. package/contracts/oracle/OracleService.sol +279 -0
  372. package/contracts/oracle/OracleServiceManager.sol +39 -0
  373. package/contracts/pool/BasicPool.sol +166 -0
  374. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  375. package/contracts/pool/BundleService.sol +438 -0
  376. package/contracts/pool/BundleServiceManager.sol +39 -0
  377. package/contracts/pool/IBundleService.sol +134 -0
  378. package/contracts/pool/IPoolComponent.sol +58 -0
  379. package/contracts/pool/IPoolService.sol +160 -0
  380. package/contracts/pool/Pool.sol +326 -0
  381. package/contracts/pool/PoolService.sol +509 -0
  382. package/contracts/pool/PoolServiceManager.sol +39 -0
  383. package/contracts/product/ApplicationService.sol +248 -0
  384. package/contracts/product/ApplicationServiceManager.sol +38 -0
  385. package/contracts/product/BasicProduct.sol +53 -0
  386. package/contracts/product/BasicProductAuthorization.sol +43 -0
  387. package/contracts/product/ClaimService.sol +537 -0
  388. package/contracts/product/ClaimServiceManager.sol +38 -0
  389. package/contracts/product/IApplicationService.sol +63 -0
  390. package/contracts/product/IClaimService.sol +122 -0
  391. package/contracts/product/IPolicyService.sol +75 -0
  392. package/contracts/product/IPricingService.sol +39 -0
  393. package/contracts/product/IProductComponent.sol +39 -0
  394. package/contracts/product/IRiskService.sol +33 -0
  395. package/contracts/product/PolicyService.sol +638 -0
  396. package/contracts/product/PolicyServiceManager.sol +39 -0
  397. package/contracts/product/PricingService.sol +301 -0
  398. package/contracts/product/PricingServiceManager.sol +39 -0
  399. package/contracts/product/Product.sol +425 -0
  400. package/contracts/product/RiskService.sol +97 -0
  401. package/contracts/product/RiskServiceManager.sol +39 -0
  402. package/contracts/registry/ChainNft.sol +131 -40
  403. package/contracts/registry/IRegistry.sol +140 -29
  404. package/contracts/registry/IRegistryService.sol +69 -0
  405. package/contracts/registry/ITransferInterceptor.sol +7 -0
  406. package/contracts/registry/Registry.sol +603 -282
  407. package/contracts/registry/RegistryAdmin.sol +464 -0
  408. package/contracts/registry/RegistryService.sol +252 -0
  409. package/contracts/registry/RegistryServiceManager.sol +53 -0
  410. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  411. package/contracts/registry/ReleaseRegistry.sol +491 -0
  412. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  413. package/contracts/registry/TokenRegistry.sol +315 -0
  414. package/contracts/shared/Component.sol +268 -0
  415. package/contracts/shared/ComponentService.sol +641 -0
  416. package/contracts/shared/ComponentServiceManager.sol +35 -0
  417. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  418. package/contracts/shared/ContractLib.sol +38 -0
  419. package/contracts/shared/IComponent.sol +70 -0
  420. package/contracts/shared/IComponentService.sol +108 -0
  421. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  422. package/contracts/shared/IKeyValueStore.sol +54 -0
  423. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  424. package/contracts/shared/INftOwnable.sol +23 -0
  425. package/contracts/shared/IPolicyHolder.sol +35 -0
  426. package/contracts/shared/IRegisterable.sol +10 -19
  427. package/contracts/shared/IRegistryLinked.sol +11 -0
  428. package/contracts/shared/IService.sol +25 -0
  429. package/contracts/shared/InitializableCustom.sol +177 -0
  430. package/contracts/shared/InitializableERC165.sol +27 -0
  431. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  432. package/contracts/shared/KeyValueStore.sol +131 -0
  433. package/contracts/shared/Lifecycle.sol +77 -0
  434. package/contracts/shared/NftIdSet.sol +65 -0
  435. package/contracts/shared/NftOwnable.sol +107 -0
  436. package/contracts/shared/PolicyHolder.sol +58 -0
  437. package/contracts/shared/Registerable.sol +54 -65
  438. package/contracts/shared/RegistryLinked.sol +44 -0
  439. package/contracts/shared/Service.sol +82 -0
  440. package/contracts/shared/TokenHandler.sol +139 -0
  441. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  442. package/contracts/staking/IStaking.sol +168 -0
  443. package/contracts/staking/IStakingService.sol +160 -0
  444. package/contracts/staking/StakeManagerLib.sol +224 -0
  445. package/contracts/staking/Staking.sol +498 -0
  446. package/contracts/staking/StakingLifecycle.sol +23 -0
  447. package/contracts/staking/StakingManager.sol +50 -0
  448. package/contracts/staking/StakingReader.sol +183 -0
  449. package/contracts/staking/StakingService.sol +407 -0
  450. package/contracts/staking/StakingServiceManager.sol +44 -0
  451. package/contracts/staking/StakingStore.sol +605 -0
  452. package/contracts/staking/TargetManagerLib.sol +211 -0
  453. package/contracts/{types → type}/AddressSet.sol +1 -1
  454. package/contracts/type/Amount.sol +135 -0
  455. package/contracts/{types → type}/Blocknumber.sol +27 -3
  456. package/contracts/type/ClaimId.sol +75 -0
  457. package/contracts/type/DistributorType.sol +55 -0
  458. package/contracts/type/Fee.sol +66 -0
  459. package/contracts/{types → type}/Key32.sol +8 -3
  460. package/contracts/{types → type}/NftId.sol +21 -15
  461. package/contracts/type/NftIdSet.sol +62 -0
  462. package/contracts/type/ObjectType.sol +275 -0
  463. package/contracts/type/PayoutId.sol +82 -0
  464. package/contracts/type/Referral.sol +90 -0
  465. package/contracts/type/RequestId.sol +75 -0
  466. package/contracts/type/RiskId.sol +43 -0
  467. package/contracts/type/RoleId.sol +174 -0
  468. package/contracts/type/Seconds.sol +101 -0
  469. package/contracts/type/Selector.sol +102 -0
  470. package/contracts/{types → type}/StateId.sol +40 -5
  471. package/contracts/type/String.sol +53 -0
  472. package/contracts/{types → type}/Timestamp.sol +38 -15
  473. package/contracts/type/UFixed.sol +351 -0
  474. package/contracts/{types → type}/Version.sol +17 -2
  475. package/contracts/upgradeability/IVersionable.sol +53 -0
  476. package/contracts/upgradeability/ProxyManager.sol +198 -0
  477. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  478. package/contracts/upgradeability/Versionable.sol +59 -0
  479. package/package.json +11 -7
  480. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  481. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  482. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  483. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  484. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  485. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  486. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  487. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  488. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  489. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  490. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  491. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  493. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  495. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  497. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  499. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  501. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  503. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  505. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  507. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  509. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  511. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  512. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  513. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  514. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  516. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  518. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  520. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  522. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  524. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  525. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  526. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  528. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  530. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  531. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  532. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  534. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  535. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  537. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  538. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  539. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  540. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  541. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  542. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  544. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  546. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  547. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  549. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  550. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  552. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  554. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  556. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  558. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  560. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  561. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  562. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  564. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  567. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  569. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  570. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  571. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  572. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  573. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  574. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  575. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  576. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  577. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  578. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  579. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  580. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  581. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  582. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  583. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  584. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  585. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  586. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  587. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  588. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  589. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -491
  590. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  592. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  593. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  594. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  595. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  596. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  597. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  598. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  599. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  600. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  601. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  602. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  603. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  604. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  605. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  606. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  607. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  608. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  609. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  610. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  611. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  612. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  613. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  614. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  615. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  616. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  617. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -82
  618. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  619. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  620. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  622. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  624. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  625. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  626. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  627. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  628. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  629. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  630. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  632. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  634. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  636. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  638. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  640. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  641. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  642. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  644. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  647. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  649. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  651. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  653. package/contracts/components/BaseComponent.sol +0 -88
  654. package/contracts/components/IBaseComponent.sol +0 -19
  655. package/contracts/components/IPoolComponent.sol +0 -57
  656. package/contracts/components/IProductComponent.sol +0 -19
  657. package/contracts/components/Pool.sol +0 -174
  658. package/contracts/components/Product.sol +0 -117
  659. package/contracts/experiment/errors/Require.sol +0 -38
  660. package/contracts/experiment/errors/Revert.sol +0 -44
  661. package/contracts/experiment/inheritance/A.sol +0 -53
  662. package/contracts/experiment/inheritance/B.sol +0 -28
  663. package/contracts/experiment/inheritance/C.sol +0 -34
  664. package/contracts/experiment/inheritance/IA.sol +0 -13
  665. package/contracts/experiment/inheritance/IB.sol +0 -10
  666. package/contracts/experiment/inheritance/IC.sol +0 -12
  667. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  668. package/contracts/experiment/statemachine/ISM.sol +0 -25
  669. package/contracts/experiment/statemachine/README.md +0 -112
  670. package/contracts/experiment/statemachine/SM.sol +0 -57
  671. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  672. package/contracts/experiment/types/TypeA.sol +0 -47
  673. package/contracts/experiment/types/TypeB.sol +0 -29
  674. package/contracts/instance/IInstanceLinked.sol +0 -8
  675. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  676. package/contracts/instance/base/IInstanceBase.sol +0 -14
  677. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  678. package/contracts/instance/base/IService.sol +0 -15
  679. package/contracts/instance/base/InstanceBase.sol +0 -80
  680. package/contracts/instance/base/KeyValueStore.sol +0 -156
  681. package/contracts/instance/base/Lifecycle.sol +0 -95
  682. package/contracts/instance/base/ModuleBase.sol +0 -52
  683. package/contracts/instance/base/ServiceBase.sol +0 -37
  684. package/contracts/instance/module/access/Access.sol +0 -149
  685. package/contracts/instance/module/access/IAccess.sol +0 -53
  686. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  687. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  688. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  689. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  690. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  691. package/contracts/instance/module/component/IComponent.sol +0 -53
  692. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  693. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  694. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  695. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  696. package/contracts/instance/module/risk/IRisk.sol +0 -10
  697. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  698. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  699. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  700. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  701. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  702. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  703. package/contracts/instance/service/IPoolService.sol +0 -30
  704. package/contracts/instance/service/IProductService.sol +0 -58
  705. package/contracts/instance/service/PoolService.sol +0 -123
  706. package/contracts/instance/service/ProductService.sol +0 -354
  707. package/contracts/registry/IChainNft.sol +0 -21
  708. package/contracts/registry/IRegistryLinked.sol +0 -8
  709. package/contracts/shared/ERC165.sol +0 -21
  710. package/contracts/shared/IOwnable.sol +0 -6
  711. package/contracts/shared/IVersionable.sol +0 -52
  712. package/contracts/shared/Versionable.sol +0 -89
  713. package/contracts/test/TestFee.sol +0 -25
  714. package/contracts/test/TestPool.sol +0 -22
  715. package/contracts/test/TestProduct.sol +0 -44
  716. package/contracts/test/TestRegisterable.sol +0 -19
  717. package/contracts/test/TestRoleId.sol +0 -14
  718. package/contracts/test/TestService.sol +0 -32
  719. package/contracts/test/TestToken.sol +0 -26
  720. package/contracts/test/TestVersion.sol +0 -44
  721. package/contracts/test/TestVersionable.sol +0 -17
  722. package/contracts/types/ChainId.sol +0 -38
  723. package/contracts/types/Fee.sol +0 -51
  724. package/contracts/types/NftIdSet.sol +0 -60
  725. package/contracts/types/ObjectType.sol +0 -115
  726. package/contracts/types/RoleId.sol +0 -36
  727. package/contracts/types/UFixed.sol +0 -209
@@ -0,0 +1,641 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../type/Amount.sol";
5
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
6
+ import {Fee, FeeLib} from "../type/Fee.sol";
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {IComponentService} from "./IComponentService.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
11
+ import {InstanceReader} from "../instance/InstanceReader.sol";
12
+ import {InstanceStore} from "../instance/InstanceStore.sol";
13
+ import {IInstanceService} from "../instance/IInstanceService.sol";
14
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
15
+ import {IProductComponent} from "../product/IProductComponent.sol";
16
+ import {IRegistry} from "../registry/IRegistry.sol";
17
+ import {IRegistryService} from "../registry/IRegistryService.sol";
18
+ import {KEEP_STATE} from "../type/StateId.sol";
19
+ import {NftId} from "../type/NftId.sol";
20
+ import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
21
+ import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
22
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
23
+
24
+ contract ComponentService is
25
+ ComponentVerifyingService,
26
+ IComponentService
27
+ {
28
+ error ErrorComponentServiceAlreadyRegistered(address component);
29
+ error ErrorComponentServiceNotComponent(address component);
30
+ error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
31
+ error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
32
+ error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
33
+ error ErrorComponentServiceComponentLocked(address component);
34
+ error ErrorComponentServiceSenderNotService(address sender);
35
+ error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
36
+
37
+ bool private constant INCREASE = true;
38
+ bool private constant DECREASE = false;
39
+
40
+ IRegistryService private _registryService;
41
+ IInstanceService private _instanceService;
42
+
43
+ function _initialize(
44
+ address owner,
45
+ bytes memory data
46
+ )
47
+ internal
48
+ virtual override
49
+ initializer()
50
+ {
51
+ // TODO check this, might no longer be the way, refactor if necessary
52
+ address registryAddress;
53
+ address initialOwner;
54
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
55
+
56
+ _initializeService(registryAddress, address(0), owner);
57
+
58
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
59
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
60
+
61
+ _registerInterface(type(IComponentService).interfaceId);
62
+ }
63
+
64
+ //-------- component ----------------------------------------------------//
65
+
66
+ function setWallet(address newWallet) external virtual {
67
+ (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
68
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
69
+ address currentWallet = info.wallet;
70
+
71
+ if (newWallet == address(0)) {
72
+ revert ErrorComponentServiceNewWalletAddressZero();
73
+ }
74
+
75
+ if (currentWallet == address(0)) {
76
+ revert ErrorComponentServiceWalletAddressZero();
77
+ }
78
+
79
+ if (newWallet == currentWallet) {
80
+ revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
81
+ }
82
+
83
+ info.wallet = newWallet;
84
+ instance.getInstanceStore().updateComponent(componentNftId, info, KEEP_STATE());
85
+ emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
86
+ }
87
+
88
+ // TODO implement
89
+ function lock() external virtual {}
90
+
91
+ // TODO implement
92
+ function unlock() external virtual {}
93
+
94
+ function withdrawFees(Amount amount)
95
+ external
96
+ virtual
97
+ returns (Amount withdrawnAmount)
98
+ {
99
+ (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
100
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
101
+ address componentWallet = info.wallet;
102
+
103
+ // determine withdrawn amount
104
+ withdrawnAmount = amount;
105
+ if (withdrawnAmount.gte(AmountLib.max())) {
106
+ withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
107
+ } else if (withdrawnAmount.eqz()) {
108
+ revert ErrorComponentServiceWithdrawAmountIsZero();
109
+ } else {
110
+ Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
111
+ if (withdrawnAmount.gt(withdrawLimit)) {
112
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
113
+ }
114
+ }
115
+
116
+ // decrease fee counters by withdrawnAmount
117
+ _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
118
+
119
+ // transfer amount to component owner
120
+ address componentOwner = getRegistry().ownerOf(componentNftId);
121
+ emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
122
+ info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
123
+ }
124
+
125
+
126
+ //-------- product ------------------------------------------------------//
127
+
128
+ function registerProduct()
129
+ external
130
+ virtual
131
+ {
132
+ address contractAddress = msg.sender;
133
+
134
+ // register/create component setup
135
+ (
136
+ InstanceReader instanceReader,
137
+ InstanceStore instanceStore,
138
+ NftId productNftId
139
+ ) = _register(
140
+ contractAddress,
141
+ PRODUCT(),
142
+ PRODUCT_OWNER_ROLE());
143
+
144
+ // create product info
145
+ IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
146
+ instanceStore.createProduct(productNftId, productInfo);
147
+
148
+ // link distribution and pool to product
149
+ _linkToProduct(instanceReader, instanceStore, productInfo.distributionNftId, productNftId);
150
+ _linkToProduct(instanceReader, instanceStore, productInfo.poolNftId, productNftId);
151
+ }
152
+
153
+
154
+ function setProductFees(
155
+ Fee memory productFee, // product fee on net premium
156
+ Fee memory processingFee // product fee on payout amounts
157
+ )
158
+ external
159
+ virtual
160
+ {
161
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
162
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
163
+ bool feesChanged = false;
164
+
165
+ // update product fee if required
166
+ if(!FeeLib.eq(productInfo.productFee, productFee)) {
167
+ _logUpdateFee(productNftId, "ProductFee", productInfo.productFee, productFee);
168
+ productInfo.productFee = productFee;
169
+ feesChanged = true;
170
+ }
171
+
172
+ // update processing fee if required
173
+ if(!FeeLib.eq(productInfo.processingFee, processingFee)) {
174
+ _logUpdateFee(productNftId, "ProcessingFee", productInfo.processingFee, processingFee);
175
+ productInfo.processingFee = processingFee;
176
+ feesChanged = true;
177
+ }
178
+
179
+ if(feesChanged) {
180
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
181
+ emit LogComponentServiceProductFeesUpdated(productNftId);
182
+ }
183
+ }
184
+
185
+ function increaseProductFees(
186
+ InstanceStore instanceStore,
187
+ NftId productNftId,
188
+ Amount feeAmount
189
+ )
190
+ external
191
+ virtual
192
+ // TODO re-enable once role granting is stable and fixed
193
+ // restricted()
194
+ {
195
+ _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
196
+ }
197
+
198
+
199
+ function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
200
+ external
201
+ virtual
202
+ // TODO re-enable once role granting is stable and fixed
203
+ // restricted()
204
+ {
205
+ _changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
206
+ }
207
+
208
+ //-------- distribution -------------------------------------------------//
209
+
210
+ /// @dev registers the sending component as a distribution component
211
+ function registerDistribution()
212
+ external
213
+ virtual
214
+ {
215
+ address contractAddress = msg.sender;
216
+
217
+ // register/create component info
218
+ _register(
219
+ contractAddress,
220
+ DISTRIBUTION(),
221
+ DISTRIBUTION_OWNER_ROLE());
222
+ }
223
+
224
+
225
+ function setDistributionFees(
226
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
227
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
228
+ )
229
+ external
230
+ virtual
231
+ {
232
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
233
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
234
+ instance.getInstanceReader(), distributionNftId);
235
+ bool feesChanged = false;
236
+
237
+ // update distributino fee if required
238
+ if(!FeeLib.eq(productInfo.distributionFee, distributionFee)) {
239
+ _logUpdateFee(productNftId, "DistributionFee", productInfo.distributionFee, distributionFee);
240
+ productInfo.distributionFee = distributionFee;
241
+ feesChanged = true;
242
+ }
243
+
244
+ // update min distribution owner fee if required
245
+ if(!FeeLib.eq(productInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
246
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", productInfo.minDistributionOwnerFee, minDistributionOwnerFee);
247
+ productInfo.minDistributionOwnerFee = minDistributionOwnerFee;
248
+ feesChanged = true;
249
+ }
250
+
251
+ if(feesChanged) {
252
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
253
+ emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
254
+ }
255
+ }
256
+
257
+ function increaseDistributionBalance(
258
+ InstanceStore instanceStore,
259
+ NftId distributionNftId,
260
+ Amount amount,
261
+ Amount feeAmount
262
+ )
263
+ external
264
+ virtual
265
+ // TODO re-enable once role granting is stable and fixed
266
+ // restricted()
267
+ {
268
+ _changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
269
+ }
270
+
271
+
272
+ function decreaseDistributionBalance(
273
+ InstanceStore instanceStore,
274
+ NftId distributionNftId,
275
+ Amount amount,
276
+ Amount feeAmount
277
+ )
278
+ external
279
+ virtual
280
+ // TODO re-enable once role granting is stable and fixed
281
+ // restricted()
282
+ {
283
+ _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
284
+ }
285
+
286
+ //-------- distributor -------------------------------------------------------//
287
+
288
+ function increaseDistributorBalance(
289
+ InstanceStore instanceStore,
290
+ NftId distributorNftId,
291
+ Amount amount,
292
+ Amount feeAmount
293
+ )
294
+ external
295
+ virtual
296
+ // TODO re-enable once role granting is stable and fixed
297
+ // restricted()
298
+ {
299
+ _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
300
+ }
301
+
302
+ function decreaseDistributorBalance(
303
+ InstanceStore instanceStore,
304
+ NftId distributorNftId,
305
+ Amount amount,
306
+ Amount feeAmount
307
+ )
308
+ external
309
+ virtual
310
+ // TODO re-enable once role granting is stable and fixed
311
+ // restricted()
312
+ {
313
+ _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
314
+ }
315
+
316
+ //-------- oracle -------------------------------------------------------//
317
+
318
+ function registerOracle()
319
+ external
320
+ virtual
321
+ {
322
+ address contractAddress = msg.sender;
323
+
324
+ // register/create component setup
325
+ (
326
+ , // instance reader
327
+ InstanceStore instanceStore,
328
+ NftId componentNftId
329
+ ) = _register(
330
+ contractAddress,
331
+ ORACLE(),
332
+ ORACLE_OWNER_ROLE());
333
+ }
334
+
335
+ //-------- pool ---------------------------------------------------------//
336
+
337
+ function registerPool()
338
+ external
339
+ virtual
340
+ {
341
+ address contractAddress = msg.sender;
342
+
343
+ // register/create component setup
344
+ (
345
+ , // instance reader
346
+ InstanceStore instanceStore,
347
+ NftId componentNftId
348
+ ) = _register(
349
+ contractAddress,
350
+ POOL(),
351
+ POOL_OWNER_ROLE());
352
+
353
+ // create info
354
+ instanceStore.createPool(
355
+ componentNftId,
356
+ IPoolComponent(
357
+ contractAddress).getInitialPoolInfo());
358
+ }
359
+
360
+
361
+ function setPoolFees(
362
+ Fee memory poolFee, // pool fee on net premium
363
+ Fee memory stakingFee, // pool fee on staked capital from investor
364
+ Fee memory performanceFee // pool fee on profits from capital investors
365
+ )
366
+ external
367
+ virtual
368
+ {
369
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
370
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
371
+ instance.getInstanceReader(), poolNftId);
372
+ bool feesChanged = false;
373
+
374
+ // update pool fee if required
375
+ if(!FeeLib.eq(productInfo.poolFee, poolFee)) {
376
+ _logUpdateFee(productNftId, "PoolFee", productInfo.poolFee, poolFee);
377
+ productInfo.poolFee = poolFee;
378
+ feesChanged = true;
379
+ }
380
+
381
+ // update staking fee if required
382
+ if(!FeeLib.eq(productInfo.stakingFee, stakingFee)) {
383
+ _logUpdateFee(productNftId, "StakingFee", productInfo.stakingFee, stakingFee);
384
+ productInfo.stakingFee = stakingFee;
385
+ feesChanged = true;
386
+ }
387
+
388
+ // update performance fee if required
389
+ if(!FeeLib.eq(productInfo.performanceFee, performanceFee)) {
390
+ _logUpdateFee(productNftId, "PerformanceFee", productInfo.performanceFee, performanceFee);
391
+ productInfo.performanceFee = performanceFee;
392
+ feesChanged = true;
393
+ }
394
+
395
+ if(feesChanged) {
396
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
397
+ emit LogComponentServicePoolFeesUpdated(poolNftId);
398
+ }
399
+ }
400
+
401
+ function increasePoolBalance(
402
+ InstanceStore instanceStore,
403
+ NftId poolNftId,
404
+ Amount amount,
405
+ Amount feeAmount
406
+ )
407
+ public
408
+ virtual
409
+ // TODO re-enable once role granting is stable and fixed
410
+ // restricted()
411
+ {
412
+ _changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
413
+ }
414
+
415
+ function decreasePoolBalance(
416
+ InstanceStore instanceStore,
417
+ NftId poolNftId,
418
+ Amount amount,
419
+ Amount feeAmount
420
+ )
421
+ public
422
+ virtual
423
+ // TODO re-enable once role granting is stable and fixed
424
+ // restricted()
425
+ {
426
+ _changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
427
+ }
428
+
429
+ //-------- bundle -------------------------------------------------------//
430
+
431
+ function increaseBundleBalance(
432
+ InstanceStore instanceStore,
433
+ NftId bundleNftId,
434
+ Amount amount,
435
+ Amount feeAmount
436
+ )
437
+ external
438
+ virtual
439
+ // TODO re-enable once role granting is stable and fixed
440
+ // restricted()
441
+ {
442
+ _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
443
+ }
444
+
445
+ function decreaseBundleBalance(
446
+ InstanceStore instanceStore,
447
+ NftId bundleNftId,
448
+ Amount amount,
449
+ Amount feeAmount
450
+ )
451
+ external
452
+ virtual
453
+ // TODO re-enable once role granting is stable and fixed
454
+ // restricted()
455
+ {
456
+ _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
457
+ }
458
+
459
+
460
+ //-------- internal functions ------------------------------------------//
461
+
462
+ function _changeTargetBalance(
463
+ bool increase,
464
+ InstanceStore instanceStore,
465
+ NftId targetNftId,
466
+ Amount amount,
467
+ Amount feeAmount
468
+ )
469
+ internal
470
+ virtual
471
+ {
472
+ Amount totalAmount = amount + feeAmount;
473
+
474
+ if(increase) {
475
+ if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
476
+ if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
477
+ } else {
478
+ if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
479
+ if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
480
+ }
481
+ }
482
+
483
+ /// @dev registers the component represented by the provided address
484
+ function _register(
485
+ address componentAddress, // address of component to register
486
+ ObjectType requiredType, // required type for component for registration
487
+ RoleId requiredRole // role required for comonent owner for registration
488
+ )
489
+ internal
490
+ virtual
491
+ returns (
492
+ InstanceReader instanceReader,
493
+ InstanceStore instanceStore,
494
+ NftId componentNftId
495
+ )
496
+ {
497
+ (
498
+ IInstance instance,
499
+ IInstanceLinkedComponent component,
500
+ address owner
501
+ ) = _getAndVerifyRegisterableComponent(
502
+ componentAddress,
503
+ requiredType,
504
+ requiredRole);
505
+
506
+ // register component with registry
507
+ componentNftId = _registryService.registerComponent(
508
+ component,
509
+ requiredType,
510
+ owner).nftId;
511
+
512
+ component.linkToRegisteredNftId();
513
+
514
+ // save amended component info with instance
515
+ instanceReader = instance.getInstanceReader();
516
+ instanceStore = instance.getInstanceStore();
517
+
518
+ IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
519
+ componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
520
+ address(componentInfo.token),
521
+ address(instance.getInstanceAdmin().authority()));
522
+
523
+ instanceStore.createComponent(
524
+ component.getNftId(),
525
+ componentInfo);
526
+
527
+ // setup initial component authorization
528
+ _instanceService.initializeAuthorization(
529
+ instance.getNftId(),
530
+ component);
531
+
532
+ // TODO add logging
533
+ }
534
+
535
+
536
+ /// @dev link the component info corresponding to the componentNftId to the provided productNftId
537
+ function _linkToProduct(
538
+ InstanceReader instanceReader,
539
+ InstanceStore instanceStore,
540
+ NftId componentNftId,
541
+ NftId productNftId
542
+ )
543
+ internal
544
+ {
545
+ // only link components that are registered
546
+ if(componentNftId.eqz()) {
547
+ return;
548
+ }
549
+
550
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
551
+ componentInfo.productNftId = productNftId;
552
+ instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
553
+ }
554
+
555
+
556
+ function _logUpdateFee(NftId productNftId, string memory name, Fee memory feeBefore, Fee memory feeAfter)
557
+ internal
558
+ virtual
559
+ {
560
+ emit LogComponentServiceUpdateFee(
561
+ productNftId,
562
+ name,
563
+ feeBefore.fractionalFee,
564
+ feeBefore.fixedFee,
565
+ feeAfter.fractionalFee,
566
+ feeAfter.fixedFee
567
+ );
568
+ }
569
+
570
+
571
+ function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
572
+ selectors = new bytes4[](1);
573
+ selectors[0] = selector;
574
+ }
575
+
576
+
577
+ function _getLinkedProductInfo(
578
+ InstanceReader instanceReader,
579
+ NftId componentNftId
580
+ )
581
+ internal
582
+ view
583
+ returns(
584
+ NftId productNftId,
585
+ IComponents.ProductInfo memory info
586
+ )
587
+ {
588
+ productNftId = instanceReader.getComponentInfo(componentNftId).productNftId;
589
+ info = instanceReader.getProductInfo(productNftId);
590
+ }
591
+
592
+
593
+ /// @dev based on the provided component address required type and role returns the component and related instance contract
594
+ /// the function reverts iff:
595
+ /// - the component has already been registered
596
+ /// - the component contract does not support IInstanceLinkedComponent
597
+ /// - the component type does not match with the required type
598
+ /// - the initial component owner misses the required role (with the instance access manager)
599
+ function _getAndVerifyRegisterableComponent(
600
+ address componentAddress,
601
+ ObjectType requiredType,
602
+ RoleId requiredRole
603
+ )
604
+ internal
605
+ view
606
+ returns (
607
+ IInstance instance,
608
+ IInstanceLinkedComponent component,
609
+ address owner
610
+ )
611
+ {
612
+ // check this is a component
613
+ component = IInstanceLinkedComponent(componentAddress);
614
+ if(!component.supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
615
+ revert ErrorComponentServiceNotComponent(componentAddress);
616
+ }
617
+
618
+ // check component is of required type
619
+ IRegistry.ObjectInfo memory info = component.getInitialInfo();
620
+ if(info.objectType != requiredType) {
621
+ revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
622
+ }
623
+
624
+ // check component has not already been registered
625
+ if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
626
+ revert ErrorComponentServiceAlreadyRegistered(componentAddress);
627
+ }
628
+
629
+ // check instance has assigned required role to inital owner
630
+ instance = _getInstance(info.parentNftId);
631
+ owner = info.initialOwner;
632
+
633
+ if(!instance.getInstanceAdmin().hasRole(owner, requiredRole)) {
634
+ revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
635
+ }
636
+ }
637
+
638
+ function _getDomain() internal pure virtual override returns(ObjectType) {
639
+ return COMPONENT();
640
+ }
641
+ }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ComponentService} from "./ComponentService.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
+
8
+ contract ComponentServiceManager is ProxyManager {
9
+
10
+ ComponentService private _componentService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address registryAddress
15
+ )
16
+ ProxyManager(registryAddress)
17
+ {
18
+ ComponentService svc = new ComponentService();
19
+ bytes memory data = abi.encode(registryAddress, address(this));
20
+ IVersionable versionable = deploy(
21
+ address(svc),
22
+ data);
23
+
24
+ _componentService = ComponentService(address(versionable));
25
+ }
26
+
27
+ //--- view functions ----------------------------------------------------//
28
+ function getComponentService()
29
+ external
30
+ view
31
+ returns (ComponentService)
32
+ {
33
+ return _componentService;
34
+ }
35
+ }