@etherisc/gif-next 0.0.2-fb8d07b-779 → 0.0.2-fbe6493-116

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