@etherisc/gif-next 0.0.2-8210648-816 → 0.0.2-82c6d88-499

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 (678) hide show
  1. package/README.md +188 -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/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 +264 -1848
  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 +473 -2191
  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/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  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/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +310 -358
  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/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +237 -191
  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/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +266 -278
  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/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +145 -166
  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 +60 -2
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +401 -59
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +557 -179
  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 +1 -1
  125. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  126. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/Registry.sol/Registry.json +558 -169
  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 +1 -1
  131. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +712 -257
  132. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +371 -118
  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/{instance/base/InstanceBase.sol/InstanceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +210 -215
  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/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IComponent.sol/IComponent.json} +322 -159
  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 +77 -169
  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 +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 -35
  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 +4 -0
  189. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +112 -67
  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 +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 +1 -1
  203. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  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 -62
  208. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  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/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +198 -172
  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 +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/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/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  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/{types → type}/Version.sol/VersionLib.json +3 -3
  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 -46
  297. package/contracts/instance/IInstanceService.sol +97 -0
  298. package/contracts/instance/Instance.sol +249 -73
  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/TestToken.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 +55 -25
  348. package/contracts/registry/IRegistry.sol +80 -29
  349. package/contracts/registry/IRegistryService.sol +56 -16
  350. package/contracts/registry/IServiceAuthorization.sol +35 -0
  351. package/contracts/registry/ITransferInterceptor.sol +1 -0
  352. package/contracts/registry/Registry.sol +416 -325
  353. package/contracts/registry/RegistryAdmin.sol +333 -0
  354. package/contracts/registry/RegistryService.sol +158 -260
  355. package/contracts/registry/RegistryServiceManager.sol +27 -17
  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 +16 -10
  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 +13 -12
  380. package/contracts/shared/IPolicyHolder.sol +45 -0
  381. package/contracts/shared/IRegisterable.sol +4 -6
  382. package/contracts/shared/IRegistryLinked.sol +11 -0
  383. package/contracts/shared/IService.sol +25 -0
  384. package/contracts/shared/IVersionable.sol +5 -48
  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/{instance/base → shared}/Lifecycle.sol +38 -8
  389. package/contracts/shared/NftIdSetManager.sol +65 -0
  390. package/contracts/shared/NftOwnable.sol +60 -89
  391. package/contracts/shared/PolicyHolder.sol +102 -0
  392. package/contracts/shared/ProxyManager.sol +132 -27
  393. package/contracts/shared/Registerable.sol +27 -41
  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 +2 -2
  398. package/contracts/shared/Versionable.sol +5 -93
  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/{types → type}/RiskId.sol +1 -1
  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 +6 -2
  431. package/package.json +9 -7
  432. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  433. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  434. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -557
  435. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  436. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -254
  437. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  438. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -177
  439. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  440. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -308
  441. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  442. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -207
  443. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  444. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -716
  445. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  446. package/artifacts/contracts/components/Product.sol/Product.json +0 -614
  447. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  448. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  449. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  450. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  451. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  452. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  453. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  454. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  455. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  456. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  457. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  458. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  459. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  460. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  461. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  462. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  464. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  466. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  468. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  470. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  472. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  474. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  476. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  478. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  480. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  481. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  482. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  483. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  484. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  485. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  486. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  487. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  488. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  489. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  490. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  491. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  492. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  493. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  494. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  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 -297
  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 -297
  505. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  506. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  507. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  508. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  509. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  510. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  511. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  512. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  513. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  514. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  515. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  516. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  517. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  518. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  519. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  520. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  521. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  522. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  523. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  524. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  525. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  526. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  527. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  528. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  529. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  530. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  532. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  534. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  536. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  537. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  538. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  539. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  540. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -794
  542. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -630
  544. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  547. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -753
  551. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  552. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1068
  553. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  554. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  555. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  556. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  557. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  558. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  559. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  560. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  561. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  562. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  563. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  564. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  565. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  566. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  567. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  568. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  569. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  570. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -584
  571. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  572. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  573. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  574. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  575. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  576. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -270
  577. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  578. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  579. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  580. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  582. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  585. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  586. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  587. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  589. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  590. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  591. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  592. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  593. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  595. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  596. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  598. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  601. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  605. package/contracts/components/BaseComponent.sol +0 -79
  606. package/contracts/components/Distribution.sol +0 -155
  607. package/contracts/components/IBaseComponent.sol +0 -19
  608. package/contracts/components/IDistributionComponent.sol +0 -46
  609. package/contracts/components/IPoolComponent.sol +0 -64
  610. package/contracts/components/IProductComponent.sol +0 -37
  611. package/contracts/components/Pool.sol +0 -246
  612. package/contracts/components/Product.sol +0 -299
  613. package/contracts/experiment/errors/Require.sol +0 -38
  614. package/contracts/experiment/errors/Revert.sol +0 -44
  615. package/contracts/experiment/inheritance/A.sol +0 -53
  616. package/contracts/experiment/inheritance/B.sol +0 -28
  617. package/contracts/experiment/inheritance/C.sol +0 -34
  618. package/contracts/experiment/inheritance/IA.sol +0 -13
  619. package/contracts/experiment/inheritance/IB.sol +0 -10
  620. package/contracts/experiment/inheritance/IC.sol +0 -12
  621. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  622. package/contracts/experiment/statemachine/ISM.sol +0 -25
  623. package/contracts/experiment/statemachine/SM.sol +0 -57
  624. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  625. package/contracts/experiment/types/TypeA.sol +0 -47
  626. package/contracts/experiment/types/TypeB.sol +0 -29
  627. package/contracts/instance/IInstanceLinked.sol +0 -8
  628. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  629. package/contracts/instance/base/IInstanceBase.sol +0 -23
  630. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  631. package/contracts/instance/base/IService.sol +0 -15
  632. package/contracts/instance/base/InstanceBase.sol +0 -89
  633. package/contracts/instance/base/KeyValueStore.sol +0 -161
  634. package/contracts/instance/base/ModuleBase.sol +0 -57
  635. package/contracts/instance/base/ServiceBase.sol +0 -44
  636. package/contracts/instance/module/access/Access.sol +0 -149
  637. package/contracts/instance/module/access/IAccess.sol +0 -53
  638. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  639. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  640. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  641. package/contracts/instance/module/component/IComponent.sol +0 -28
  642. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  643. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  644. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  645. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  646. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  647. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  648. package/contracts/instance/module/risk/IRisk.sol +0 -26
  649. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  650. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  651. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  652. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  653. package/contracts/instance/service/ComponentOwnerService.sol +0 -275
  654. package/contracts/instance/service/DistributionService.sol +0 -54
  655. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  656. package/contracts/instance/service/IDistributionService.sol +0 -12
  657. package/contracts/instance/service/IPoolService.sol +0 -37
  658. package/contracts/instance/service/IProductService.sol +0 -107
  659. package/contracts/instance/service/PoolService.sol +0 -149
  660. package/contracts/instance/service/ProductService.sol +0 -510
  661. package/contracts/registry/IChainNft.sol +0 -22
  662. package/contracts/shared/ContractDeployerLib.sol +0 -72
  663. package/contracts/test/TestDistribution.sol +0 -22
  664. package/contracts/test/TestFee.sol +0 -25
  665. package/contracts/test/TestPool.sol +0 -27
  666. package/contracts/test/TestProduct.sol +0 -74
  667. package/contracts/test/TestRegisterable.sol +0 -18
  668. package/contracts/test/TestRoleId.sol +0 -14
  669. package/contracts/test/TestService.sol +0 -26
  670. package/contracts/test/TestVersion.sol +0 -44
  671. package/contracts/test/TestVersionable.sol +0 -17
  672. package/contracts/test/Usdc.sol +0 -26
  673. package/contracts/types/ChainId.sol +0 -38
  674. package/contracts/types/Fee.sol +0 -56
  675. package/contracts/types/NftIdSet.sol +0 -60
  676. package/contracts/types/ObjectType.sol +0 -131
  677. package/contracts/types/ReferralId.sol +0 -48
  678. 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
+ }