@etherisc/gif-next 0.0.2-a3c2eef-755 → 0.0.2-a49c403-485

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 (453) hide show
  1. package/README.md +31 -5
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1518 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -266
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +103 -16
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +112 -139
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +88 -217
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -0
  81. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -131
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1432 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +455 -55
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +128 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +193 -0
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -251
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +188 -53
  102. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -390
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -88
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +60 -36
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -0
  114. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  116. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +143 -72
  118. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +66 -54
  120. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
  123. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +102 -6
  125. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  126. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  127. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
  128. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  129. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +304 -57
  131. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +103 -43
  133. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  134. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  135. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  137. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  138. package/artifacts/contracts/product/Product.sol/Product.json +32 -191
  139. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  141. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  143. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  144. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  145. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  146. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  147. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  148. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  149. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  150. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  151. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  152. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
  154. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  156. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  157. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  158. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  159. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  160. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  162. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  164. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  166. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  167. package/artifacts/contracts/shared/Component.sol/Component.json +0 -38
  168. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  169. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +326 -86
  170. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +89 -61
  172. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  176. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
  178. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  180. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  182. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  184. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  188. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  189. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -91
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  193. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  194. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  195. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  196. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  197. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  198. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  200. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  201. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  202. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  204. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  205. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  206. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  207. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  208. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +53 -6
  209. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +4 -0
  210. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +42 -0
  211. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  212. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
  215. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  216. package/artifacts/contracts/staking/Staking.sol/Staking.json +68 -82
  217. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  218. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  219. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +52 -40
  221. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  223. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  225. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  227. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  229. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  230. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  231. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  232. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  233. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  235. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  237. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  239. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  241. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  243. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  244. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  245. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  247. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  248. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  249. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  251. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  253. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  255. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  257. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  259. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  261. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  263. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  265. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  267. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  269. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  271. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  273. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  275. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  277. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  279. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  281. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  282. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  283. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  284. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  285. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  286. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  287. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  288. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  289. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  290. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  291. package/contracts/authorization/Authorization.sol +218 -0
  292. package/contracts/authorization/IAccess.sol +48 -0
  293. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  294. package/contracts/authorization/IAuthorization.sol +54 -0
  295. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  296. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  297. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  298. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  299. package/contracts/distribution/BasicDistribution.sol +138 -0
  300. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  301. package/contracts/distribution/Distribution.sol +144 -110
  302. package/contracts/distribution/DistributionService.sol +58 -32
  303. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  304. package/contracts/distribution/IDistributionComponent.sol +25 -39
  305. package/contracts/distribution/IDistributionService.sol +15 -1
  306. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  307. package/contracts/instance/IInstance.sol +8 -9
  308. package/contracts/instance/IInstanceService.sol +13 -18
  309. package/contracts/instance/Instance.sol +61 -70
  310. package/contracts/instance/InstanceAdmin.sol +202 -267
  311. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  312. package/contracts/instance/InstanceReader.sol +22 -9
  313. package/contracts/instance/InstanceService.sol +74 -70
  314. package/contracts/instance/InstanceServiceManager.sol +2 -6
  315. package/contracts/instance/InstanceStore.sol +13 -5
  316. package/contracts/instance/base/ObjectLifecycle.sol +104 -0
  317. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  318. package/contracts/instance/module/IBundle.sol +1 -1
  319. package/contracts/instance/module/IComponents.sol +0 -5
  320. package/contracts/instance/module/IDistribution.sol +0 -1
  321. package/contracts/instance/module/IPolicy.sol +1 -1
  322. package/contracts/mock/Dip.sol +1 -1
  323. package/contracts/oracle/BasicOracle.sol +48 -0
  324. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  325. package/contracts/oracle/IOracle.sol +16 -0
  326. package/contracts/oracle/IOracleComponent.sol +2 -1
  327. package/contracts/oracle/Oracle.sol +72 -51
  328. package/contracts/oracle/OracleServiceManager.sol +2 -5
  329. package/contracts/pool/BasicPool.sol +166 -0
  330. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  331. package/contracts/pool/BundleService.sol +157 -29
  332. package/contracts/pool/BundleServiceManager.sol +2 -5
  333. package/contracts/pool/IBundleService.sol +28 -3
  334. package/contracts/pool/IPoolComponent.sol +6 -60
  335. package/contracts/pool/IPoolService.sol +13 -13
  336. package/contracts/pool/Pool.sol +165 -136
  337. package/contracts/pool/PoolService.sol +126 -71
  338. package/contracts/pool/PoolServiceManager.sol +2 -5
  339. package/contracts/product/ApplicationService.sol +12 -36
  340. package/contracts/product/ApplicationServiceManager.sol +2 -2
  341. package/contracts/product/BasicProduct.sol +52 -0
  342. package/contracts/product/BasicProductAuthorization.sol +43 -0
  343. package/contracts/product/ClaimService.sol +14 -39
  344. package/contracts/product/ClaimServiceManager.sol +2 -2
  345. package/contracts/product/IClaimService.sol +1 -0
  346. package/contracts/product/IPolicyService.sol +13 -6
  347. package/contracts/product/IProductComponent.sol +7 -9
  348. package/contracts/product/PolicyService.sol +183 -99
  349. package/contracts/product/PolicyServiceManager.sol +2 -5
  350. package/contracts/product/PricingServiceManager.sol +2 -5
  351. package/contracts/product/Product.sol +122 -88
  352. package/contracts/product/ProductService.sol +7 -32
  353. package/contracts/product/ProductServiceManager.sol +2 -5
  354. package/contracts/registry/IRegistry.sol +26 -16
  355. package/contracts/registry/IRegistryService.sol +6 -6
  356. package/contracts/registry/Registry.sol +81 -87
  357. package/contracts/registry/RegistryAdmin.sol +118 -86
  358. package/contracts/registry/RegistryService.sol +4 -18
  359. package/contracts/registry/RegistryServiceManager.sol +2 -2
  360. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  361. package/contracts/registry/ReleaseRegistry.sol +485 -0
  362. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  363. package/contracts/registry/TokenRegistry.sol +2 -2
  364. package/contracts/shared/Component.sol +21 -21
  365. package/contracts/shared/ComponentService.sol +91 -68
  366. package/contracts/shared/ComponentServiceManager.sol +2 -2
  367. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  368. package/contracts/shared/IComponent.sol +4 -3
  369. package/contracts/shared/IComponentService.sol +15 -9
  370. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  371. package/contracts/shared/IKeyValueStore.sol +1 -0
  372. package/contracts/shared/ILifecycle.sol +1 -2
  373. package/contracts/shared/IService.sol +1 -1
  374. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  375. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  376. package/contracts/shared/KeyValueStore.sol +6 -2
  377. package/contracts/shared/Lifecycle.sol +16 -69
  378. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  379. package/contracts/shared/NftOwnable.sol +2 -2
  380. package/contracts/shared/PolicyHolder.sol +2 -5
  381. package/contracts/shared/Service.sol +3 -4
  382. package/contracts/shared/TokenHandler.sol +4 -0
  383. package/contracts/shared/TokenTransferLib.sol +60 -0
  384. package/contracts/staking/IStaking.sol +1 -2
  385. package/contracts/staking/IStakingService.sol +12 -5
  386. package/contracts/staking/Staking.sol +20 -17
  387. package/contracts/staking/StakingLifecycle.sol +23 -0
  388. package/contracts/staking/StakingManager.sol +2 -6
  389. package/contracts/staking/StakingReader.sol +12 -16
  390. package/contracts/staking/StakingService.sol +8 -12
  391. package/contracts/staking/StakingServiceManager.sol +2 -2
  392. package/contracts/staking/StakingStore.sol +15 -23
  393. package/contracts/type/Amount.sol +12 -5
  394. package/contracts/type/Blocknumber.sol +7 -1
  395. package/contracts/type/ObjectType.sol +37 -7
  396. package/contracts/type/Referral.sol +1 -0
  397. package/contracts/type/RoleId.sol +55 -82
  398. package/contracts/type/Seconds.sol +13 -1
  399. package/contracts/type/Timestamp.sol +11 -1
  400. package/contracts/type/UFixed.sol +34 -9
  401. package/contracts/type/Version.sol +3 -1
  402. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  403. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  404. package/package.json +3 -3
  405. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  406. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  407. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  408. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  409. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  410. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  411. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  412. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  413. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  414. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  415. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  416. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  417. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  418. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  419. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  420. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  421. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  422. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  423. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  424. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  425. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  426. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  427. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  428. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  429. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  430. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  431. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  432. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  433. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  434. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  435. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  436. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  437. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  438. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  439. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  440. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  441. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  442. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  443. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  444. package/contracts/registry/ReleaseManager.sol +0 -527
  445. package/contracts/shared/AccessManagerCustom.sol +0 -741
  446. package/contracts/shared/AccessManagerExtended.sol +0 -481
  447. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  448. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  449. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  450. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  451. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  452. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  453. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -6,7 +6,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
