@etherisc/gif-next 0.0.2-fc8b370-882 → 0.0.2-fd2113c-488

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