@etherisc/gif-next 0.0.2-e9c5694-914 → 0.0.2-ea09fbf-195

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 (443) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +103 -55
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +37 -5
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +137 -129
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  67. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -56
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +239 -92
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  85. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  92. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.json +168 -0
  94. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  100. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  105. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
  162. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
  164. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  166. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  168. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  169. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  170. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
  172. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
  174. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  176. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +31 -2
  178. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  180. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  181. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  182. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  183. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/Registry.sol/Registry.json +69 -40
  185. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
  187. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  189. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  191. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  192. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +310 -52
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  211. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  217. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  219. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
  221. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  223. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  229. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  232. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  233. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  235. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  247. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  253. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  255. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  256. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  257. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
  259. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  261. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  263. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  265. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  267. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  269. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
  271. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
  273. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  275. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  277. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  278. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  280. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  283. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  285. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  287. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  289. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  290. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  291. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  293. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  295. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  297. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  299. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  301. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  303. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  305. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
  307. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  325. package/contracts/accounting/AccountingService.sol +262 -0
  326. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  327. package/contracts/accounting/IAccountingService.sol +45 -0
  328. package/contracts/authorization/AccessAdmin.sol +136 -73
  329. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  330. package/contracts/authorization/IAccessAdmin.sol +6 -3
  331. package/contracts/distribution/BasicDistribution.sol +6 -6
  332. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  333. package/contracts/distribution/Distribution.sol +32 -30
  334. package/contracts/distribution/DistributionService.sol +34 -32
  335. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  336. package/contracts/distribution/IDistributionService.sol +5 -6
  337. package/contracts/examples/fire/FirePool.sol +22 -5
  338. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  339. package/contracts/examples/fire/FireProduct.sol +31 -8
  340. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  341. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  342. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  343. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  344. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  345. package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
  346. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  347. package/contracts/instance/BundleSet.sol +42 -38
  348. package/contracts/instance/IInstance.sol +8 -8
  349. package/contracts/instance/IInstanceService.sol +9 -9
  350. package/contracts/instance/Instance.sol +20 -17
  351. package/contracts/instance/InstanceAdmin.sol +96 -47
  352. package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
  353. package/contracts/instance/InstanceReader.sol +108 -7
  354. package/contracts/instance/InstanceService.sol +73 -82
  355. package/contracts/instance/InstanceServiceManager.sol +1 -1
  356. package/contracts/instance/InstanceStore.sol +13 -2
  357. package/contracts/instance/RiskSet.sol +118 -0
  358. package/contracts/instance/base/ObjectCounter.sol +1 -2
  359. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  360. package/contracts/instance/base/ObjectSet.sol +31 -33
  361. package/contracts/instance/base/ObjectSetHelper.sol +30 -0
  362. package/contracts/instance/module/IComponents.sol +4 -4
  363. package/contracts/instance/module/IPolicy.sol +2 -1
  364. package/contracts/instance/module/IRisk.sol +3 -0
  365. package/contracts/oracle/Oracle.sol +1 -1
  366. package/contracts/oracle/OracleService.sol +92 -73
  367. package/contracts/oracle/OracleServiceManager.sol +1 -1
  368. package/contracts/pool/BasicPool.sol +24 -3
  369. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  370. package/contracts/pool/BundleService.sol +26 -94
  371. package/contracts/pool/BundleServiceManager.sol +1 -1
  372. package/contracts/pool/IBundleService.sol +2 -24
  373. package/contracts/pool/IPoolComponent.sol +1 -7
  374. package/contracts/pool/IPoolService.sol +12 -26
  375. package/contracts/pool/Pool.sol +112 -102
  376. package/contracts/pool/PoolService.sol +171 -100
  377. package/contracts/pool/PoolServiceManager.sol +1 -1
  378. package/contracts/product/ApplicationService.sol +15 -15
  379. package/contracts/product/ApplicationServiceManager.sol +1 -1
  380. package/contracts/product/BasicProduct.sol +9 -11
  381. package/contracts/product/BasicProductAuthorization.sol +1 -2
  382. package/contracts/product/ClaimService.sol +147 -51
  383. package/contracts/product/ClaimServiceManager.sol +1 -1
  384. package/contracts/product/IApplicationService.sol +5 -2
  385. package/contracts/product/IClaimService.sol +13 -0
  386. package/contracts/product/IPolicyService.sol +17 -7
  387. package/contracts/product/IProductComponent.sol +4 -1
  388. package/contracts/product/PolicyService.sol +244 -199
  389. package/contracts/product/PolicyServiceManager.sol +1 -1
  390. package/contracts/product/PricingService.sol +23 -19
  391. package/contracts/product/PricingServiceManager.sol +3 -3
  392. package/contracts/product/Product.sol +47 -39
  393. package/contracts/product/RiskService.sol +78 -23
  394. package/contracts/product/RiskServiceManager.sol +1 -1
  395. package/contracts/registry/ChainNft.sol +4 -2
  396. package/contracts/registry/IRegistry.sol +8 -15
  397. package/contracts/registry/IRelease.sol +26 -0
  398. package/contracts/registry/Registry.sol +12 -3
  399. package/contracts/registry/RegistryAdmin.sol +121 -225
  400. package/contracts/registry/RegistryService.sol +3 -3
  401. package/contracts/registry/RegistryServiceManager.sol +1 -1
  402. package/contracts/registry/ReleaseAdmin.sol +245 -0
  403. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  404. package/contracts/registry/ReleaseRegistry.sol +129 -119
  405. package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
  406. package/contracts/registry/TokenRegistry.sol +6 -8
  407. package/contracts/shared/Component.sol +59 -98
  408. package/contracts/shared/ComponentService.sol +206 -251
  409. package/contracts/shared/ComponentServiceManager.sol +1 -1
  410. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  411. package/contracts/shared/ContractLib.sol +223 -9
  412. package/contracts/shared/IComponent.sol +4 -17
  413. package/contracts/shared/IComponentService.sol +20 -24
  414. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  415. package/contracts/shared/IRegisterable.sol +15 -4
  416. package/contracts/shared/IService.sol +3 -5
  417. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  418. package/contracts/shared/NftOwnable.sol +4 -4
  419. package/contracts/shared/PolicyHolder.sol +1 -1
  420. package/contracts/shared/Registerable.sol +44 -20
  421. package/contracts/shared/RegistryLinked.sol +7 -13
  422. package/contracts/shared/Service.sol +8 -27
  423. package/contracts/shared/TokenHandler.sol +316 -66
  424. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  425. package/contracts/staking/IStaking.sol +9 -4
  426. package/contracts/staking/Staking.sol +62 -33
  427. package/contracts/staking/StakingService.sol +41 -9
  428. package/contracts/type/Key32.sol +2 -2
  429. package/contracts/type/Key32Set.sol +62 -0
  430. package/contracts/type/NftId.sol +6 -0
  431. package/contracts/type/ObjectType.sol +32 -18
  432. package/contracts/type/RiskId.sol +23 -6
  433. package/contracts/type/RoleId.sol +5 -2
  434. package/contracts/type/Timestamp.sol +0 -5
  435. package/contracts/type/UFixed.sol +9 -119
  436. package/contracts/type/Version.sol +15 -5
  437. package/contracts/upgradeability/ProxyManager.sol +1 -1
  438. package/package.json +3 -3
  439. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  440. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  441. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  442. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  443. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
