@etherisc/gif-next 0.0.2-8d47fa1-080 → 0.0.2-8d6e553-386

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 (731) hide show
  1. package/README.md +209 -16
  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 +344 -1864
  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 +499 -2174
  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/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  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/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +342 -313
  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/product/IApplicationService.sol/IApplicationService.json +512 -0
  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/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +320 -255
  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} +187 -176
  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 +60 -2
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +399 -60
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +457 -185
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +567 -144
  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 +1 -1
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +863 -272
  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/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +298 -152
  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/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  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/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +66 -52
  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 +65 -8
  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 → shared}/IService.sol/IService.json +155 -153
  208. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  212. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +102 -165
  214. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  216. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  218. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  220. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +205 -12
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +242 -191
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  233. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  236. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  237. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  253. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  298. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  302. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  308. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -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 +301 -0
  323. package/contracts/distribution/DistributionService.sol +288 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +39 -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 -46
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +237 -68
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +40 -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 +51 -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 +39 -0
  357. package/contracts/pool/BasicPool.sol +164 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  359. package/contracts/pool/BundleService.sol +284 -0
  360. package/contracts/pool/BundleServiceManager.sol +39 -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 +436 -0
  366. package/contracts/pool/PoolServiceManager.sol +39 -0
  367. package/contracts/product/ApplicationService.sol +230 -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 +416 -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 +39 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +39 -0
  383. package/contracts/product/Product.sol +392 -0
  384. package/contracts/product/ProductService.sol +99 -0
  385. package/contracts/product/ProductServiceManager.sol +39 -0
  386. package/contracts/registry/ChainNft.sol +55 -25
  387. package/contracts/registry/IRegistry.sol +100 -41
  388. package/contracts/registry/IRegistryService.sol +56 -16
  389. package/contracts/registry/ITransferInterceptor.sol +1 -0
  390. package/contracts/registry/Registry.sol +406 -335
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +150 -281
  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 +274 -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 +16 -10
  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 +5 -12
  411. package/contracts/shared/IRegistryLinked.sol +11 -0
  412. package/contracts/shared/IService.sol +25 -0
  413. package/contracts/shared/InitializableCustom.sol +177 -0
  414. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  415. package/contracts/shared/KeyValueStore.sol +131 -0
  416. package/contracts/shared/Lifecycle.sol +77 -0
  417. package/contracts/shared/NftIdSet.sol +65 -0
  418. package/contracts/shared/NftOwnable.sol +107 -0
  419. package/contracts/shared/PolicyHolder.sol +102 -0
  420. package/contracts/shared/Registerable.sol +33 -75
  421. package/contracts/shared/RegistryLinked.sol +43 -0
  422. package/contracts/shared/Service.sol +82 -0
  423. package/contracts/shared/TokenHandler.sol +58 -0
  424. package/contracts/staking/IStaking.sol +167 -0
  425. package/contracts/staking/IStakingService.sol +160 -0
  426. package/contracts/staking/StakeManagerLib.sol +231 -0
  427. package/contracts/staking/Staking.sol +514 -0
  428. package/contracts/staking/StakingLifecycle.sol +23 -0
  429. package/contracts/staking/StakingManager.sol +50 -0
  430. package/contracts/staking/StakingReader.sol +183 -0
  431. package/contracts/staking/StakingService.sol +411 -0
  432. package/contracts/staking/StakingServiceManager.sol +44 -0
  433. package/contracts/staking/StakingStore.sol +605 -0
  434. package/contracts/staking/TargetManagerLib.sol +207 -0
  435. package/contracts/{types → type}/AddressSet.sol +1 -1
  436. package/contracts/type/Amount.sol +128 -0
  437. package/contracts/{types → type}/Blocknumber.sol +21 -3
  438. package/contracts/type/ClaimId.sol +75 -0
  439. package/contracts/type/DistributorType.sol +55 -0
  440. package/contracts/type/Fee.sol +66 -0
  441. package/contracts/{types → type}/Key32.sol +8 -3
  442. package/contracts/{types → type}/NftId.sol +21 -15
  443. package/contracts/type/NftIdSet.sol +62 -0
  444. package/contracts/type/ObjectType.sol +271 -0
  445. package/contracts/type/PayoutId.sol +82 -0
  446. package/contracts/type/Referral.sol +89 -0
  447. package/contracts/type/RequestId.sol +75 -0
  448. package/contracts/{types → type}/RiskId.sol +1 -1
  449. package/contracts/type/RoleId.sol +174 -0
  450. package/contracts/type/Seconds.sol +81 -0
  451. package/contracts/type/Selector.sol +102 -0
  452. package/contracts/{types → type}/StateId.sol +39 -5
  453. package/contracts/type/String.sol +53 -0
  454. package/contracts/{types → type}/Timestamp.sol +27 -14
  455. package/contracts/type/UFixed.sol +332 -0
  456. package/contracts/{types → type}/Version.sol +8 -2
  457. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  458. package/contracts/upgradeability/ProxyManager.sol +198 -0
  459. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +2 -4
  460. package/contracts/upgradeability/Versionable.sol +59 -0
  461. package/package.json +11 -7
  462. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -213
  464. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  465. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -445
  466. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -177
  468. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -343
  470. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  471. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -474
  472. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  473. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -373
  474. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  475. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -602
  476. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  477. package/artifacts/contracts/components/Product.sol/Product.json +0 -502
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  480. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  482. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  484. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  486. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  488. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  492. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  494. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  496. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  498. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  500. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  503. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  505. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  507. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  509. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  511. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  512. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  513. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  516. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  519. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  522. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  524. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -380
  527. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  529. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  532. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  534. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  536. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  537. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  538. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  539. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  540. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  541. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  542. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  544. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  546. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  547. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  549. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  550. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  552. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  554. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  556. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  558. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  560. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  561. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  563. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  564. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  565. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  567. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  569. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  570. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  571. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -690
  573. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -526
  575. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -369
  578. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -649
  582. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
  584. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  585. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  586. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  587. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.dbg.json +0 -4
  588. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.json +0 -344
  589. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  590. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  591. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  592. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  593. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  594. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -310
  595. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  596. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  597. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  598. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  599. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  600. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
  601. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  602. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  603. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  604. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
  605. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  606. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
  607. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  608. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -191
  609. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  610. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  611. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  612. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -472
  613. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  614. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  615. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  616. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  617. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -270
  619. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  620. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  621. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  622. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  623. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  625. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  627. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  629. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  631. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  633. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  634. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  635. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  636. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  637. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  638. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  639. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  640. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  641. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  643. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  646. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  648. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  649. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  650. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  652. package/contracts/components/BaseComponent.sol +0 -79
  653. package/contracts/components/Distribution.sol +0 -155
  654. package/contracts/components/IBaseComponent.sol +0 -19
  655. package/contracts/components/IDistributionComponent.sol +0 -47
  656. package/contracts/components/IPoolComponent.sol +0 -65
  657. package/contracts/components/IProductComponent.sol +0 -39
  658. package/contracts/components/Pool.sol +0 -246
  659. package/contracts/components/Product.sol +0 -299
  660. package/contracts/experiment/errors/Require.sol +0 -38
  661. package/contracts/experiment/errors/Revert.sol +0 -44
  662. package/contracts/experiment/inheritance/A.sol +0 -53
  663. package/contracts/experiment/inheritance/B.sol +0 -28
  664. package/contracts/experiment/inheritance/C.sol +0 -34
  665. package/contracts/experiment/inheritance/IA.sol +0 -13
  666. package/contracts/experiment/inheritance/IB.sol +0 -10
  667. package/contracts/experiment/inheritance/IC.sol +0 -12
  668. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  669. package/contracts/experiment/statemachine/ISM.sol +0 -25
  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 -49
  676. package/contracts/instance/base/IInstanceBase.sol +0 -23
  677. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  678. package/contracts/instance/base/IService.sol +0 -15
  679. package/contracts/instance/base/InstanceBase.sol +0 -89
  680. package/contracts/instance/base/KeyValueStore.sol +0 -161
  681. package/contracts/instance/base/Lifecycle.sol +0 -100
  682. package/contracts/instance/base/ModuleBase.sol +0 -57
  683. package/contracts/instance/base/ServiceBase.sol +0 -43
  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 -134
  687. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  688. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  689. package/contracts/instance/module/component/IComponent.sol +0 -28
  690. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  691. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  692. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  693. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  694. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  695. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  696. package/contracts/instance/module/risk/IRisk.sol +0 -26
  697. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  698. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  699. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  700. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  701. package/contracts/instance/service/ComponentOwnerService.sol +0 -272
  702. package/contracts/instance/service/DistributionService.sol +0 -54
  703. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  704. package/contracts/instance/service/IDistributionService.sol +0 -12
  705. package/contracts/instance/service/IPoolService.sol +0 -37
  706. package/contracts/instance/service/IProductService.sol +0 -107
  707. package/contracts/instance/service/PoolService.sol +0 -149
  708. package/contracts/instance/service/ProductService.sol +0 -509
  709. package/contracts/registry/IChainNft.sol +0 -22
  710. package/contracts/registry/IRegistryLinked.sol +0 -8
  711. package/contracts/registry/RegistryInstaller.sol +0 -100
  712. package/contracts/shared/IOwnable.sol +0 -6
  713. package/contracts/shared/ProxyManager.sol +0 -115
  714. package/contracts/shared/Versionable.sol +0 -147
  715. package/contracts/test/TestDistribution.sol +0 -22
  716. package/contracts/test/TestFee.sol +0 -25
  717. package/contracts/test/TestPool.sol +0 -27
  718. package/contracts/test/TestProduct.sol +0 -74
  719. package/contracts/test/TestRegisterable.sol +0 -18
  720. package/contracts/test/TestRoleId.sol +0 -14
  721. package/contracts/test/TestService.sol +0 -26
  722. package/contracts/test/TestVersion.sol +0 -44
  723. package/contracts/test/TestVersionable.sol +0 -17
  724. package/contracts/test/Usdc.sol +0 -26
  725. package/contracts/types/ChainId.sol +0 -38
  726. package/contracts/types/Fee.sol +0 -56
  727. package/contracts/types/NftIdSet.sol +0 -60
  728. package/contracts/types/ObjectType.sol +0 -131
  729. package/contracts/types/ReferralId.sol +0 -48
  730. package/contracts/types/RoleId.sol +0 -38
  731. package/contracts/types/UFixed.sol +0 -209
@@ -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 {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
+ }