@etherisc/gif-next 0.0.2-dfb8aa3-070 → 0.0.2-e016345-525

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 (375) 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 +944 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +711 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  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/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +53 -163
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +6 -68
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +121 -82
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +72 -48
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +6 -50
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +23 -0
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +50 -147
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +105 -186
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +79 -121
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +31 -117
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +168 -155
  54. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +403 -205
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  60. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  62. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -18
  64. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -17
  66. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/Instance.sol/Instance.json +96 -29
  68. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +103 -72
  70. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  72. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +303 -75
  74. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +71 -48
  76. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
  78. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +36 -46
  80. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  82. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  84. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  85. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  87. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  89. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  91. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  97. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +20 -130
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +6 -50
  105. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +6 -68
  108. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
  110. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
  112. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +6 -83
  114. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  115. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  116. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
  118. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
  120. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
  122. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  123. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +6 -89
  124. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
  126. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  127. package/artifacts/contracts/pool/Pool.sol/Pool.json +6 -107
  128. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +153 -159
  130. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
  132. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  133. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +58 -23
  134. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
  136. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  137. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +11 -68
  138. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  139. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  140. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  141. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -66
  142. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
  144. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  145. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
  146. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  147. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
  149. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  151. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -50
  152. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  153. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
  155. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
  157. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.json +50 -34
  159. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
  161. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  162. package/artifacts/contracts/product/Product.sol/Product.json +11 -68
  163. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
  165. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
  167. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  168. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +24 -0
  170. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  171. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  172. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -38
  174. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
  176. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  177. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
  178. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
  180. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  182. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
  184. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  186. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  188. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  189. package/artifacts/contracts/shared/Component.sol/Component.json +6 -54
  190. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +216 -410
  192. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +65 -61
  194. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  197. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  199. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  201. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +6 -36
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +107 -245
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +6 -50
  207. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  209. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  215. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  216. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +6 -68
  217. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  219. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  220. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  222. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  224. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  225. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  227. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  229. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  230. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  231. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  233. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  234. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  236. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  237. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +24 -72
  238. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  241. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  242. package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
  243. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  245. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -46
  247. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  249. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +36 -20
  251. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
  253. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  255. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  256. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  257. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  258. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  262. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  264. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  267. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  268. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  269. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  271. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  275. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  277. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  279. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  281. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
  283. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  285. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  295. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  296. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  298. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  300. package/contracts/accounting/AccountingService.sol +244 -0
  301. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  302. package/contracts/accounting/IAccountingService.sol +42 -0
  303. package/contracts/authorization/AccessAdmin.sol +21 -1
  304. package/contracts/distribution/BasicDistribution.sol +6 -6
  305. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  306. package/contracts/distribution/Distribution.sol +32 -30
  307. package/contracts/distribution/DistributionService.sol +28 -26
  308. package/contracts/distribution/IDistributionService.sol +5 -6
  309. package/contracts/examples/fire/FirePool.sol +22 -5
  310. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  311. package/contracts/examples/fire/FireProduct.sol +29 -8
  312. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  313. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  314. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  315. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  316. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  317. package/contracts/examples/unpermissioned/SimpleProduct.sol +22 -21
  318. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  319. package/contracts/instance/BundleSet.sol +38 -34
  320. package/contracts/instance/IInstance.sol +7 -2
  321. package/contracts/instance/IInstanceService.sol +7 -9
  322. package/contracts/instance/Instance.sol +16 -9
  323. package/contracts/instance/InstanceAdmin.sol +20 -12
  324. package/contracts/instance/InstanceAuthorizationV3.sol +42 -14
  325. package/contracts/instance/InstanceReader.sol +86 -2
  326. package/contracts/instance/InstanceService.sol +38 -58
  327. package/contracts/instance/RiskSet.sol +119 -0
  328. package/contracts/instance/base/ObjectSet.sol +24 -25
  329. package/contracts/instance/module/IComponents.sol +1 -2
  330. package/contracts/instance/module/IPolicy.sol +2 -1
  331. package/contracts/instance/module/IRisk.sol +1 -0
  332. package/contracts/oracle/OracleService.sol +87 -69
  333. package/contracts/pool/BasicPool.sol +24 -3
  334. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  335. package/contracts/pool/BundleService.sol +23 -91
  336. package/contracts/pool/IBundleService.sol +2 -23
  337. package/contracts/pool/IPoolComponent.sol +1 -7
  338. package/contracts/pool/IPoolService.sol +12 -26
  339. package/contracts/pool/Pool.sol +112 -102
  340. package/contracts/pool/PoolService.sol +167 -96
  341. package/contracts/product/ApplicationService.sol +12 -12
  342. package/contracts/product/BasicProduct.sol +7 -11
  343. package/contracts/product/BasicProductAuthorization.sol +1 -2
  344. package/contracts/product/ClaimService.sol +3 -1
  345. package/contracts/product/IApplicationService.sol +5 -2
  346. package/contracts/product/IPolicyService.sol +17 -7
  347. package/contracts/product/PolicyService.sol +241 -196
  348. package/contracts/product/Product.sol +12 -40
  349. package/contracts/product/RiskService.sol +14 -3
  350. package/contracts/registry/IRegistry.sol +2 -0
  351. package/contracts/registry/Registry.sol +9 -1
  352. package/contracts/registry/RegistryAdmin.sol +21 -12
  353. package/contracts/registry/ReleaseRegistry.sol +2 -18
  354. package/contracts/registry/ServiceAuthorizationV3.sol +22 -41
  355. package/contracts/shared/Component.sol +44 -90
  356. package/contracts/shared/ComponentService.sol +160 -212
  357. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  358. package/contracts/shared/ContractLib.sol +196 -10
  359. package/contracts/shared/IComponent.sol +1 -13
  360. package/contracts/shared/IComponentService.sol +20 -24
  361. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  362. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  363. package/contracts/shared/Registerable.sol +0 -2
  364. package/contracts/shared/RegistryLinked.sol +6 -12
  365. package/contracts/shared/TokenHandler.sol +316 -66
  366. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  367. package/contracts/staking/IStaking.sol +9 -4
  368. package/contracts/staking/Staking.sol +39 -21
  369. package/contracts/staking/StakingService.sol +41 -8
  370. package/contracts/type/Key32.sol +2 -2
  371. package/contracts/type/Key32Set.sol +62 -0
  372. package/contracts/type/NftId.sol +6 -0
  373. package/contracts/type/ObjectType.sol +10 -0
  374. package/contracts/type/RiskId.sol +18 -6
  375. package/package.json +3 -3