7
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
8
 
9
- import {Amount} from "../type/Amount.sol";
9
+ import {Amount, AmountLib} from "../type/Amount.sol";
10
10
  import {IComponent} from "./IComponent.sol";
11
11
  import {IComponents} from "../instance/module/IComponents.sol";
12
12
  import {NftId, NftIdLib} from "../type/NftId.sol";
@@ -26,7 +26,6 @@ abstract contract Component is
26
26
  struct ComponentStorage {
27
27
  string _name; // unique (per instance) component name
28
28
  IERC20Metadata _token; // token for this component
29
- TokenHandler _tokenHandler;
30
29
  address _wallet;
31
30
  bool _isInterceptor;
32
31
  bytes _data;
@@ -40,6 +39,12 @@ abstract contract Component is
40
39
  _;
41
40
  }
42
41
 
42
+ modifier onlyNftOwner(NftId nftId) {
43
+ if(msg.sender != getRegistry().ownerOf(nftId)) {
44
+ revert ErrorNftOwnableNotOwner(msg.sender);
45
+ }
46
+ _;
47
+ }
43
48
 
44
49
  function _getComponentStorage() private pure returns (ComponentStorage storage $) {
45
50
  assembly {
@@ -78,7 +83,6 @@ abstract contract Component is
78
83
  ComponentStorage storage $ = _getComponentStorage();
79
84
  $._name = name;
80
85
  $._token = IERC20Metadata(token);
81
- $._tokenHandler = TokenHandler(address(0));
82
86
  $._wallet = address(this);
83
87
  $._isInterceptor = isInterceptor;
84
88
  $._data = componentData;
@@ -105,11 +109,11 @@ abstract contract Component is
105
109
  revert ErrorComponentWalletNotComponent();
106
110
  }
107
111
 
112
+ emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
113
+
108
114
  IERC20Metadata(token).approve(
109
115
  address(getTokenHandler()),
110
116
  spendingLimitAmount.toInt());
111
-
112
- emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
113
117
  }
