@etherisc/gif-next 0.0.2-b9e43cf-870 → 0.0.2-bab959f-058

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 (699) hide show
  1. package/README.md +40 -16
  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/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  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 +1548 -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 +1234 -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 +293 -1455
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +389 -202
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +417 -2535
  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 +658 -350
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +542 -345
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +369 -95
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3581 -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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  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 +25 -150
  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 +1185 -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 +1093 -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 +1526 -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 +1513 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +834 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +922 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +487 -327
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1267 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1312 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1706 -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 +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -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 +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -235
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +251 -302
  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} +270 -220
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +461 -251
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +135 -132
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -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 +1276 -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 +281 -15
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +224 -260
  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 +539 -35
  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 +538 -281
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -82
  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 +360 -96
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1696 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -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} +199 -192
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IComponent.sol/IComponent.json} +218 -262
  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/IBundleService.sol/IBundleService.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +360 -343
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +60 -34
  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 +84 -159
  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 +1015 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +88 -20
  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 +189 -150
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -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 +2005 -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 +761 -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 +293 -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 +337 -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/{BundleManager.sol → BundleSet.sol} +40 -43
  324. package/contracts/instance/IInstance.sol +76 -52
  325. package/contracts/instance/IInstanceService.sol +73 -21
  326. package/contracts/instance/Instance.sol +187 -205
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +173 -83
  330. package/contracts/instance/InstanceService.sol +341 -243
  331. package/contracts/instance/InstanceServiceManager.sol +13 -27
  332. package/contracts/instance/InstanceStore.sol +277 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +20 -42
  338. package/contracts/instance/module/IAccess.sol +19 -21
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/IComponents.sol +52 -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} +5 -5
  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 +434 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +132 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +158 -0
  360. package/contracts/pool/Pool.sol +332 -0
  361. package/contracts/pool/PoolService.sol +562 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +230 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +82 -0
  366. package/contracts/product/BasicProductAuthorization.sol +43 -0
  367. package/contracts/product/ClaimService.sol +417 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/product/IApplicationService.sol +62 -0
  370. package/contracts/product/IClaimService.sol +99 -0
  371. package/contracts/product/IPolicyService.sol +78 -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 +476 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +392 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +16 -1
  383. package/contracts/registry/IRegistry.sol +67 -24
  384. package/contracts/registry/IRegistryService.sol +45 -34
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +317 -137
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +114 -182
  389. package/contracts/registry/RegistryServiceManager.sol +24 -33
  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 +263 -58
  394. package/contracts/shared/Component.sol +280 -0
  395. package/contracts/shared/ComponentService.sol +651 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/IComponent.sol +70 -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 +15 -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 +59 -86
  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 +57 -33
  419. package/contracts/shared/TokenHandler.sol +37 -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 +411 -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 +21 -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/{types → type}/NftIdSet.sol +2 -2
  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 +23 -14
  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 -482
  459. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  460. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  465. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  466. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  467. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  468. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  473. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  475. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  477. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  479. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  481. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  483. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  485. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  492. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  494. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  496. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  499. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  501. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  503. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  505. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  507. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  508. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  509. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  510. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -788
  511. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  512. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  513. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  514. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1047
  515. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  516. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  517. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  518. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  519. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  522. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  526. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  528. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  529. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1031
  532. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
  534. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
  536. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -693
  538. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -420
  540. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
  543. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  545. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1156
  550. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
  552. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  554. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  555. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -420
  556. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  557. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  558. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  560. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  561. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  562. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  563. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -530
  564. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  565. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  566. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  567. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  568. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  569. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  570. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  571. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  572. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  573. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  574. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  575. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  576. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  577. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  578. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  579. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  580. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  581. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  582. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  583. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  584. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  585. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  586. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  587. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  588. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  589. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  590. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  591. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  592. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  593. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  594. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  595. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  596. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  598. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  600. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  602. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  604. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  606. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  608. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  609. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  610. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  612. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  614. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  616. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  618. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  620. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  623. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  625. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  627. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  629. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  631. package/contracts/components/BaseComponent.sol +0 -159
  632. package/contracts/components/Distribution.sol +0 -164
  633. package/contracts/components/IBaseComponent.sol +0 -34
  634. package/contracts/components/IDistributionComponent.sol +0 -44
  635. package/contracts/components/IPoolComponent.sol +0 -66
  636. package/contracts/components/IProductComponent.sol +0 -35
  637. package/contracts/components/Pool.sol +0 -272
  638. package/contracts/components/Product.sol +0 -301
  639. package/contracts/experiment/cloning/Cloner.sol +0 -47
  640. package/contracts/experiment/errors/Require.sol +0 -38
  641. package/contracts/experiment/errors/Revert.sol +0 -44
  642. package/contracts/experiment/inheritance/A.sol +0 -53
  643. package/contracts/experiment/inheritance/B.sol +0 -28
  644. package/contracts/experiment/inheritance/C.sol +0 -34
  645. package/contracts/experiment/inheritance/IA.sol +0 -13
  646. package/contracts/experiment/inheritance/IB.sol +0 -10
  647. package/contracts/experiment/inheritance/IC.sol +0 -12
  648. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  649. package/contracts/experiment/statemachine/ISM.sol +0 -25
  650. package/contracts/experiment/statemachine/SM.sol +0 -57
  651. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  652. package/contracts/experiment/types/TypeA.sol +0 -47
  653. package/contracts/experiment/types/TypeB.sol +0 -29
  654. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  655. package/contracts/instance/IInstanceBase.sol +0 -26
  656. package/contracts/instance/InstanceAccessManager.sol +0 -303
  657. package/contracts/instance/InstanceBase.sol +0 -41
  658. package/contracts/instance/base/ComponentServiceBase.sol +0 -76
  659. package/contracts/instance/base/IInstanceBase.sol +0 -23
  660. package/contracts/instance/base/KeyValueStore.sol +0 -172
  661. package/contracts/instance/base/Lifecycle.sol +0 -100
  662. package/contracts/instance/module/ISetup.sol +0 -46
  663. package/contracts/instance/module/ITreasury.sol +0 -23
  664. package/contracts/instance/service/BundleService.sol +0 -294
  665. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  666. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  667. package/contracts/instance/service/DistributionService.sol +0 -120
  668. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  669. package/contracts/instance/service/IBundleService.sol +0 -44
  670. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  671. package/contracts/instance/service/IDistributionService.sol +0 -12
  672. package/contracts/instance/service/IPolicyService.sol +0 -94
  673. package/contracts/instance/service/IPoolService.sol +0 -20
  674. package/contracts/instance/service/IProductService.sol +0 -40
  675. package/contracts/instance/service/PolicyService.sol +0 -539
  676. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  677. package/contracts/instance/service/PoolService.sol +0 -145
  678. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  679. package/contracts/instance/service/ProductService.sol +0 -213
  680. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  681. package/contracts/registry/RegistryAccessManager.sol +0 -210
  682. package/contracts/registry/ReleaseManager.sol +0 -342
  683. package/contracts/shared/ContractDeployerLib.sol +0 -72
  684. package/contracts/shared/ERC165.sol +0 -25
  685. package/contracts/shared/ProxyManager.sol +0 -94
  686. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  687. package/contracts/shared/Versionable.sol +0 -147
  688. package/contracts/test/TestFee.sol +0 -25
  689. package/contracts/test/TestRegisterable.sol +0 -18
  690. package/contracts/test/TestRoleId.sol +0 -14
  691. package/contracts/test/TestService.sol +0 -25
  692. package/contracts/test/TestToken.sol +0 -26
  693. package/contracts/test/TestVersion.sol +0 -44
  694. package/contracts/test/TestVersionable.sol +0 -17
  695. package/contracts/types/ChainId.sol +0 -38
  696. package/contracts/types/NumberId.sol +0 -52
  697. package/contracts/types/ObjectType.sol +0 -152
  698. package/contracts/types/RoleId.sol +0 -90
  699. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,651 @@
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
+ // TODO: centralize token handling (issue #471)
132
+ tokenHandler.transfer(componentWallet, componentOwner, withdrawnAmount);
133
+
134
+ emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
135
+ }
136
+
137
+
138
+ //-------- product ------------------------------------------------------//
139
+
140
+ function registerProduct()
141
+ external
142
+ virtual
143
+ {
144
+ address contractAddress = msg.sender;
145
+
146
+ // register/create component setup
147
+ (
148
+ InstanceReader instanceReader,
149
+ InstanceStore instanceStore,
150
+ NftId productNftId
151
+ ) = _register(
152
+ contractAddress,
153
+ PRODUCT(),
154
+ PRODUCT_OWNER_ROLE());
155
+
156
+ // create product info
157
+ IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
158
+ instanceStore.createProduct(productNftId, productInfo);
159
+
160
+ // link distribution and pool to product
161
+ _linkToProduct(instanceReader, instanceStore, productInfo.distributionNftId, productNftId);
162
+ _linkToProduct(instanceReader, instanceStore, productInfo.poolNftId, productNftId);
163
+ }
164
+
165
+
166
+ function setProductFees(
167
+ Fee memory productFee, // product fee on net premium
168
+ Fee memory processingFee // product fee on payout amounts
169
+ )
170
+ external
171
+ virtual
172
+ {
173
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
174
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
175
+ bool feesChanged = false;
176
+
177
+ // update product fee if required
178
+ if(!FeeLib.eq(productInfo.productFee, productFee)) {
179
+ _logUpdateFee(productNftId, "ProductFee", productInfo.productFee, productFee);
180
+ productInfo.productFee = productFee;
181
+ feesChanged = true;
182
+ }
183
+
184
+ // update processing fee if required
185
+ if(!FeeLib.eq(productInfo.processingFee, processingFee)) {
186
+ _logUpdateFee(productNftId, "ProcessingFee", productInfo.processingFee, processingFee);
187
+ productInfo.processingFee = processingFee;
188
+ feesChanged = true;
189
+ }
190
+
191
+ if(feesChanged) {
192
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
193
+ emit LogComponentServiceProductFeesUpdated(productNftId);
194
+ }
195
+ }
196
+
197
+ function increaseProductFees(
198
+ InstanceStore instanceStore,
199
+ NftId productNftId,
200
+ Amount feeAmount
201
+ )
202
+ external
203
+ virtual
204
+ // TODO re-enable once role granting is stable and fixed
205
+ // restricted()
206
+ {
207
+ _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
208
+ }
209
+
210
+
211
+ function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
212
+ external
213
+ virtual
214
+ // TODO re-enable once role granting is stable and fixed
215
+ // restricted()
216
+ {
217
+ _changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
218
+ }
219
+
220
+ //-------- distribution -------------------------------------------------//
221
+
222
+ /// @dev registers the sending component as a distribution component
223
+ function registerDistribution()
224
+ external
225
+ virtual
226
+ {
227
+ address contractAddress = msg.sender;
228
+
229
+ // register/create component info
230
+ _register(
231
+ contractAddress,
232
+ DISTRIBUTION(),
233
+ DISTRIBUTION_OWNER_ROLE());
234
+ }
235
+
236
+
237
+ function setDistributionFees(
238
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
239
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
240
+ )
241
+ external
242
+ virtual
243
+ {
244
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
245
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
246
+ instance.getInstanceReader(), distributionNftId);
247
+ bool feesChanged = false;
248
+
249
+ // update distributino fee if required
250
+ if(!FeeLib.eq(productInfo.distributionFee, distributionFee)) {
251
+ _logUpdateFee(productNftId, "DistributionFee", productInfo.distributionFee, distributionFee);
252
+ productInfo.distributionFee = distributionFee;
253
+ feesChanged = true;
254
+ }
255
+
256
+ // update min distribution owner fee if required
257
+ if(!FeeLib.eq(productInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
258
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", productInfo.minDistributionOwnerFee, minDistributionOwnerFee);
259
+ productInfo.minDistributionOwnerFee = minDistributionOwnerFee;
260
+ feesChanged = true;
261
+ }
262
+
263
+ if(feesChanged) {
264
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
265
+ emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
266
+ }
267
+ }
268
+
269
+ function increaseDistributionBalance(
270
+ InstanceStore instanceStore,
271
+ NftId distributionNftId,
272
+ Amount amount,
273
+ Amount feeAmount
274
+ )
275
+ external
276
+ virtual
277
+ // TODO re-enable once role granting is stable and fixed
278
+ // restricted()
279
+ {
280
+ _changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
281
+ }
282
+
283
+
284
+ function decreaseDistributionBalance(
285
+ InstanceStore instanceStore,
286
+ NftId distributionNftId,
287
+ Amount amount,
288
+ Amount feeAmount
289
+ )
290
+ external
291
+ virtual
292
+ // TODO re-enable once role granting is stable and fixed
293
+ // restricted()
294
+ {
295
+ _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
296
+ }
297
+
298
+ //-------- distributor -------------------------------------------------------//
299
+
300
+ function increaseDistributorBalance(
301
+ InstanceStore instanceStore,
302
+ NftId distributorNftId,
303
+ Amount amount,
304
+ Amount feeAmount
305
+ )
306
+ external
307
+ virtual
308
+ // TODO re-enable once role granting is stable and fixed
309
+ // restricted()
310
+ {
311
+ _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
312
+ }
313
+
314
+ function decreaseDistributorBalance(
315
+ InstanceStore instanceStore,
316
+ NftId distributorNftId,
317
+ Amount amount,
318
+ Amount feeAmount
319
+ )
320
+ external
321
+ virtual
322
+ // TODO re-enable once role granting is stable and fixed
323
+ // restricted()
324
+ {
325
+ _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
326
+ }
327
+
328
+ //-------- oracle -------------------------------------------------------//
329
+
330
+ function registerOracle()
331
+ external
332
+ virtual
333
+ {
334
+ address contractAddress = msg.sender;
335
+
336
+ // register/create component setup
337
+ (
338
+ , // instance reader
339
+ InstanceStore instanceStore,
340
+ NftId componentNftId
341
+ ) = _register(
342
+ contractAddress,
343
+ ORACLE(),
344
+ ORACLE_OWNER_ROLE());
345
+ }
346
+
347
+ //-------- pool ---------------------------------------------------------//
348
+
349
+ function registerPool()
350
+ external
351
+ virtual
352
+ {
353
+ address contractAddress = msg.sender;
354
+
355
+ // register/create component setup
356
+ (
357
+ , // instance reader
358
+ InstanceStore instanceStore,
359
+ NftId componentNftId
360
+ ) = _register(
361
+ contractAddress,
362
+ POOL(),
363
+ POOL_OWNER_ROLE());
364
+
365
+ // create info
366
+ instanceStore.createPool(
367
+ componentNftId,
368
+ IPoolComponent(
369
+ contractAddress).getInitialPoolInfo());
370
+ }
371
+
372
+
373
+ function setPoolFees(
374
+ Fee memory poolFee, // pool fee on net premium
375
+ Fee memory stakingFee, // pool fee on staked capital from investor
376
+ Fee memory performanceFee // pool fee on profits from capital investors
377
+ )
378
+ external
379
+ virtual
380
+ {
381
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
382
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
383
+ instance.getInstanceReader(), poolNftId);
384
+ bool feesChanged = false;
385
+
386
+ // update pool fee if required
387
+ if(!FeeLib.eq(productInfo.poolFee, poolFee)) {
388
+ _logUpdateFee(productNftId, "PoolFee", productInfo.poolFee, poolFee);
389
+ productInfo.poolFee = poolFee;
390
+ feesChanged = true;
391
+ }
392
+
393
+ // update staking fee if required
394
+ if(!FeeLib.eq(productInfo.stakingFee, stakingFee)) {
395
+ _logUpdateFee(productNftId, "StakingFee", productInfo.stakingFee, stakingFee);
396
+ productInfo.stakingFee = stakingFee;
397
+ feesChanged = true;
398
+ }
399
+
400
+ // update performance fee if required
401
+ if(!FeeLib.eq(productInfo.performanceFee, performanceFee)) {
402
+ _logUpdateFee(productNftId, "PerformanceFee", productInfo.performanceFee, performanceFee);
403
+ productInfo.performanceFee = performanceFee;
404
+ feesChanged = true;
405
+ }
406
+
407
+ if(feesChanged) {
408
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
409
+ emit LogComponentServicePoolFeesUpdated(poolNftId);
410
+ }
411
+ }
412
+
413
+ function increasePoolBalance(
414
+ InstanceStore instanceStore,
415
+ NftId poolNftId,
416
+ Amount amount,
417
+ Amount feeAmount
418
+ )
419
+ public
420
+ virtual
421
+ // TODO re-enable once role granting is stable and fixed
422
+ // restricted()
423
+ {
424
+ _changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
425
+ }
426
+
427
+ function decreasePoolBalance(
428
+ InstanceStore instanceStore,
429
+ NftId poolNftId,
430
+ Amount amount,
431
+ Amount feeAmount
432
+ )
433
+ public
434
+ virtual
435
+ // TODO re-enable once role granting is stable and fixed
436
+ // restricted()
437
+ {
438
+ _changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
439
+ }
440
+
441
+ //-------- bundle -------------------------------------------------------//
442
+
443
+ function increaseBundleBalance(
444
+ InstanceStore instanceStore,
445
+ NftId bundleNftId,
446
+ Amount amount,
447
+ Amount feeAmount
448
+ )
449
+ external
450
+ virtual
451
+ // TODO re-enable once role granting is stable and fixed
452
+ // restricted()
453
+ {
454
+ _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
455
+ }
456
+
457
+ function decreaseBundleBalance(
458
+ InstanceStore instanceStore,
459
+ NftId bundleNftId,
460
+ Amount amount,
461
+ Amount feeAmount
462
+ )
463
+ external
464
+ virtual
465
+ // TODO re-enable once role granting is stable and fixed
466
+ // restricted()
467
+ {
468
+ _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
469
+ }
470
+
471
+
472
+ //-------- internal functions ------------------------------------------//
473
+
474
+ function _changeTargetBalance(
475
+ bool increase,
476
+ InstanceStore instanceStore,
477
+ NftId targetNftId,
478
+ Amount amount,
479
+ Amount feeAmount
480
+ )
481
+ internal
482
+ virtual
483
+ {
484
+ Amount totalAmount = amount + feeAmount;
485
+
486
+ if(increase) {
487
+ if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
488
+ if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
489
+ } else {
490
+ if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
491
+ if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
492
+ }
493
+ }
494
+
495
+ /// @dev registers the component represented by the provided address
496
+ function _register(
497
+ address componentAddress, // address of component to register
498
+ ObjectType requiredType, // required type for component for registration
499
+ RoleId requiredRole // role required for comonent owner for registration
500
+ )
501
+ internal
502
+ virtual
503
+ returns (
504
+ InstanceReader instanceReader,
505
+ InstanceStore instanceStore,
506
+ NftId componentNftId
507
+ )
508
+ {
509
+ (
510
+ IInstance instance,
511
+ IInstanceLinkedComponent component,
512
+ address owner
513
+ ) = _getAndVerifyRegisterableComponent(
514
+ componentAddress,
515
+ requiredType,
516
+ requiredRole);
517
+
518
+ // register component with registry
519
+ componentNftId = _registryService.registerComponent(
520
+ component,
521
+ requiredType,
522
+ owner).nftId;
523
+
524
+ component.linkToRegisteredNftId();
525
+
526
+ // setup initial component authorization
527
+ _instanceService.initializeAuthorization(
528
+ instance.getNftId(),
529
+ component);
530
+
531
+ // save amended component info with instance
532
+ instanceReader = instance.getInstanceReader();
533
+ instanceStore = instance.getInstanceStore();
534
+
535
+ IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
536
+ componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
537
+
538
+ instanceStore.createComponent(
539
+ component.getNftId(),
540
+ componentInfo);
541
+
542
+ // TODO add logging
543
+ }
544
+
545
+
546
+ /// @dev link the component info corresponding to the componentNftId to the provided productNftId
547
+ function _linkToProduct(
548
+ InstanceReader instanceReader,
549
+ InstanceStore instanceStore,
550
+ NftId componentNftId,
551
+ NftId productNftId
552
+ )
553
+ internal
554
+ {
555
+ // only link components that are registered
556
+ if(componentNftId.eqz()) {
557
+ return;
558
+ }
559
+
560
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
561
+ componentInfo.productNftId = productNftId;
562
+ instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
563
+ }
564
+
565
+
566
+ function _logUpdateFee(NftId productNftId, string memory name, Fee memory feeBefore, Fee memory feeAfter)
567
+ internal
568
+ virtual
569
+ {
570
+ emit LogComponentServiceUpdateFee(
571
+ productNftId,
572
+ name,
573
+ feeBefore.fractionalFee,
574
+ feeBefore.fixedFee,
575
+ feeAfter.fractionalFee,
576
+ feeAfter.fixedFee
577
+ );
578
+ }
579
+
580
+
581
+ function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
582
+ selectors = new bytes4[](1);
583
+ selectors[0] = selector;
584
+ }
585
+
586
+
587
+ function _getLinkedProductInfo(
588
+ InstanceReader instanceReader,
589
+ NftId componentNftId
590
+ )
591
+ internal
592
+ view
593
+ returns(
594
+ NftId productNftId,
595
+ IComponents.ProductInfo memory info
596
+ )
597
+ {
598
+ productNftId = instanceReader.getComponentInfo(componentNftId).productNftId;
599
+ info = instanceReader.getProductInfo(productNftId);
600
+ }
601
+
602
+
603
+ /// @dev based on the provided component address required type and role returns the component and related instance contract
604
+ /// the function reverts iff:
605
+ /// - the component has already been registered
606
+ /// - the component contract does not support IInstanceLinkedComponent
607
+ /// - the component type does not match with the required type
608
+ /// - the initial component owner misses the required role (with the instance access manager)
609
+ function _getAndVerifyRegisterableComponent(
610
+ address componentAddress,
611
+ ObjectType requiredType,
612
+ RoleId requiredRole
613
+ )
614
+ internal
615
+ view
616
+ returns (
617
+ IInstance instance,
618
+ IInstanceLinkedComponent component,
619
+ address owner
620
+ )
621
+ {
622
+ // check this is a component
623
+ component = IInstanceLinkedComponent(componentAddress);
624
+ if(!component.supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
625
+ revert ErrorComponentServiceNotComponent(componentAddress);
626
+ }
627
+
628
+ // check component is of required type
629
+ IRegistry.ObjectInfo memory info = component.getInitialInfo();
630
+ if(info.objectType != requiredType) {
631
+ revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
632
+ }
633
+
634
+ // check component has not already been registered
635
+ if (getRegistry().getNftId(componentAddress).gtz()) {
636
+ revert ErrorComponentServiceAlreadyRegistered(componentAddress);
637
+ }
638
+
639
+ // check instance has assigned required role to inital owner
640
+ instance = _getInstance(info.parentNftId);
641
+ owner = info.initialOwner;
642
+
643
+ if(!instance.getInstanceAdmin().hasRole(owner, requiredRole)) {
644
+ revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
645
+ }
646
+ }
647
+
648
+ function _getDomain() internal pure virtual override returns(ObjectType) {
649
+ return COMPONENT();
650
+ }
651
+ }
@@ -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
+ }