@@ -4,9 +4,10 @@ pragma solidity ^0.8.20;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {Amount, AmountLib} from "../type/Amount.sol";
7
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
8
7
  import {ContractLib} from "../shared/ContractLib.sol";
9
8
  import {Fee, FeeLib} from "../type/Fee.sol";
9
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
10
+ import {IComponent} from "../shared/IComponent.sol";
10
11
  import {IComponents} from "../instance/module/IComponents.sol";
11
12
  import {IComponentService} from "./IComponentService.sol";
12
13
  import {IInstance} from "../instance/IInstance.sol";
@@ -15,32 +16,56 @@ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
15
16
  import {InstanceReader} from "../instance/InstanceReader.sol";
16
17
  import {InstanceStore} from "../instance/InstanceStore.sol";
17
18
  import {IInstanceService} from "../instance/IInstanceService.sol";
18
- import {IRegisterable} from "../shared/IRegisterable.sol";
19
19
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
20
20
  import {IProductComponent} from "../product/IProductComponent.sol";
21
+ import {IRegisterable} from "../shared/IRegisterable.sol";
21
22
  import {IRegistry} from "../registry/IRegistry.sol";
22
23
  import {IRegistryService} from "../registry/IRegistryService.sol";
24
+
25
+ import {Amount, AmountLib} from "../type/Amount.sol";
26
+ import {ContractLib} from "../shared/ContractLib.sol";
27
+ import {Fee, FeeLib} from "../type/Fee.sol";
23
28
  import {KEEP_STATE} from "../type/StateId.sol";
24
29
  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";
30
+ import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
31
+ import {Service} from "../shared/Service.sol";
32
+ import {TokenHandler} from "../shared/TokenHandler.sol";
27
33
  import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