114
118
 
115
119
  function setWallet(address newWallet)
@@ -128,7 +132,7 @@ abstract contract Component is
128
132
  // move tokens from component smart contract to external wallet
129
133
  } else {
130
134
  // move tokens from external wallet to component smart contract or another external wallet
131
- uint256 allowance = token.allowance(currentWallet, address(this));
135
+ uint256 allowance = token.allowance(currentWallet, address(getTokenHandler()));
132
136
  if (allowance < currentBalance) {
133
137
  revert ErrorComponentWalletAllowanceTooSmall(currentWallet, newWallet, allowance, currentBalance);
134
138
  }
@@ -140,14 +144,15 @@ abstract contract Component is
140
144
 
141
145
  // interactions
142
146
  if (currentBalance > 0) {
147
+ emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
148
+
143
149
  // transfer tokens from current wallet to new wallet
144
150
  if (currentWallet == address(this)) {
145
151
  // transferFrom requires self allowance too
146
- token.approve(address(this), currentBalance);
152
+ token.approve(address(getTokenHandler()), currentBalance);
147
153
  }
148
154
 
149
- SafeERC20.safeTransferFrom(token, currentWallet, newWallet, currentBalance);
150
- emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
155
+ getTokenHandler().transfer(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
151
156
  }
152
157
  }
153
158
 
@@ -253,29 +258,24 @@ abstract contract Component is
253
258
  }
254
259
 
255
260
 
256
- /// @dev for component contracts that hold its own component information
257
- /// this function creates and sets a token hanlder for the components tokens
258
- function _createAndSetTokenHandler()
259
- internal
260
- {
261
- ComponentStorage storage $ = _getComponentStorage();
262
- $._tokenHandler = new TokenHandler(address($._token));
263
- }
264
-
265
-
266
261
  /// @dev depending on the source of the component information this function needs to be overwritten.
267
262
  /// eg for instance linked components that externally store this information with the instance store contract
