@etherisc/gif-next 0.0.2-e20063b-144 → 0.0.2-e2a1510-528

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 (633) hide show
  1. package/README.md +48 -5
  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 +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/{components → distribution}/Distribution.sol/Distribution.json +214 -363
  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/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +213 -239
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +157 -302
  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 +227 -2186
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +198 -74
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +433 -2805
  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 +624 -353
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +263 -243
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -119
  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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  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 +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +190 -218
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +296 -240
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1534 -0
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +842 -0
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  100. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +288 -47
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +223 -341
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +475 -106
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1652 -0
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +774 -0
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +393 -280
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +252 -82
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +150 -282
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +63 -141
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +11 -61
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  144. package/artifacts/contracts/product/Product.sol/Product.json +1238 -0
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -125
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +443 -43
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +367 -73
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  173. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +138 -122
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1712 -0
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +27 -95
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  181. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +110 -84
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  190. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  192. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  194. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  198. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IService.sol/IService.json +17 -6
  200. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  201. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  220. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Service.sol/Service.json +17 -6
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +107 -6
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  230. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  284. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  286. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -7
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  292. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  296. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  297. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  300. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  302. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  303. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  304. package/contracts/authorization/AccessAdmin.sol +591 -0
  305. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  306. package/contracts/authorization/Authorization.sol +218 -0
  307. package/contracts/authorization/IAccess.sol +48 -0
  308. package/contracts/authorization/IAccessAdmin.sol +136 -0
  309. package/contracts/authorization/IAuthorization.sol +54 -0
  310. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  311. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  312. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  313. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  314. package/contracts/distribution/BasicDistribution.sol +138 -0
  315. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  316. package/contracts/{components → distribution}/Distribution.sol +172 -161
  317. package/contracts/distribution/DistributionService.sol +336 -0
  318. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  319. package/contracts/distribution/IDistributionComponent.sol +52 -0
  320. package/contracts/{instance/service → distribution}/IDistributionService.sol +36 -38
  321. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +27 -27
  322. package/contracts/instance/IInstance.sol +54 -70
  323. package/contracts/instance/IInstanceService.sol +51 -27
  324. package/contracts/instance/Instance.sol +151 -207
  325. package/contracts/instance/InstanceAdmin.sol +266 -0
  326. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  327. package/contracts/instance/InstanceReader.sol +148 -60
  328. package/contracts/instance/InstanceService.sol +282 -317
  329. package/contracts/instance/InstanceServiceManager.sol +12 -26
  330. package/contracts/instance/InstanceStore.sol +277 -0
  331. package/contracts/instance/base/BalanceStore.sol +123 -0
  332. package/contracts/instance/base/Cloneable.sol +28 -0
  333. package/contracts/instance/base/ObjectCounter.sol +21 -0
  334. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  335. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  336. package/contracts/instance/module/IAccess.sol +4 -12
  337. package/contracts/instance/module/IBundle.sol +6 -9
  338. package/contracts/instance/module/IComponents.sol +20 -14
  339. package/contracts/instance/module/IDistribution.sol +6 -6
  340. package/contracts/instance/module/IPolicy.sol +22 -15
  341. package/contracts/instance/module/IRisk.sol +1 -1
  342. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  343. package/contracts/oracle/BasicOracle.sol +48 -0
  344. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  345. package/contracts/oracle/IOracle.sol +36 -0
  346. package/contracts/oracle/IOracleComponent.sol +33 -0
  347. package/contracts/oracle/IOracleService.sol +65 -0
  348. package/contracts/oracle/Oracle.sol +166 -0
  349. package/contracts/oracle/OracleService.sol +278 -0
  350. package/contracts/oracle/OracleServiceManager.sol +39 -0
  351. package/contracts/pool/BasicPool.sol +166 -0
  352. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  353. package/contracts/pool/BundleService.sol +437 -0
  354. package/contracts/pool/BundleServiceManager.sol +39 -0
  355. package/contracts/{instance/service → pool}/IBundleService.sol +58 -21
  356. package/contracts/pool/IPoolComponent.sol +58 -0
  357. package/contracts/pool/IPoolService.sol +149 -0
  358. package/contracts/pool/Pool.sol +328 -0
  359. package/contracts/pool/PoolService.sol +525 -0
  360. package/contracts/pool/PoolServiceManager.sol +39 -0
  361. package/contracts/product/ApplicationService.sol +230 -0
  362. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  363. package/contracts/product/BasicProduct.sol +52 -0
  364. package/contracts/product/BasicProductAuthorization.sol +43 -0
  365. package/contracts/product/ClaimService.sol +417 -0
  366. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  367. package/contracts/{instance/service → product}/IApplicationService.sol +13 -29
  368. package/contracts/product/IClaimService.sol +99 -0
  369. package/contracts/product/IPolicyService.sol +84 -0
  370. package/contracts/product/IPricingService.sol +39 -0
  371. package/contracts/product/IProductComponent.sol +40 -0
  372. package/contracts/product/IProductService.sol +33 -0
  373. package/contracts/product/PolicyService.sol +529 -0
  374. package/contracts/product/PolicyServiceManager.sol +39 -0
  375. package/contracts/product/PricingService.sol +300 -0
  376. package/contracts/product/PricingServiceManager.sol +39 -0
  377. package/contracts/{components → product}/Product.sol +171 -131
  378. package/contracts/product/ProductService.sol +99 -0
  379. package/contracts/product/ProductServiceManager.sol +39 -0
  380. package/contracts/registry/ChainNft.sol +8 -1
  381. package/contracts/registry/IRegistry.sol +59 -26
  382. package/contracts/registry/IRegistryService.sol +42 -41
  383. package/contracts/registry/Registry.sol +234 -125
  384. package/contracts/registry/RegistryAdmin.sol +365 -0
  385. package/contracts/registry/RegistryService.sol +69 -99
  386. package/contracts/registry/RegistryServiceManager.sol +23 -32
  387. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  388. package/contracts/registry/ReleaseRegistry.sol +485 -0
  389. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  390. package/contracts/registry/TokenRegistry.sol +261 -62
  391. package/contracts/shared/Component.sol +280 -0
  392. package/contracts/shared/ComponentService.sol +650 -0
  393. package/contracts/shared/ComponentServiceManager.sol +35 -0
  394. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  395. package/contracts/{components → shared}/IComponent.sol +27 -32
  396. package/contracts/shared/IComponentService.sol +108 -0
  397. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  398. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  399. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  400. package/contracts/shared/INftOwnable.sol +2 -2
  401. package/contracts/shared/IPolicyHolder.sol +29 -10
  402. package/contracts/shared/IRegistryLinked.sol +0 -1
  403. package/contracts/shared/IService.sol +12 -3
  404. package/contracts/shared/InitializableCustom.sol +177 -0
  405. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  406. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  407. package/contracts/shared/KeyValueStore.sol +131 -0
  408. package/contracts/shared/Lifecycle.sol +77 -0
  409. package/contracts/shared/NftIdSet.sol +65 -0
  410. package/contracts/shared/NftOwnable.sol +5 -18
  411. package/contracts/shared/PolicyHolder.sol +41 -23
  412. package/contracts/shared/Registerable.sol +13 -12
  413. package/contracts/shared/RegistryLinked.sol +0 -5
  414. package/contracts/shared/Service.sol +32 -22
  415. package/contracts/shared/TokenHandler.sol +31 -2
  416. package/contracts/staking/IStaking.sol +167 -0
  417. package/contracts/staking/IStakingService.sol +160 -0
  418. package/contracts/staking/StakeManagerLib.sol +231 -0
  419. package/contracts/staking/Staking.sol +516 -0
  420. package/contracts/staking/StakingLifecycle.sol +23 -0
  421. package/contracts/staking/StakingManager.sol +50 -0
  422. package/contracts/staking/StakingReader.sol +183 -0
  423. package/contracts/staking/StakingService.sol +407 -0
  424. package/contracts/staking/StakingServiceManager.sol +44 -0
  425. package/contracts/staking/StakingStore.sol +605 -0
  426. package/contracts/staking/TargetManagerLib.sol +207 -0
  427. package/contracts/{types → type}/AddressSet.sol +1 -1
  428. package/contracts/type/Amount.sol +135 -0
  429. package/contracts/{types → type}/Blocknumber.sol +26 -3
  430. package/contracts/{types → type}/Fee.sol +24 -22
  431. package/contracts/{types → type}/NftId.sol +14 -16
  432. package/contracts/{types → type}/NftIdSet.sol +2 -2
  433. package/contracts/type/ObjectType.sol +271 -0
  434. package/contracts/{types → type}/Referral.sol +2 -1
  435. package/contracts/type/RequestId.sol +75 -0
  436. package/contracts/{types → type}/RiskId.sol +1 -1
  437. package/contracts/type/RoleId.sol +174 -0
  438. package/contracts/{types → type}/Seconds.sol +40 -1
  439. package/contracts/type/Selector.sol +102 -0
  440. package/contracts/{types → type}/StateId.sol +27 -2
  441. package/contracts/type/String.sol +53 -0
  442. package/contracts/{types → type}/Timestamp.sol +17 -3
  443. package/contracts/{types → type}/UFixed.sol +34 -9
  444. package/contracts/{types → type}/Version.sol +4 -2
  445. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  446. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  447. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  448. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  449. package/package.json +8 -5
  450. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  451. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  452. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  453. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  454. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  455. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  456. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  457. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  458. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  459. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  460. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  461. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  462. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  463. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  464. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  465. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  466. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  467. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  468. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  469. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  470. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  472. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  473. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  474. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  475. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  476. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  477. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1060
  479. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -681
  481. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1266
  483. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -725
  485. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1040
  487. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -685
  489. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1774
  491. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -793
  493. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  495. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1511
  502. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -741
  504. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  506. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  508. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  510. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  512. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  513. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  514. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  515. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  516. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  517. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  518. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  519. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  520. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  521. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  522. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  523. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  524. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  525. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  526. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  527. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  528. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  529. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  530. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  531. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  532. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  533. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  534. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  535. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  536. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  537. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  538. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  539. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  540. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  541. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  542. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  543. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  544. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -185
  546. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  548. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  550. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -179
  552. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  554. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  556. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  558. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  559. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  560. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  561. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  562. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  564. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  566. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -209
  568. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  570. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  571. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  572. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  573. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  574. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  576. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  577. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  580. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  582. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  584. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  586. package/contracts/components/Component.sol +0 -253
  587. package/contracts/components/IDistributionComponent.sol +0 -71
  588. package/contracts/components/IPoolComponent.sol +0 -113
  589. package/contracts/components/IProductComponent.sol +0 -40
  590. package/contracts/components/Pool.sol +0 -302
  591. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  592. package/contracts/instance/Cloneable.sol +0 -51
  593. package/contracts/instance/InstanceAccessManager.sol +0 -527
  594. package/contracts/instance/base/ComponentService.sol +0 -121
  595. package/contracts/instance/base/KeyValueStore.sol +0 -180
  596. package/contracts/instance/base/Lifecycle.sol +0 -117
  597. package/contracts/instance/module/ISetup.sol +0 -33
  598. package/contracts/instance/module/ITreasury.sol +0 -23
  599. package/contracts/instance/service/ApplicationService.sol +0 -355
  600. package/contracts/instance/service/BundleService.sol +0 -436
  601. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  602. package/contracts/instance/service/ClaimService.sol +0 -239
  603. package/contracts/instance/service/DistributionService.sol +0 -431
  604. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  605. package/contracts/instance/service/IClaimService.sol +0 -92
  606. package/contracts/instance/service/IPolicyService.sol +0 -137
  607. package/contracts/instance/service/IPoolService.sol +0 -99
  608. package/contracts/instance/service/IProductService.sol +0 -40
  609. package/contracts/instance/service/PolicyService.sol +0 -541
  610. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  611. package/contracts/instance/service/PoolService.sol +0 -303
  612. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  613. package/contracts/instance/service/ProductService.sol +0 -210
  614. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  615. package/contracts/registry/RegistryAccessManager.sol +0 -216
  616. package/contracts/registry/ReleaseManager.sol +0 -324
  617. package/contracts/shared/ContractDeployerLib.sol +0 -72
  618. package/contracts/test/TestFee.sol +0 -25
  619. package/contracts/test/TestRegisterable.sol +0 -18
  620. package/contracts/test/TestRoleId.sol +0 -14
  621. package/contracts/test/TestService.sol +0 -25
  622. package/contracts/test/TestToken.sol +0 -26
  623. package/contracts/test/TestVersion.sol +0 -44
  624. package/contracts/test/TestVersionable.sol +0 -17
  625. package/contracts/types/Amount.sol +0 -65
  626. package/contracts/types/ChainId.sol +0 -38
  627. package/contracts/types/NumberId.sol +0 -52
  628. package/contracts/types/ObjectType.sol +0 -157
  629. package/contracts/types/RoleId.sol +0 -97
  630. /package/contracts/{types → type}/ClaimId.sol +0 -0
  631. /package/contracts/{types → type}/DistributorType.sol +0 -0
  632. /package/contracts/{types → type}/Key32.sol +0 -0
  633. /package/contracts/{types → type}/PayoutId.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.getComponentInfo();
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
+ }