34
+ import {VersionPart} from "../type/Version.sol";
35
+
28
36
 
29
37
  contract ComponentService is
30
- ComponentVerifyingService,
38
+ Service,
31
39
  IComponentService
32
40
  {
33
-
34
41
  bool private constant INCREASE = true;
35
42
  bool private constant DECREASE = false;
36
43
 
44
+ IAccountingService private _accountingService;
37
45
  IRegistryService private _registryService;
38
46
  IInstanceService private _instanceService;
39
47
 
40
48
  modifier onlyComponent(address component) {
41
- if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
42
- revert ErrorComponentServiceNotInstanceLinkedComponent(component);
49
+ _checkSupportsInterface(component);
50
+ _;
51
+ }
52
+
53
+ modifier onlyInstance() {
54
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
55
+ if (instanceNftId.eqz()) {
56
+ revert ErrorComponentServiceNotRegistered(msg.sender);
57
+ }
58
+
59
+ ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
60
+ if (objectType != INSTANCE()) {
61
+ revert ErrorComponentServiceNotInstance(msg.sender, objectType);
62
+ }
63
+
64
+ VersionPart instanceVersion = IInstance(msg.sender).getRelease();
65
+ if (instanceVersion != getVersion().toMajorPart()) {
66
+ revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
43
67
  }
68
+
44
69
  _;
45
70
  }
46
71
 
@@ -60,6 +85,7 @@ contract ComponentService is
60
85
 
61
86
  _initializeService(registryAddress, authority, owner);
62
87
 
88
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
63
89
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
64
90
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
65
91
 
@@ -90,43 +116,84 @@ contract ComponentService is
90
116
  revert ErrorComponentServiceTypeNotSupported(component, componentType);
91
117
  }
92
118
 
119
+ function approveTokenHandler(
120
+ IERC20Metadata token,
121
+ Amount amount
122
+ )
123
+ external
124
+ virtual
125
+ {
126
+ // checks
127
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
128
+ TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
129
+ componentNftId).tokenHandler;
93
130
 
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;
131
+ // effects
132
+ tokenHandler.approve(token, amount);
133
+ }
98
134
 
99
- if (newWallet == address(0)) {
100
- revert ErrorComponentServiceNewWalletAddressZero();
101
- }
102
135
 
103
- if (currentWallet == address(0)) {
104
- revert ErrorComponentServiceWalletAddressZero();
105
- }
136
+ function approveStakingTokenHandler(
137
+ IERC20Metadata token,
138
+ Amount amount
139
+ )
140
+ external
141
+ virtual
142
+ {
143
+ // checks
144
+ ContractLib.getAndVerifyStaking(
145
+ getRegistry(),
146
+ msg.sender); // only active
147
+
148
+ // effects
149
+ TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
150
+ tokenHandler.approve(token, amount);
151
+ }
106
152
 
107
- if (newWallet == currentWallet) {
108
- revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
109
- }
110
153
 
111
- info.wallet = newWallet;
112
- instance.getInstanceStore().updateComponent(componentNftId, info, KEEP_STATE());
113
- emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
154
+ function setWallet(address newWallet)
155
+ external
156
+ virtual
157
+ {
158
+ // checks
159
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
160
+ TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
161
+ componentNftId).tokenHandler;
162
+
163
+ // effects
164
+ tokenHandler.setWallet(newWallet);
114
165
  }
115
166
 
116
- // TODO implement
117
- function lock() external virtual {}
167
+ /// @inheritdoc IComponentService
168
+ function setLockedFromInstance(address componentAddress, bool locked)
169
+ external
170
+ virtual
171
+ onlyInstance()
172
+ {
173
+ address instanceAddress = msg.sender;
174
+ // NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
175
+ IInstance instance = IInstance(instanceAddress);
176
+ _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
177
+ }
118
178
 