268
263
  function _getComponentInfo() internal virtual view returns (IComponents.ComponentInfo memory info) {
269
264
  ComponentStorage storage $ = _getComponentStorage();
270
-
265
+
271
266
  return IComponents.ComponentInfo({
272
267
  name: $._name,
273
268
  productNftId: NftIdLib.zero(),
274
269
  token: $._token,
275
- tokenHandler: $._tokenHandler,
270
+ tokenHandler: TokenHandler(address(0)),
276
271
  wallet: $._wallet, // initial wallet address
277
272
  data: $._data // user specific component data
278
273
  });
279
274
  }
280
275
 
276
+ function _approveTokenHandler(uint256 amount) internal {
277
+ ComponentStorage storage $ = _getComponentStorage();
278
+ $._token.approve(address(getComponentInfo().tokenHandler), amount);
279
+ }
280
+
281
281
  }
@@ -4,30 +4,28 @@ pragma solidity ^0.8.20;
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
5
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
6
6
  import {Fee, FeeLib} from "../type/Fee.sol";
7
- import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
- import {IRegistryService} from "../registry/IRegistryService.sol";
10
- import {IInstance} from "../instance/IInstance.sol";
11
- import {IAccess} from "../instance/module/IAccess.sol";
12
- import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
14
- import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, POLICY_SERVICE_ROLE, PRODUCT_SERVICE_ROLE} from "../type/RoleId.sol";
15
- import {KEEP_STATE} from "../type/StateId.sol";
16
7
  import {IComponents} from "../instance/module/IComponents.sol";
17
8
  import {IComponentService} from "./IComponentService.sol";
18
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
11
+ import {InstanceReader} from "../instance/InstanceReader.sol";
12
+ import {InstanceStore} from "../instance/InstanceStore.sol";
19
13
  import {IInstanceService} from "../instance/IInstanceService.sol";
20
14
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
21
15
  import {IProductComponent} from "../product/IProductComponent.sol";
22
- import {InstanceReader} from "../instance/InstanceReader.sol";
23
- import {InstanceStore} from "../instance/InstanceStore.sol";
16
+ import {IRegistry} from "../registry/IRegistry.sol";
17
+ import {IRegistryService} from "../registry/IRegistryService.sol";
18
+ import {KEEP_STATE} from "../type/StateId.sol";
19
+ import {NftId} from "../type/NftId.sol";
20
+ import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
21
+ import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
24
22
  import {TokenHandler} from "./TokenHandler.sol";
23
+ import {TokenTransferLib} from "../shared/TokenTransferLib.sol";
25
24
 
26
25
  contract ComponentService is
27
26
  ComponentVerifyingService,
28
27
  IComponentService
29
28
  {
30
-
31
29
  error ErrorComponentServiceAlreadyRegistered(address component);
32
30
  error ErrorComponentServiceNotComponent(address component);
33
31
  error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
@@ -94,6 +92,37 @@ contract ComponentService is
94
92
  // TODO implement
95
93
  function unlock() external virtual {}
96
94
 
95
+ function withdrawFees(Amount amount)
96
+ external
97
+ virtual
98
+ returns (Amount withdrawnAmount)
99
+ {
100
+ (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
101
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
102
+ address componentWallet = info.wallet;
103
+
104
+ // determine withdrawn amount
105
+ withdrawnAmount = amount;
106
+ if (withdrawnAmount.gte(AmountLib.max())) {
107
+ withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
108
+ } else if (withdrawnAmount.eqz()) {
109
+ revert ErrorComponentServiceWithdrawAmountIsZero();
110
+ } else {
111
+ Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
112
+ if (withdrawnAmount.gt(withdrawLimit)) {
113
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
114
+ }
115
+ }
116
+
117
+ // decrease fee counters by withdrawnAmount
118
+ _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
119
+
120
+ // transfer amount to component owner
121
+ address componentOwner = getRegistry().ownerOf(componentNftId);
122
+ emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
123
+ TokenTransferLib.distributeTokens(componentWallet, componentOwner, withdrawnAmount, info.tokenHandler);
124
+ }
125
+
97
126
 
98
127
  //-------- product ------------------------------------------------------//
99
128
 
@@ -102,12 +131,6 @@ contract ComponentService is
102
131
  virtual
103
132
  {
104
133
  address contractAddress = msg.sender;
105
- RoleId[] memory roles = new RoleId[](1);
106
- bytes4[][] memory selectors = new bytes4[][](1);
107
-
108
- // authorizaion for distribution owner
109
- roles[0] = PRODUCT_OWNER_ROLE();
110
- selectors[0] = _createSelectors(IProductComponent.setFees.selector);
111
134
 
112
135
  // register/create component setup
113
136
  (
@@ -117,9 +140,7 @@ contract ComponentService is
117
140
  ) = _register(
118
141
  contractAddress,
119
142
  PRODUCT(),
120
- PRODUCT_OWNER_ROLE(),
121
- roles,
122
- selectors);
143
+ PRODUCT_OWNER_ROLE());
123
144
 
124
145
  // create product info
125
146
  IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
@@ -193,24 +214,12 @@ contract ComponentService is
193
214
  virtual
194
215
  {
195
216
  address contractAddress = msg.sender;
196
- RoleId[] memory roles = new RoleId[](2);
197
- bytes4[][] memory selectors = new bytes4[][](2);
198
-
199
- // authorizaion for distribution owner
200
- roles[0] = DISTRIBUTION_OWNER_ROLE();
201
- selectors[0] = _createSelectors(IDistributionComponent.setFees.selector);
202
-
203
- // authorizaion for product service
204
- roles[1] = PRODUCT_SERVICE_ROLE();
205
- selectors[1] = _createSelectors(IDistributionComponent.processRenewal.selector);
206
217
 
207
218
  // register/create component info
208
219
  _register(
209
220
  contractAddress,
210
221
  DISTRIBUTION(),
211
- DISTRIBUTION_OWNER_ROLE(),
212
- roles,
213
- selectors);
222
+ DISTRIBUTION_OWNER_ROLE());
214
223
  }
215
224
 
216
225
 
@@ -275,6 +284,36 @@ contract ComponentService is
275
284
  _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
276
285
  }
