@etherisc/gif-next 0.0.2-c15bb6f-257 → 0.0.2-c2daf33-461

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