@@ -3,10 +3,8 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
- import {Amount, AmountLib} from "../type/Amount.sol";
7
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
8
- import {ContractLib} from "../shared/ContractLib.sol";
9
- import {Fee, FeeLib} from "../type/Fee.sol";
6
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
7
+ import {IComponent} from "../shared/IComponent.sol";
10
8
  import {IComponents} from "../instance/module/IComponents.sol";
11
9
  import {IComponentService} from "./IComponentService.sol";
12
10
  import {IInstance} from "../instance/IInstance.sol";
@@ -15,32 +13,56 @@ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
15
13
  import {InstanceReader} from "../instance/InstanceReader.sol";
16
14
  import {InstanceStore} from "../instance/InstanceStore.sol";
17
15
  import {IInstanceService} from "../instance/IInstanceService.sol";
18
- import {IRegisterable} from "../shared/IRegisterable.sol";
19
16
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
20
17
  import {IProductComponent} from "../product/IProductComponent.sol";
18
+ import {IRegisterable} from "../shared/IRegisterable.sol";
21
19
  import {IRegistry} from "../registry/IRegistry.sol";
22
20
  import {IRegistryService} from "../registry/IRegistryService.sol";
21
+
22
+ import {Amount, AmountLib} from "../type/Amount.sol";
23
+ import {ContractLib} from "../shared/ContractLib.sol";
24
+ import {Fee, FeeLib} from "../type/Fee.sol";
23
25
  import {KEEP_STATE} from "../type/StateId.sol";