277
286
 
287
+ //-------- distributor -------------------------------------------------------//
288
+
289
+ function increaseDistributorBalance(
290
+ InstanceStore instanceStore,
291
+ NftId distributorNftId,
292
+ Amount amount,
293
+ Amount feeAmount
294
+ )
295
+ external
296
+ virtual
297
+ // TODO re-enable once role granting is stable and fixed
298
+ // restricted()
299
+ {
300
+ _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
301
+ }
302
+
303
+ function decreaseDistributorBalance(
304
+ InstanceStore instanceStore,
305
+ NftId distributorNftId,
306
+ Amount amount,
307
+ Amount feeAmount
308
+ )
309
+ external
310
+ virtual
311
+ // TODO re-enable once role granting is stable and fixed
312
+ // restricted()
313
+ {
314
+ _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
315
+ }
316
+
278
317
  //-------- oracle -------------------------------------------------------//
279
318
 
280
319
  function registerOracle()
@@ -282,8 +321,6 @@ contract ComponentService is
282
321
  virtual
283
322
  {
284
323
  address contractAddress = msg.sender;
285
- RoleId[] memory roles = new RoleId[](0);
286
- bytes4[][] memory selectors = new bytes4[][](0);
287
324
 
288
325
  // register/create component setup
289
326
  (
@@ -293,9 +330,7 @@ contract ComponentService is
293
330
  ) = _register(
294
331
  contractAddress,
295
332
  ORACLE(),
296
- ORACLE_OWNER_ROLE(),
297
- roles,
298
- selectors);
333
+ ORACLE_OWNER_ROLE());
299
334
  }
300
335
 
301
336
  //-------- pool ---------------------------------------------------------//
@@ -305,16 +340,6 @@ contract ComponentService is
305
340
  virtual
306
341
  {
307
342
  address contractAddress = msg.sender;
308
- RoleId[] memory roles = new RoleId[](2);
309
- bytes4[][] memory selectors = new bytes4[][](2);
310
-
311
- // authorizaion for pool owner
312
- roles[0] = POOL_OWNER_ROLE();
313
- selectors[0] = _createSelectors(IPoolComponent.setFees.selector);
314
-
315
- // authorizaion for product service
316
- roles[1] = POLICY_SERVICE_ROLE();
317
- selectors[1] = _createSelectors(IPoolComponent.verifyApplication.selector);
318
343
 
319
344
  // register/create component setup
320
345
  (
@@ -324,14 +349,13 @@ contract ComponentService is
324
349
  ) = _register(
325
350
  contractAddress,
326
351
  POOL(),
327
- POOL_OWNER_ROLE(),
328
- roles,
329
- selectors);
352
+ POOL_OWNER_ROLE());
330
353
 