119
- // TODO implement
120
- function unlock() external virtual {}
179
+ /// @inheritdoc IComponentService
180
+ function setLockedFromComponent(address componentAddress, bool locked)
181
+ external
182
+ virtual
183
+ onlyComponent(msg.sender)
184
+ {
185
+ (, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
186
+ _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
187
+ }
121
188
 
122
189
  function withdrawFees(Amount amount)
123
190
  external
124
191
  virtual
125
192
  returns (Amount withdrawnAmount)
126
193
  {
127
- (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
194
+ (NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
128
195
  IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
129
- address componentWallet = info.wallet;
196
+ address componentWallet = info.tokenHandler.getWallet();
130
197
 
131
198
  // determine withdrawn amount
132
199
  withdrawnAmount = amount;
@@ -142,7 +209,7 @@ contract ComponentService is
142
209
  }
143
210
 
144
211
  // decrease fee counters by withdrawnAmount
145
- _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
212
+ _accountingService.decreaseComponentFees(instance.getInstanceStore(), componentNftId, withdrawnAmount);
146
213
 
147
214
  // transfer amount to component owner
148
215
  address componentOwner = getRegistry().ownerOf(componentNftId);
@@ -186,7 +253,7 @@ contract ComponentService is
186
253
  external
187
254
  virtual
188
255
  {
189
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
256
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
190
257
  IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
191
258
  bool feesChanged = false;
192
259
 
@@ -210,31 +277,6 @@ contract ComponentService is
210
277
  }
211
278
  }
212
279
 
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
280
  //-------- distribution -------------------------------------------------//
239
281
 
240
282
  /// @dev registers the sending component as a distribution component
@@ -278,7 +320,7 @@ contract ComponentService is
278
320
  external
279
321
  virtual
280
322
  {
281
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
323
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
282
324
  (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
283
325
  instance.getInstanceReader(), distributionNftId);
284
326
  bool feesChanged = false;
@@ -303,69 +345,6 @@ contract ComponentService is
303
345
  }
304
346
  }
305
347
 
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
348
  //-------- oracle -------------------------------------------------------//
370
349
 
371
350
  function _registerOracle(address oracleAddress)
@@ -379,7 +358,7 @@ contract ComponentService is
379
358
  InstanceStore instanceStore;
380
359
  NftId productNftId;
381
360
 
382
- (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
361
+ (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
383
362
  oracleAddress,
384
363
  ORACLE());
385
364
 
@@ -415,7 +394,7 @@ contract ComponentService is
415
394
  InstanceStore instanceStore;
416
395
  NftId productNftId;
417
396
 
418
- (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
397
+ (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
419
398
  poolAddress,
420
399
  POOL());
421
400
 
@@ -448,7 +427,8 @@ contract ComponentService is
448
427
  external
449
428
  virtual
450
429
  {
451
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
430
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
431
+
452
432
  (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
453
433
  instance.getInstanceReader(), poolNftId);
454
434
  bool feesChanged = false;
@@ -480,92 +460,6 @@ contract ComponentService is
480
460
  }
481
461
  }
482
462
 
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
463
  /// @dev Registers the component represented by the provided address.
570
464
  function _register(
571
465
  address componentAddress, // address of component to register
@@ -615,8 +509,13 @@ contract ComponentService is
615
509
  IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
616
510
  IERC20Metadata token = componentInfo.token;
617
511
  componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
512
+ address(getRegistry()),
513
+ address(component), // initially, component is its own wallet
618
514
  address(token),
619
515
  address(instanceAdmin.authority()));
516
+
517
+ // set token handler allowance to max
518
+ // componentInfo.tokenHandler.approve(token, AmountLib.max());
620
519
 
621
520
  // register component with instance
622
521
  instanceStore.createComponent(
@@ -656,7 +555,7 @@ contract ComponentService is
656
555
  IComponents.ProductInfo memory info
657
556
  )
658
557
  {
659
- productNftId = _getProductNftId(componentNftId);
558
+ productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
660
559
  info = instanceReader.getProductInfo(productNftId);
661
560
  }
662
561
 
@@ -735,11 +634,60 @@ contract ComponentService is
735
634
 
736
635
  // get initial owner and instance
737
636
  initialOwner = info.initialOwner;
738
- instance = _getInstance(registry, instanceNftId);
637
+ instance = IInstance(registry.getObjectAddress(instanceNftId));
638
+ }
639
+
640
+ function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
641
+ instanceAdmin.setTargetLocked(componentAddress, locked);
642
+ }
643
+
644
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
645
+ internal
646
+ view
647
+ returns (
648
+ NftId componentNftId,
649
+ IInstance instance
650
+ )
651
+ {
652
+ return _getAndVerifyComponent(expectedType, true); // only active
739
653
  }