24
- import {NftId} from "../type/NftId.sol";
25
- import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
26
- import {RoleId} from "../type/RoleId.sol";
26
+ import {NftId, NftIdLib} from "../type/NftId.sol";
27
+ import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
28
+ import {Service} from "../shared/Service.sol";
29
+ import {TokenHandler} from "../shared/TokenHandler.sol";
27
30
  import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
31
+ import {VersionPart} from "../type/Version.sol";
32
+
28
33
 
29
34
  contract ComponentService is
30
- ComponentVerifyingService,
35
+ Service,
31
36
  IComponentService
32
37
  {
33
-
34
38
  bool private constant INCREASE = true;
35
39
  bool private constant DECREASE = false;
36
40
 
41
+ IAccountingService private _accountingService;
37
42
  IRegistryService private _registryService;
38
43
  IInstanceService private _instanceService;
39
44
 
40
45
  modifier onlyComponent(address component) {
41
- if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
42
- revert ErrorComponentServiceNotInstanceLinkedComponent(component);
46
+ _checkSupportsInterface(component);
47
+ _;
48
+ }
49
+
50
+ modifier onlyInstance() {
51
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
52
+ if (instanceNftId.eqz()) {
53
+ revert ErrorComponentServiceNotRegistered(msg.sender);
54
+ }
55
+
56
+ ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
57
+ if (objectType != INSTANCE()) {
58
+ revert ErrorComponentServiceNotInstance(msg.sender, objectType);
43
59
  }
60
+
61
+ VersionPart instanceVersion = IInstance(msg.sender).getRelease();
62
+ if (instanceVersion != getVersion().toMajorPart()) {
63
+ revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
64
+ }
65
+
44
66
  _;
45
67
  }
46
68
 
@@ -54,12 +76,13 @@ contract ComponentService is
54
76
  initializer()
55
77
  {
56
78
  (
57
- address registryAddress,
58
- address authority
79
+ address authority,
80
+ address registry
59
81
  ) = abi.decode(data, (address, address));
60
82
 
61
- _initializeService(registryAddress, authority, owner);
83
+ __Service_init(authority, registry, owner);
62
84
 
85
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
63
86
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
64
87
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
65
88
 
@@ -90,43 +113,84 @@ contract ComponentService is
90
113
  revert ErrorComponentServiceTypeNotSupported(component, componentType);
91
114
  }
92
115
 
116
+ function approveTokenHandler(
117
+ IERC20Metadata token,
118
+ Amount amount
119
+ )
120
+ external
121
+ virtual
122
+ {
123
+ // checks
124
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
125
+ TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
126
+ componentNftId).tokenHandler;
93
127
 
94
- function setWallet(address newWallet) external virtual {
95
- (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
96
- IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
97
- address currentWallet = info.wallet;
128
+ // effects
129
+ tokenHandler.approve(token, amount);
130
+ }
98
131
 
99
- if (newWallet == address(0)) {
100
- revert ErrorComponentServiceNewWalletAddressZero();
101
- }
102
132
 
103
- if (currentWallet == address(0)) {
104
- revert ErrorComponentServiceWalletAddressZero();
105
- }
133
+ function approveStakingTokenHandler(
134
+ IERC20Metadata token,
135
+ Amount amount
136
+ )
137
+ external
138
+ virtual
139
+ {
140
+ // checks
141
+ ContractLib.getAndVerifyStaking(
142
+ getRegistry(),
143
+ msg.sender); // only active
106
144
 
107
- if (newWallet == currentWallet) {
108
- revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
109
- }
145
+ // effects
146
+ TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
147
+ tokenHandler.approve(token, amount);
148
+ }
110
149
 
111
- info.wallet = newWallet;
112
- instance.getInstanceStore().updateComponent(componentNftId, info, KEEP_STATE());
113
- emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
150
+
151
+ function setWallet(address newWallet)
152
+ external
153
+ virtual
154
+ {
155
+ // checks
156
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
157
+ TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
158
+ componentNftId).tokenHandler;
159
+
160
+ // effects
161
+ tokenHandler.setWallet(newWallet);
114
162
  }
115
163
 
116
- // TODO implement
117
- function lock() external virtual {}
164
+ /// @inheritdoc IComponentService
165
+ function setLockedFromInstance(address componentAddress, bool locked)
166
+ external
167
+ virtual
168
+ onlyInstance()
169
+ {
170
+ address instanceAddress = msg.sender;
171
+ // NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
172
+ IInstance instance = IInstance(instanceAddress);
173
+ _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
174
+ }
118
175
 
119
- // TODO implement
120
- function unlock() external virtual {}
176
+ /// @inheritdoc IComponentService
177
+ function setLockedFromComponent(address componentAddress, bool locked)
178
+ external
179
+ virtual
180
+ onlyComponent(msg.sender)
181
+ {
182
+ (, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
183
+ _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
184
+ }
121
185
 
122
186
  function withdrawFees(Amount amount)
123
187
  external
124
188
  virtual
125
189
  returns (Amount withdrawnAmount)
126
190
  {
127
- (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
191
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
128
192
  IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
129
- address componentWallet = info.wallet;
193
+ address componentWallet = info.tokenHandler.getWallet();
130
194
 
131
195
  // determine withdrawn amount
132
196
  withdrawnAmount = amount;
@@ -142,7 +206,7 @@ contract ComponentService is
142
206
  }
143
207
 
144
208
  // decrease fee counters by withdrawnAmount
145
- _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
209
+ _accountingService.decreaseComponentFees(instance.getInstanceStore(), componentNftId, withdrawnAmount);
146
210
 
147
211
  // transfer amount to component owner
148
212
  address componentOwner = getRegistry().ownerOf(componentNftId);
@@ -156,6 +220,7 @@ contract ComponentService is
156
220
  function registerProduct(address productAddress)
157
221
  external
158
222
  virtual
223
+ nonReentrant()
159
224
  onlyComponent(productAddress)
160
225
  returns (NftId productNftId)
161
226
  {
@@ -168,11 +233,21 @@ contract ComponentService is
168
233
 
169
234
  // get product
170
235
  IProductComponent product = IProductComponent(productAddress);
236
+
237
+ IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
238
+ // force initialization of linked components with empty values to
239
+ // ensure no components are linked upon initialization of the product
240
+ initialProductInfo.poolNftId = NftIdLib.zero();
241
+ initialProductInfo.distributionNftId = NftIdLib.zero();
242
+ initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
171
243
 
172
244
  // create info
173
245
  instanceStore.createProduct(
174
246
  productNftId,
175
- product.getInitialProductInfo());
247
+ initialProductInfo);
248
+ instanceStore.createFee(
249
+ productNftId,
250
+ product.getInitialFeeInfo());
176
251
 
177
252
  // authorize
178
253
  instanceAdmin.initializeComponentAuthorization(product);
@@ -185,62 +260,39 @@ contract ComponentService is
185
260
  )
186
261
  external
187
262
  virtual
263
+ nonReentrant()
188
264
  {
189
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
190
- IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
265
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
266
+ IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
191
267
  bool feesChanged = false;
192
268
 
193
269
  // update product fee if required
194
- if(!FeeLib.eq(productInfo.productFee, productFee)) {
195
- _logUpdateFee(productNftId, "ProductFee", productInfo.productFee, productFee);
196
- productInfo.productFee = productFee;
270
+ if(!FeeLib.eq(feeInfo.productFee, productFee)) {
271
+ _logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
272
+ feeInfo.productFee = productFee;
197
273
  feesChanged = true;
198
274
  }
199
275
 
200
276
  // update processing fee if required
201
- if(!FeeLib.eq(productInfo.processingFee, processingFee)) {
202
- _logUpdateFee(productNftId, "ProcessingFee", productInfo.processingFee, processingFee);
203
- productInfo.processingFee = processingFee;
277
+ if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
278
+ _logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
279
+ feeInfo.processingFee = processingFee;
204
280
  feesChanged = true;
205
281
  }
206
282
 
207
283
  if(feesChanged) {
208
- instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
284
+ instance.getInstanceStore().updateFee(productNftId, feeInfo);
209
285
  emit LogComponentServiceProductFeesUpdated(productNftId);
210
286
  }
211
287
  }
212
288
 
213
- function increaseProductFees(
214
- InstanceStore instanceStore,
215
- NftId productNftId,
216
- Amount feeAmount
217
- )
218
- external
219
- virtual
220
- // TODO re-enable once role granting is stable and fixed
221
- // restricted()
222
- {
223
- _checkNftType(productNftId, PRODUCT());
224
- _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
225
- }
226
-
227
-
228
- function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
229
- external
230
- virtual
231
- // TODO re-enable once role granting is stable and fixed
232
- // restricted()
233
- {
234
- _checkNftType(productNftId, PRODUCT());
235
- _changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
236
- }
237
-
238
289
  //-------- distribution -------------------------------------------------//
239
290
 
240
291
  /// @dev registers the sending component as a distribution component
241
292
  function _registerDistribution(address distributioAddress)
242
293
  internal
243
294
  virtual
295
+ nonReentrant()
244
296
  returns (NftId distributionNftId)
245
297
  {
246
298
  // register/create component info
@@ -278,94 +330,31 @@ contract ComponentService is
278
330
  external
279
331
  virtual
280
332
  {
281
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
282
- (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
333
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
334
+ (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
283
335
  instance.getInstanceReader(), distributionNftId);
284
336
  bool feesChanged = false;
285
337
 
286
338
  // update distributino fee if required
287
- if(!FeeLib.eq(productInfo.distributionFee, distributionFee)) {
288
- _logUpdateFee(productNftId, "DistributionFee", productInfo.distributionFee, distributionFee);
289
- productInfo.distributionFee = distributionFee;
339
+ if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
340
+ _logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
341
+ feeInfo.distributionFee = distributionFee;
290
342
  feesChanged = true;
291
343
  }
292
344
 
293
345
  // update min distribution owner fee if required
294
- if(!FeeLib.eq(productInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
295
- _logUpdateFee(productNftId, "MinDistributionOwnerFee", productInfo.minDistributionOwnerFee, minDistributionOwnerFee);
296
- productInfo.minDistributionOwnerFee = minDistributionOwnerFee;
346
+ if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
347
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
348
+ feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
297
349
  feesChanged = true;
298
350
  }
299
351
 
300
352
  if(feesChanged) {
301
- instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
353
+ instance.getInstanceStore().updateFee(productNftId, feeInfo);
302
354
  emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
303
355
  }
304
356
  }
305
357
 
306
- function increaseDistributionBalance(
307
- InstanceStore instanceStore,
308
- NftId distributionNftId,
309
- Amount amount,
310
- Amount feeAmount
311
- )
312
- external
313
- virtual
314
- // TODO re-enable once role granting is stable and fixed
315
- // restricted()
316
- {
317
- _checkNftType(distributionNftId, DISTRIBUTION());
318
- _changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
319
- }
320
-
321
-
322
- function decreaseDistributionBalance(
323
- InstanceStore instanceStore,
324
- NftId distributionNftId,
325
- Amount amount,
326
- Amount feeAmount
327
- )
328
- external
329
- virtual
330
- // TODO re-enable once role granting is stable and fixed
331
- // restricted()
332
- {
333
- _checkNftType(distributionNftId, DISTRIBUTION());
334
- _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
335
- }
336
-
337
- //-------- distributor -------------------------------------------------------//
338
-
339
- function increaseDistributorBalance(
340
- InstanceStore instanceStore,
341
- NftId distributorNftId,
342
- Amount amount,
343
- Amount feeAmount
344
- )
345
- external
346
- virtual
347
- // TODO re-enable once role granting is stable and fixed
348
- // restricted()
349
- {
350
- _checkNftType(distributorNftId, DISTRIBUTOR());
351
- _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
352
- }
353
-
354
- function decreaseDistributorBalance(
355
- InstanceStore instanceStore,
356
- NftId distributorNftId,
357
- Amount amount,
358
- Amount feeAmount
359
- )
360
- external
361
- virtual
362
- // TODO re-enable once role granting is stable and fixed
363
- // restricted()
364
- {
365
- _checkNftType(distributorNftId, DISTRIBUTOR());
366
- _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
367
- }
368
-
369
358
  //-------- oracle -------------------------------------------------------//
370
359
 
371
360
  function _registerOracle(address oracleAddress)
@@ -379,7 +368,7 @@ contract ComponentService is
379
368
  InstanceStore instanceStore;
380
369
  NftId productNftId;
381
370
 
382
- (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
371
+ (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
383
372
  oracleAddress,
384
373
  ORACLE());
385
374
 
@@ -415,7 +404,7 @@ contract ComponentService is
415
404
  InstanceStore instanceStore;
416
405
  NftId productNftId;
417
406
 
418
- (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
407
+ (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
419
408
  poolAddress,
420
409
  POOL());
421
410
 
@@ -448,124 +437,39 @@ contract ComponentService is
448
437
  external
449
438
  virtual
450
439
  {
451
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
452
- (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
440
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
441
+
442
+ (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
453
443
  instance.getInstanceReader(), poolNftId);
454
444
  bool feesChanged = false;
455
445
 
456
446
  // update pool fee if required
457
- if(!FeeLib.eq(productInfo.poolFee, poolFee)) {
458
- _logUpdateFee(productNftId, "PoolFee", productInfo.poolFee, poolFee);
459
- productInfo.poolFee = poolFee;
447
+ if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
448
+ _logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
449
+ feeInfo.poolFee = poolFee;
460
450
  feesChanged = true;
461
451
  }
462
452
 
463
453
  // update staking fee if required
464
- if(!FeeLib.eq(productInfo.stakingFee, stakingFee)) {
465
- _logUpdateFee(productNftId, "StakingFee", productInfo.stakingFee, stakingFee);
466
- productInfo.stakingFee = stakingFee;
454
+ if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
455
+ _logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
456
+ feeInfo.stakingFee = stakingFee;
467
457
  feesChanged = true;
468
458
  }
469
459
 
470
460
  // update performance fee if required
471
- if(!FeeLib.eq(productInfo.performanceFee, performanceFee)) {
472
- _logUpdateFee(productNftId, "PerformanceFee", productInfo.performanceFee, performanceFee);
473
- productInfo.performanceFee = performanceFee;
461
+ if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
462
+ _logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
463
+ feeInfo.performanceFee = performanceFee;
474
464
  feesChanged = true;
475
465
  }
476
466
 
477
467
  if(feesChanged) {
478
- instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
468
+ instance.getInstanceStore().updateFee(productNftId, feeInfo);
479
469
  emit LogComponentServicePoolFeesUpdated(poolNftId);
480
470
  }
481
471
  }
482
472
 
483
- function increasePoolBalance(
484
- InstanceStore instanceStore,
485
- NftId poolNftId,
486
- Amount amount,
487
- Amount feeAmount
488
- )
489
- public
490
- virtual
491
- // TODO re-enable once role granting is stable and fixed
492
- // restricted()
493
- {
494
- _checkNftType(poolNftId, POOL());
495
- _changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
496
- }
497
-
498
- function decreasePoolBalance(
499
- InstanceStore instanceStore,
500
- NftId poolNftId,
501
- Amount amount,
502
- Amount feeAmount
503
- )
504
- public
505
- virtual
506
- // TODO re-enable once role granting is stable and fixed
507
- // restricted()
508
- {
509
- _checkNftType(poolNftId, POOL());
510
- _changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
511
- }
512
-
513
- //-------- bundle -------------------------------------------------------//
514
-
515
- function increaseBundleBalance(
516
- InstanceStore instanceStore,
517
- NftId bundleNftId,
518
- Amount amount,
519
- Amount feeAmount
520
- )
521
- external
522
- virtual
523
- // TODO re-enable once role granting is stable and fixed
524
- // restricted()
525
- {
526
- _checkNftType(bundleNftId, BUNDLE());
527
- _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
528
- }
529
-
530
- function decreaseBundleBalance(
531
- InstanceStore instanceStore,
532
- NftId bundleNftId,
533
- Amount amount,
534
- Amount feeAmount
535
- )
536
- external
537
- virtual
538
- // TODO re-enable once role granting is stable and fixed
539
- // restricted()
540
- {
541
- _checkNftType(bundleNftId, BUNDLE());
542
- _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
543
- }
544
-
545
-
546
- //-------- internal functions ------------------------------------------//
547
-
548
- function _changeTargetBalance(
549
- bool increase,
550
- InstanceStore instanceStore,
551
- NftId targetNftId,
552
- Amount amount,
553
- Amount feeAmount
554
- )
555
- internal
556
- virtual
557
- {
558
- Amount totalAmount = amount + feeAmount;
559
-
560
- if(increase) {
561
- if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
562
- if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
563
- } else {
564
- if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
565
- if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
566
- }
567
- }
568
-
569
473
  /// @dev Registers the component represented by the provided address.
570
474
  function _register(
571
475
  address componentAddress, // address of component to register
@@ -615,9 +519,11 @@ contract ComponentService is
615
519
  IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
616
520
  IERC20Metadata token = componentInfo.token;
617
521
  componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
522
+ address(getRegistry()),
523
+ address(component), // initially, component is its own wallet
618
524
  address(token),
619
525
  address(instanceAdmin.authority()));
620
-
526
+
621
527
  // register component with instance
622
528
  instanceStore.createComponent(
623
529
  componentNftId,
@@ -645,7 +551,7 @@ contract ComponentService is
645
551
  }
646
552
 
647
553
 
648
- function _getLinkedProductInfo(
554
+ function _getLinkedFeeInfo(
649
555
  InstanceReader instanceReader,
650
556
  NftId componentNftId
651
557
  )
@@ -653,11 +559,11 @@ contract ComponentService is
653
559
  view
654
560
  returns(
655
561
  NftId productNftId,
656
- IComponents.ProductInfo memory info
562
+ IComponents.FeeInfo memory info
657
563
  )
658
564
  {
659
- productNftId = _getProductNftId(componentNftId);
660
- info = instanceReader.getProductInfo(productNftId);
565
+ productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
566
+ info = instanceReader.getFeeInfo(productNftId);
661
567
  }
662
568
 
663
569
 
@@ -735,11 +641,60 @@ contract ComponentService is
735
641
 
736
642
  // get initial owner and instance
737
643
  initialOwner = info.initialOwner;
738
- instance = _getInstance(registry, instanceNftId);
644
+ instance = IInstance(registry.getObjectAddress(instanceNftId));
739
645
  }
740
646
 
647
+ function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
648
+ instanceAdmin.setTargetLocked(componentAddress, locked);
649
+ }
650
+
651
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
652
+ internal
653
+ view
654
+ returns (
655
+ NftId componentNftId,
656
+ IInstance instance
657
+ )
658
+ {
659
+ return _getAndVerifyComponent(expectedType, true); // only active
660
+ }
661
+
662
+ function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
663
+ internal
664
+ view
665
+ returns (
666
+ NftId componentNftId,
667
+ IInstance instance
668
+ )
669
+ {
670
+ IRegistry.ObjectInfo memory info;
671
+ address instanceAddress;
672
+
673
+ if (expectedType != COMPONENT()) {
674
+ (info, instanceAddress) = ContractLib.getAndVerifyComponent(
675
+ getRegistry(),
676
+ msg.sender, // caller
677
+ expectedType,
678
+ isActive);
679
+ } else {
680
+ (info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
681
+ getRegistry(),
682
+ msg.sender,
683
+ isActive);
684
+ }
685
+
686
+ // get component nft id and instance
687
+ componentNftId = info.nftId;
688
+ instance = IInstance(instanceAddress);
689
+ }
741
690
 
742
691
  function _getDomain() internal pure virtual override returns(ObjectType) {
743
692
  return COMPONENT();
744
693
  }
694
+
695
+ function _checkSupportsInterface(address component) internal view {
696
+ if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
697
+ revert ErrorComponentServiceNotInstanceLinkedComponent(component);
698
+ }
699
+ }
745
700
  }
@@ -17,7 +17,7 @@ contract ComponentServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  ComponentService svc = new ComponentService();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),