331
354
  // create info
332
355
  instanceStore.createPool(
333
356
  componentNftId,
334
- IPoolComponent(contractAddress).getInitialPoolInfo());
357
+ IPoolComponent(
358
+ contractAddress).getInitialPoolInfo());
335
359
  }
336
360
 
337
361
 
@@ -461,9 +485,7 @@ contract ComponentService is
461
485
  function _register(
462
486
  address componentAddress, // address of component to register
463
487
  ObjectType requiredType, // required type for component for registration
464
- RoleId requiredRole, // role required for comonent owner for registration
465
- RoleId[] memory roles, // roles with write access to component
466
- bytes4[][] memory selectors // authorized functions per role with write access
488
+ RoleId requiredRole // role required for comonent owner for registration
467
489
  )
468
490
  internal
469
491
  virtual
@@ -490,21 +512,23 @@ contract ComponentService is
490
512
 
491
513
  component.linkToRegisteredNftId();
492
514
 
515
+ // setup initial component authorization
516
+ _instanceService.initializeAuthorization(
517
+ instance.getNftId(),
518
+ component);
519
+
493
520
  // save amended component info with instance
494
521
  instanceReader = instance.getInstanceReader();
495
522
  instanceStore = instance.getInstanceStore();
496
523
 
497
524
  IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
498
525
  componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
499
- instanceStore.createComponent(component.getNftId(), componentInfo);
500
-
501
- // configure instance authorization
502
- _instanceService.createComponentTarget(
503
- instance.getNftId(),
504
- componentAddress,
505
- component.getName(),
506
- selectors,
507
- roles);
526
+
527
+ instanceStore.createComponent(
528
+ component.getNftId(),
529
+ componentInfo);
530
+
531
+ // TODO add logging
508
532
  }
509
533
 
510
534
 
@@ -605,8 +629,7 @@ contract ComponentService is
605
629
  instance = _getInstance(info.parentNftId);
606
630
  owner = info.initialOwner;
607
631
 
608
- (bool hasRole,) = instance.getInstanceAccessManager().hasRole(requiredRole.toInt(), owner);
609
- if(!hasRole) {
632
+ if(!instance.getInstanceAdmin().hasRole(owner, requiredRole)) {
610
633
  revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
611
634
  }
612
635
  }
@@ -1,9 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "./IVersionable.sol";
5
- import {ProxyManager} from "./ProxyManager.sol";
6
4
  import {ComponentService} from "./ComponentService.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
7
 