740
654
 
655
+ function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
656
+ internal
657
+ view
658
+ returns (
659
+ NftId componentNftId,
660
+ IInstance instance
661
+ )
662
+ {
663
+ IRegistry.ObjectInfo memory info;
664
+ address instanceAddress;
665
+
666
+ if (expectedType != COMPONENT()) {
667
+ (info, instanceAddress) = ContractLib.getAndVerifyComponent(
668
+ getRegistry(),
669
+ msg.sender, // caller
670
+ expectedType,
671
+ isActive);
672
+ } else {
673
+ (info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
674
+ getRegistry(),
675
+ msg.sender,
676
+ isActive);
677
+ }
678
+
679
+ // get component nft id and instance
680
+ componentNftId = info.nftId;
681
+ instance = IInstance(instanceAddress);
682
+ }
741
683
 
742
684
  function _getDomain() internal pure virtual override returns(ObjectType) {
743
685
  return COMPONENT();
744
686
  }
687
+
688
+ function _checkSupportsInterface(address component) internal view {
689
+ if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
690
+ revert ErrorComponentServiceNotInstanceLinkedComponent(component);
691
+ }
692
+ }
745
693
  }
@@ -5,7 +5,7 @@ import {IInstance} from "../instance/IInstance.sol";
5
5
  import {InstanceReader} from "../instance/InstanceReader.sol";
6
6
  import {IRegistry} from "../registry/IRegistry.sol";
7
7
  import {NftId} from "../type/NftId.sol";
8
- import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
8
+ import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
9
9
  import {Service} from "../shared/Service.sol";
10
10
 
11
11
 
@@ -27,12 +27,12 @@ abstract contract ComponentVerifyingService is
27
27
  view
28
28
  returns(
29
29
  NftId componentNftId,
30
- IRegistry.ObjectInfo memory componentInfo,
30
+ IRegistry.ObjectInfo memory objectInfo,
31
31
  IInstance instance
32
32
  )
33
33
  {
34
34
  componentNftId = getRegistry().getNftIdForAddress(msg.sender);
35
- (componentInfo, instance) = _getAndVerifyComponentInfo(
35
+ (objectInfo, instance) = _getAndVerifyComponentInfo(
36
36
  componentNftId,
37
37
  expectedType,
38
38
  true); // only active
@@ -82,7 +82,15 @@ abstract contract ComponentVerifyingService is
82
82
  }
83
83
  }
84
84
 
85
- instance = _getInstanceForComponent(registry, info);
85
+ if (info.objectType == STAKING()) {
86
+ return (info, instance);
87
+ }
88
+
89
+ if (info.objectType == PRODUCT()) {
90
+ instance = _getInstance(registry, info.parentNftId);
91
+ } else {
92
+ instance = _getInstanceForComponent(registry, info.parentNftId);
93
+ }
86
94
 
87
95
  // ensure component is not locked
88
96
  if (onlyActive) {
@@ -93,21 +101,15 @@ abstract contract ComponentVerifyingService is
93
101
  }
94
102
 
95
103
 
96
- function _getInstanceForComponent(IRegistry registry, IRegistry.ObjectInfo memory componentInfo)
104
+ function _getInstanceForComponent(IRegistry registry, NftId productNftId)
97
105
  internal
98
106
  view
99
107
  returns (IInstance instance)
100
108
  {
101
- // parent of product is instance
102
- if (componentInfo.objectType == PRODUCT()) {
103
- instance = _getInstance(registry, componentInfo.parentNftId);
104
- // parent of other types is product
105
- } else {
106
- instance = _getInstance(
109
+ return _getInstance(
107
110
  registry,
108
111
  registry.getObjectInfo(
109
- componentInfo.parentNftId).parentNftId);
110
- }
112
+ productNftId).parentNftId);
111
113
  }
112
114
 
113
115