@etherisc/gif-next 0.0.2-a63347a-883 → 0.0.2-a6ce659-551

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 (626) hide show
  1. package/README.md +28 -16
  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/{components/IProductComponent.sol/IProductComponent.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +485 -258
  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 +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +61 -116
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +239 -1554
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +373 -190
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +430 -2524
  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 +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +661 -341
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +544 -363
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +389 -104
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  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/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  54. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  55. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → oracle/IOracleComponent.sol/IOracleComponent.json} +209 -299
  56. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  58. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  60. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  62. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  64. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  66. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  68. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  69. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +273 -285
  70. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  71. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +638 -197
  72. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  74. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  75. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  76. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  78. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  80. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  82. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  84. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  86. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  88. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  89. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -230
  90. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  92. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +251 -297
  94. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  95. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -215
  96. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  97. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +358 -312
  98. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  99. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +126 -167
  100. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  102. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  104. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  106. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  108. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  109. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  110. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  112. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  114. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  116. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +203 -21
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +360 -218
  120. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  121. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  124. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/Registry.sol/Registry.json +440 -36
  126. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  127. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -254
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -95
  132. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +764 -100
  136. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  138. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  140. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  141. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
  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/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +346 -364
  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/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -242
  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/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IComponent.sol/IComponent.json} +213 -230
  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/{components/Component.sol/Component.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +210 -161
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  177. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  180. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  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 +15 -30
  186. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  187. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  188. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IService.sol/IService.json +84 -154
  190. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  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 +547 -0
  198. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  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 +1 -1
  203. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
  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 +1 -1
  207. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -75
  208. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
  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 +1 -1
  213. package/artifacts/contracts/shared/Service.sol/Service.json +188 -157
  214. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  215. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  216. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  217. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  218. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  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/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  230. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  232. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  234. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  236. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  238. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  240. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  241. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  242. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  244. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  246. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  248. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  252. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  256. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  258. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  260. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  262. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  264. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  266. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  268. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  270. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  272. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  274. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  278. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  280. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  282. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  284. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  286. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  288. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  290. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  291. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  292. package/contracts/distribution/Distribution.sol +261 -0
  293. package/contracts/distribution/DistributionService.sol +297 -0
  294. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  295. package/contracts/distribution/IDistributionComponent.sol +66 -0
  296. package/contracts/distribution/IDistributionService.sol +81 -0
  297. package/contracts/instance/BundleManager.sol +15 -14
  298. package/contracts/instance/IInstance.sol +61 -46
  299. package/contracts/instance/IInstanceService.sol +76 -20
  300. package/contracts/instance/Instance.sol +176 -182
  301. package/contracts/instance/InstanceAdmin.sol +331 -0
  302. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  303. package/contracts/instance/InstanceReader.sol +159 -60
  304. package/contracts/instance/InstanceService.sol +313 -309
  305. package/contracts/instance/InstanceServiceManager.sol +12 -22
  306. package/contracts/instance/InstanceStore.sol +272 -0
  307. package/contracts/instance/base/BalanceStore.sol +123 -0
  308. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  309. package/contracts/instance/base/ObjectCounter.sol +21 -0
  310. package/contracts/instance/base/ObjectLifecycle.sol +99 -0
  311. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -16
  312. package/contracts/instance/module/IAccess.sol +19 -21
  313. package/contracts/instance/module/IBundle.sol +8 -8
  314. package/contracts/instance/module/IComponents.sol +52 -0
  315. package/contracts/instance/module/IDistribution.sol +7 -4
  316. package/contracts/instance/module/IPolicy.sol +56 -17
  317. package/contracts/instance/module/IRisk.sol +1 -1
  318. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  319. package/contracts/oracle/IOracle.sol +20 -0
  320. package/contracts/oracle/IOracleComponent.sol +32 -0
  321. package/contracts/oracle/IOracleService.sol +65 -0
  322. package/contracts/oracle/Oracle.sol +145 -0
  323. package/contracts/oracle/OracleService.sol +278 -0
  324. package/contracts/oracle/OracleServiceManager.sol +42 -0
  325. package/contracts/pool/BundleService.sol +296 -0
  326. package/contracts/pool/BundleServiceManager.sol +42 -0
  327. package/contracts/pool/IBundleService.sol +106 -0
  328. package/contracts/pool/IPoolComponent.sol +112 -0
  329. package/contracts/pool/IPoolService.sol +150 -0
  330. package/contracts/pool/Pool.sol +299 -0
  331. package/contracts/pool/PoolService.sol +452 -0
  332. package/contracts/pool/PoolServiceManager.sol +42 -0
  333. package/contracts/product/ApplicationService.sol +254 -0
  334. package/contracts/product/ApplicationServiceManager.sol +38 -0
  335. package/contracts/product/ClaimService.sol +442 -0
  336. package/contracts/product/ClaimServiceManager.sol +38 -0
  337. package/contracts/product/IApplicationService.sol +62 -0
  338. package/contracts/product/IClaimService.sol +99 -0
  339. package/contracts/product/IPolicyService.sol +78 -0
  340. package/contracts/product/IPricingService.sol +39 -0
  341. package/contracts/product/IProductComponent.sol +42 -0
  342. package/contracts/product/IProductService.sol +33 -0
  343. package/contracts/product/PolicyService.sol +475 -0
  344. package/contracts/product/PolicyServiceManager.sol +42 -0
  345. package/contracts/product/PricingService.sol +300 -0
  346. package/contracts/product/PricingServiceManager.sol +42 -0
  347. package/contracts/product/Product.sol +377 -0
  348. package/contracts/product/ProductService.sol +124 -0
  349. package/contracts/product/ProductServiceManager.sol +42 -0
  350. package/contracts/registry/ChainNft.sol +16 -1
  351. package/contracts/registry/IRegistry.sol +47 -21
  352. package/contracts/registry/IRegistryService.sol +42 -38
  353. package/contracts/registry/IServiceAuthorization.sol +38 -0
  354. package/contracts/registry/ITransferInterceptor.sol +1 -0
  355. package/contracts/registry/Registry.sol +227 -97
  356. package/contracts/registry/RegistryAdmin.sol +333 -0
  357. package/contracts/registry/RegistryService.sol +108 -104
  358. package/contracts/registry/RegistryServiceManager.sol +22 -31
  359. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  360. package/contracts/registry/ReleaseManager.sol +387 -196
  361. package/contracts/registry/ServiceAuthorization.sol +90 -0
  362. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  363. package/contracts/registry/TokenRegistry.sol +263 -60
  364. package/contracts/shared/AccessAdmin.sol +759 -0
  365. package/contracts/shared/AccessManagerCustom.sol +741 -0
  366. package/contracts/shared/AccessManagerExtended.sol +481 -0
  367. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  368. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  369. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  370. package/contracts/shared/Component.sol +281 -0
  371. package/contracts/shared/ComponentService.sol +620 -0
  372. package/contracts/shared/ComponentServiceManager.sol +35 -0
  373. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  374. package/contracts/shared/ERC165.sol +15 -13
  375. package/contracts/shared/IAccessAdmin.sol +168 -0
  376. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  377. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  378. package/contracts/shared/IComponent.sol +70 -0
  379. package/contracts/shared/IComponentService.sol +102 -0
  380. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  381. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  382. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  383. package/contracts/shared/INftOwnable.sol +13 -12
  384. package/contracts/shared/IPolicyHolder.sol +45 -0
  385. package/contracts/shared/IRegisterable.sol +3 -3
  386. package/contracts/shared/IRegistryLinked.sol +11 -0
  387. package/contracts/shared/IService.sol +14 -5
  388. package/contracts/shared/IVersionable.sol +5 -48
  389. package/contracts/shared/InitializableCustom.sol +177 -0
  390. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  391. package/contracts/shared/KeyValueStore.sol +131 -0
  392. package/contracts/shared/Lifecycle.sol +67 -0
  393. package/contracts/shared/NftIdSetManager.sol +65 -0
  394. package/contracts/shared/NftOwnable.sol +59 -91
  395. package/contracts/shared/PolicyHolder.sol +102 -0
  396. package/contracts/shared/ProxyManager.sol +131 -26
  397. package/contracts/shared/Registerable.sol +19 -30
  398. package/contracts/shared/RegistryLinked.sol +43 -0
  399. package/contracts/shared/Service.sol +54 -31
  400. package/contracts/shared/TokenHandler.sol +37 -6
  401. package/contracts/shared/Versionable.sol +4 -92
  402. package/contracts/staking/IStaking.sol +168 -0
  403. package/contracts/staking/IStakingService.sol +153 -0
  404. package/contracts/staking/StakeManagerLib.sol +231 -0
  405. package/contracts/staking/Staking.sol +513 -0
  406. package/contracts/staking/StakingLifecycle.sol +24 -0
  407. package/contracts/staking/StakingManager.sol +54 -0
  408. package/contracts/staking/StakingReader.sol +187 -0
  409. package/contracts/staking/StakingService.sol +411 -0
  410. package/contracts/staking/StakingServiceManager.sol +44 -0
  411. package/contracts/staking/StakingStore.sol +615 -0
  412. package/contracts/staking/TargetManagerLib.sol +207 -0
  413. package/contracts/{types → type}/AddressSet.sol +1 -1
  414. package/contracts/type/Amount.sol +128 -0
  415. package/contracts/{types → type}/Blocknumber.sol +21 -3
  416. package/contracts/type/ClaimId.sol +75 -0
  417. package/contracts/{types → type}/DistributorType.sol +2 -2
  418. package/contracts/{types → type}/Fee.sol +33 -23
  419. package/contracts/{types → type}/NftId.sol +21 -15
  420. package/contracts/{types → type}/NftIdSet.sol +2 -2
  421. package/contracts/type/ObjectType.sol +241 -0
  422. package/contracts/type/PayoutId.sol +82 -0
  423. package/contracts/{types → type}/Referral.sol +5 -1
  424. package/contracts/type/RequestId.sol +75 -0
  425. package/contracts/{types → type}/RiskId.sol +1 -1
  426. package/contracts/type/RoleId.sol +201 -0
  427. package/contracts/type/Seconds.sol +81 -0
  428. package/contracts/type/Selector.sol +102 -0
  429. package/contracts/{types → type}/StateId.sol +34 -4
  430. package/contracts/type/String.sol +53 -0
  431. package/contracts/{types → type}/Timestamp.sol +23 -14
  432. package/contracts/{types → type}/UFixed.sol +1 -0
  433. package/contracts/{types → type}/Version.sol +2 -1
  434. package/package.json +8 -5
  435. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  436. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  437. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  438. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -455
  439. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  440. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  441. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  442. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  443. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  444. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  446. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  448. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  450. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  452. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  454. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  456. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  458. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  460. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  462. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  464. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  467. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  469. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  471. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  474. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  476. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  478. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  480. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  482. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  483. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  485. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  486. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  487. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  488. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  489. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  490. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  491. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  492. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  493. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  494. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  495. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
  498. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  500. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  502. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  504. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  506. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  511. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  513. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  515. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  517. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  519. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  520. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  521. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  522. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  523. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  524. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  525. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  526. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  527. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  529. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  531. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  533. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  534. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  535. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  537. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  538. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  539. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  540. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  541. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  542. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  543. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  544. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  546. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  549. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  550. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  552. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  553. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  555. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  557. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  559. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  562. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  564. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  565. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  569. package/contracts/components/Component.sol +0 -216
  570. package/contracts/components/Distribution.sol +0 -153
  571. package/contracts/components/IComponent.sol +0 -43
  572. package/contracts/components/IDistributionComponent.sol +0 -47
  573. package/contracts/components/IPoolComponent.sol +0 -51
  574. package/contracts/components/IProductComponent.sol +0 -39
  575. package/contracts/components/Pool.sol +0 -208
  576. package/contracts/components/Product.sol +0 -266
  577. package/contracts/experiment/cloning/Cloner.sol +0 -47
  578. package/contracts/experiment/errors/Require.sol +0 -38
  579. package/contracts/experiment/errors/Revert.sol +0 -44
  580. package/contracts/experiment/inheritance/A.sol +0 -53
  581. package/contracts/experiment/inheritance/B.sol +0 -28
  582. package/contracts/experiment/inheritance/C.sol +0 -34
  583. package/contracts/experiment/inheritance/IA.sol +0 -13
  584. package/contracts/experiment/inheritance/IB.sol +0 -10
  585. package/contracts/experiment/inheritance/IC.sol +0 -12
  586. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  587. package/contracts/experiment/statemachine/ISM.sol +0 -25
  588. package/contracts/experiment/statemachine/SM.sol +0 -57
  589. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  590. package/contracts/experiment/types/TypeA.sol +0 -47
  591. package/contracts/experiment/types/TypeB.sol +0 -29
  592. package/contracts/instance/InstanceAccessManager.sol +0 -298
  593. package/contracts/instance/base/ComponentService.sol +0 -134
  594. package/contracts/instance/base/KeyValueStore.sol +0 -172
  595. package/contracts/instance/base/Lifecycle.sol +0 -100
  596. package/contracts/instance/module/ISetup.sol +0 -46
  597. package/contracts/instance/module/ITreasury.sol +0 -23
  598. package/contracts/instance/service/BundleService.sol +0 -293
  599. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  600. package/contracts/instance/service/DistributionService.sol +0 -106
  601. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  602. package/contracts/instance/service/IBundleService.sol +0 -44
  603. package/contracts/instance/service/IDistributionService.sol +0 -12
  604. package/contracts/instance/service/IPolicyService.sol +0 -94
  605. package/contracts/instance/service/IPoolService.sol +0 -20
  606. package/contracts/instance/service/IProductService.sol +0 -40
  607. package/contracts/instance/service/PolicyService.sol +0 -538
  608. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  609. package/contracts/instance/service/PoolService.sol +0 -110
  610. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  611. package/contracts/instance/service/ProductService.sol +0 -233
  612. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  613. package/contracts/registry/RegistryAccessManager.sol +0 -216
  614. package/contracts/shared/ContractDeployerLib.sol +0 -72
  615. package/contracts/test/TestFee.sol +0 -25
  616. package/contracts/test/TestRegisterable.sol +0 -18
  617. package/contracts/test/TestRoleId.sol +0 -14
  618. package/contracts/test/TestService.sol +0 -25
  619. package/contracts/test/TestVersion.sol +0 -44
  620. package/contracts/test/TestVersionable.sol +0 -17
  621. package/contracts/test/Usdc.sol +0 -26
  622. package/contracts/types/ChainId.sol +0 -38
  623. package/contracts/types/NumberId.sol +0 -52
  624. package/contracts/types/ObjectType.sol +0 -152
  625. package/contracts/types/RoleId.sol +0 -90
  626. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,620 @@
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
+
494
+ // TODO second part, may be done in different tx....
495
+
496
+ // save amended component info with instance
497
+ instanceReader = instance.getInstanceReader();
498
+ instanceStore = instance.getInstanceStore();
499
+
500
+ IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
501
+ componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
502
+ instanceStore.createComponent(componentNftId, componentInfo);
503
+
504
+ // configure instance authorization
505
+ _instanceService.createComponentTarget(
506
+ instance.getNftId(),
507
+ componentAddress,
508
+ component.getName(),
509
+ selectors,
510
+ roles);
511
+ }
512
+
513
+
514
+ /// @dev link the component info corresponding to the componentNftId to the provided productNftId
515
+ function _linkToProduct(
516
+ InstanceReader instanceReader,
517
+ InstanceStore instanceStore,
518
+ NftId componentNftId,
519
+ NftId productNftId
520
+ )
521
+ internal
522
+ {
523
+ // only link components that are registered
524
+ if(componentNftId.eqz()) {
525
+ return;
526
+ }
527
+
528
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
529
+ componentInfo.productNftId = productNftId;
530
+ instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
531
+ }
532
+
533
+
534
+ function _logUpdateFee(NftId productNftId, string memory name, Fee memory feeBefore, Fee memory feeAfter)
535
+ internal
536
+ virtual
537
+ {
538
+ emit LogComponentServiceUpdateFee(
539
+ productNftId,
540
+ name,
541
+ feeBefore.fractionalFee,
542
+ feeBefore.fixedFee,
543
+ feeAfter.fractionalFee,
544
+ feeAfter.fixedFee
545
+ );
546
+ }
547
+
548
+
549
+ function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
550
+ selectors = new bytes4[](1);
551
+ selectors[0] = selector;
552
+ }
553
+
554
+
555
+ function _getLinkedProductInfo(
556
+ InstanceReader instanceReader,
557
+ NftId componentNftId
558
+ )
559
+ internal
560
+ view
561
+ returns(
562
+ NftId productNftId,
563
+ IComponents.ProductInfo memory info
564
+ )
565
+ {
566
+ productNftId = instanceReader.getComponentInfo(componentNftId).productNftId;
567
+ info = instanceReader.getProductInfo(productNftId);
568
+ }
569
+
570
+
571
+ /// @dev based on the provided component address required type and role returns the component and related instance contract
572
+ /// the function reverts iff:
573
+ /// - the component has already been registered
574
+ /// - the component contract does not support IInstanceLinkedComponent
575
+ /// - the component type does not match with the required type
576
+ /// - the initial component owner misses the required role (with the instance access manager)
577
+ function _getAndVerifyRegisterableComponent(
578
+ address componentAddress,
579
+ ObjectType requiredType,
580
+ RoleId requiredRole
581
+ )
582
+ internal
583
+ view
584
+ returns (
585
+ IInstance instance,
586
+ IInstanceLinkedComponent component,
587
+ address owner
588
+ )
589
+ {
590
+ // check this is a component
591
+ component = IInstanceLinkedComponent(componentAddress);
592
+ if(!component.supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
593
+ revert ErrorComponentServiceNotComponent(componentAddress);
594
+ }
595
+
596
+ // check component is of required type
597
+ IRegistry.ObjectInfo memory info = component.getInitialInfo();
598
+ if(info.objectType != requiredType) {
599
+ revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
600
+ }
601
+
602
+ // check component has not already been registered
603
+ if (getRegistry().getNftId(componentAddress).gtz()) {
604
+ revert ErrorComponentServiceAlreadyRegistered(componentAddress);
605
+ }
606
+
607
+ // check instance has assigned required role to inital owner
608
+ instance = _getInstance(info.parentNftId);
609
+ owner = info.initialOwner;
610
+
611
+ (bool hasRole,) = instance.getInstanceAccessManager().hasRole(requiredRole.toInt(), owner);
612
+ if(!hasRole) {
613
+ revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
614
+ }
615
+ }
616
+
617
+ function _getDomain() internal pure virtual override returns(ObjectType) {
618
+ return COMPONENT();
619
+ }
620
+ }
@@ -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
+ }