8
8
  contract ComponentServiceManager is ProxyManager {
9
9
 
@@ -87,7 +87,7 @@ abstract contract ComponentVerifyingService is
87
87
 
88
88
  // ensure component is not locked
89
89
  if (onlyActive) {
90
- if (instance.getInstanceAccessManager().isTargetClosed(info.objectAddress)) {
90
+ if (instance.getInstanceAdmin().isTargetLocked(info.objectAddress)) {
91
91
  revert ErrorComponentVerifyingServiceComponentIsLocked(componentNftId);
92
92
  }
93
93
  }
@@ -35,10 +35,11 @@ interface IComponent is
35
35
  /// only component owner (nft holder) is authorizes to call this function
36
36
  function approveTokenHandler(Amount spendingLimitAmount) external;
37
37
 
38
- /// @dev sets the wallet address for the component
39
- /// if the current wallet has tokens, these will be transferred
38
+ /// @dev sets the wallet address for the component.
39
+ /// if the current wallet has tokens, these will be transferred.
40
40
  /// if the new wallet address is externally owned, an approval from the
41
- /// owner of the external wallet for the component to move all tokens must exist
41
+ /// owner of the external wallet to the tokenhandler of the component that
42
+ /// covers the current component balance must exist
42
43
  function setWallet(address walletAddress) external;
43
44
 
44
45
  /// @dev returns the name of this component
@@ -1,21 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
4
 
7
5
  import {Amount} from "../type/Amount.sol";
8
6
  import {Fee} from "../type/Fee.sol";
9
- import {IComponents} from "../instance/module/IComponents.sol";
10
- import {IInstance} from "../instance/IInstance.sol";
11
- import {IInstanceService} from "../instance/IInstanceService.sol";
12
7
  import {InstanceStore} from "../instance/InstanceStore.sol";
13
- import {IProductService} from "../product/IProductService.sol";
14
- import {IRegisterable} from "../shared/IRegisterable.sol";
15
8
  import {IService} from "../shared/IService.sol";
16
9
  import {NftId} from "../type/NftId.sol";
17
- import {ObjectType} from "../type/ObjectType.sol";
18
- import {TokenHandler} from "../shared/TokenHandler.sol";
19
10
  import {UFixed} from "../type/UFixed.sol";
20
11
 
21
12
  /// @dev component base class
@@ -27,7 +18,12 @@ interface IComponentService is
27
18
  error ErrorComponentServiceWalletAddressZero();
28
19
  error ErrorComponentServiceWalletAddressIsSameAsCurrent();
29
20
 
21
+ error ErrorComponentServiceWithdrawAmountIsZero();
22
+ error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
23
+ error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
24
+
30
25
  event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
26
+ event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
31
27
  event LogComponentServiceProductFeesUpdated(NftId productNftId);
32
28
  event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
33
29
  event LogComponentServicePoolFeesUpdated(NftId poolNftId);
@@ -51,6 +47,11 @@ interface IComponentService is
51
47
  /// @dev unlocks the component associated with the caller
52
48
  function unlock() external;
53
49
 
50
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
51
+ /// @param withdrawAmount the amount to withdraw
52
+ /// @return withdrawnAmount the amount that was actually withdrawn
53
+ function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
54
+
54
55
  //-------- product ------------------------------------------------------//
55
56
 
56
57
  /// @dev registers the sending component as a product component
@@ -77,6 +78,10 @@ interface IComponentService is
77
78
  function increaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
78
79
  function decreaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
79
80
 
81
+ //-------- distributor --------------------------------------------------//
82
+ function increaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
83
+ function decreaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
84
+
80
85
  //-------- oracle -------------------------------------------------------//
81
86
 
82
87
  /// @dev registers the sending component as an oracle component
@@ -99,4 +104,5 @@ interface IComponentService is
99
104
  //-------- bundle -------------------------------------------------------//
100
105
  function increaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
101
106
  function decreaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
107
+
102
108
  }
@@ -4,7 +4,9 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
 
7
+ import {Amount} from "../type/Amount.sol";
7
8
  import {IComponent} from "../shared/IComponent.sol";
9
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
10
  import {IComponents} from "../instance/module/IComponents.sol";
9
11
  import {IInstance} from "../instance/IInstance.sol";
10
12
  import {IInstanceService} from "../instance/IInstanceService.sol";
@@ -43,4 +45,12 @@ interface IInstanceLinkedComponent is
43
45
  /// this is only relevant for pool and distribution components
44
46
  function getProductNftId() external view returns (NftId productNftId);
45
47
 
48
+ /// @dev returns the initial component authorization specification.
49
+ function getAuthorization() external view returns (IAuthorization authorization);
50
+
51
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
52
+ /// @param amount the amount to withdraw
53
+ /// @return withdrawnAmount the amount that was actually withdrawn
54
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
55
+
46
56
  }
@@ -13,6 +13,7 @@ interface IKeyValueStore is ILifecycle {
13
13
 
14
14
  error ErrorKeyValueStoreTypeUndefined(ObjectType objectType);
15
15
  error ErrorKeyValueStoreAlreadyCreated(Key32 key, ObjectType objectType);
16
+ error ErrorKeyValueStoreNoLifecycle(ObjectType objectType);
16
17
  error ErrorKeyValueStoreStateZero(Key32 key);
17
18
  error ErrorKeyValueStoreNotExisting(Key32 key);
18
19
 
@@ -1,13 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../type/NftId.sol";
5
4
  import {ObjectType} from "../type/ObjectType.sol";
6
5
  import {StateId} from "../type/StateId.sol";
7
6
 
8
7
  interface ILifecycle {
9
8
 
10
- error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
9
+ error ErrorNoLifecycle(ObjectType objectType);
11
10
  error ErrorInvalidStateTransition(
12
11
  ObjectType objectType,
13
12
  StateId fromStateId,
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {IRegisterable} from "./IRegisterable.sol";
7
- import {IVersionable} from "./IVersionable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
8
  import {ObjectType} from "../type/ObjectType.sol";
9
9
  import {RoleId} from "../type/RoleId.sol";
10
10
 
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
6
 
7
- contract ERC165 is
7
+ contract InitializableERC165 is
8
8
  Initializable,
9
9
  IERC165
10
10
  {