@etherisc/gif-next 0.0.2-8d47fa1-080 → 0.0.2-8daf0fe-431

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