@etherisc/gif-next 0.0.2-d679de9-140 → 0.0.2-d696c44-627

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