@etherisc/gif-next 0.0.2-f347f00-614 → 0.0.2-f36fd21-685

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 (436) hide show
  1. package/README.md +30 -2
  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 +100 -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 -5
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -228
  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 +134 -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 +110 -81
  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 +84 -101
  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 +1185 -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 +43 -96
  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 +1520 -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 +220 -54
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +72 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +102 -0
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -195
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  102. package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -296
  103. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
  105. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
  107. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  109. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  111. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  113. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  114. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  115. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  116. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  117. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  119. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  120. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
  123. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  125. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
  126. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  127. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +64 -51
  129. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  131. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  133. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  135. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  136. package/artifacts/contracts/product/Product.sol/Product.json +32 -153
  137. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  138. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  139. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  141. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  142. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  143. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  144. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  145. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  146. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  147. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  148. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  149. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  150. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  151. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +239 -389
  152. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  154. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  156. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  157. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  158. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  159. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  160. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +44 -12
  162. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  164. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -86
  167. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
  169. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
  175. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  177. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  179. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  185. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  186. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
  189. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  190. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  191. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  192. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  193. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  194. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  195. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  197. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  203. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  205. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  206. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  207. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  209. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
  210. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  211. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  212. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  214. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  215. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  216. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  218. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  219. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  220. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  222. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  224. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  225. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  226. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  227. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  228. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  229. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  230. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  232. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  234. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  236. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  238. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  240. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  241. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  242. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  243. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  244. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  246. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  248. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  250. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  252. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  254. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  256. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  258. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  260. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  262. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  264. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  266. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  268. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  270. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  272. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  276. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  277. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  278. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  279. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  280. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  281. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  282. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  283. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  284. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -294
  285. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  286. package/contracts/authorization/Authorization.sol +218 -0
  287. package/contracts/authorization/IAccess.sol +48 -0
  288. package/contracts/{shared → authorization}/IAccessAdmin.sol +34 -60
  289. package/contracts/authorization/IAuthorization.sol +54 -0
  290. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  291. package/contracts/{registry → authorization}/IServiceAuthorization.sol +7 -4
  292. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  293. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -14
  294. package/contracts/distribution/BasicDistribution.sol +138 -0
  295. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  296. package/contracts/distribution/Distribution.sol +144 -110
  297. package/contracts/distribution/DistributionService.sol +71 -31
  298. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  299. package/contracts/distribution/IDistributionComponent.sol +25 -39
  300. package/contracts/distribution/IDistributionService.sol +17 -1
  301. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  302. package/contracts/instance/IInstance.sol +8 -9
  303. package/contracts/instance/IInstanceService.sol +13 -18
  304. package/contracts/instance/Instance.sol +61 -70
  305. package/contracts/instance/InstanceAdmin.sol +202 -267
  306. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  307. package/contracts/instance/InstanceReader.sol +22 -9
  308. package/contracts/instance/InstanceService.sol +74 -70
  309. package/contracts/instance/InstanceServiceManager.sol +2 -6
  310. package/contracts/instance/InstanceStore.sol +13 -5
  311. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  312. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  313. package/contracts/instance/module/IComponents.sol +0 -1
  314. package/contracts/instance/module/IDistribution.sol +0 -1
  315. package/contracts/oracle/BasicOracle.sol +48 -0
  316. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  317. package/contracts/oracle/IOracle.sol +16 -0
  318. package/contracts/oracle/IOracleComponent.sol +2 -1
  319. package/contracts/oracle/Oracle.sol +72 -51
  320. package/contracts/oracle/OracleServiceManager.sol +2 -5
  321. package/contracts/pool/BasicPool.sol +164 -0
  322. package/contracts/pool/BasicPoolAuthorization.sol +55 -0
  323. package/contracts/pool/BundleService.sol +72 -27
  324. package/contracts/pool/BundleServiceManager.sol +2 -5
  325. package/contracts/pool/IBundleService.sol +14 -0
  326. package/contracts/pool/IPoolComponent.sol +6 -60
  327. package/contracts/pool/Pool.sol +160 -131
  328. package/contracts/pool/PoolService.sol +12 -30
  329. package/contracts/pool/PoolServiceManager.sol +2 -5
  330. package/contracts/product/ApplicationService.sol +12 -36
  331. package/contracts/product/ApplicationServiceManager.sol +2 -2
  332. package/contracts/product/BasicProduct.sol +52 -0
  333. package/contracts/product/BasicProductAuthorization.sol +43 -0
  334. package/contracts/product/ClaimService.sol +7 -32
  335. package/contracts/product/ClaimServiceManager.sol +2 -2
  336. package/contracts/product/IPolicyService.sol +2 -0
  337. package/contracts/product/IProductComponent.sol +7 -9
  338. package/contracts/product/PolicyService.sol +28 -4
  339. package/contracts/product/PolicyServiceManager.sol +2 -5
  340. package/contracts/product/PricingServiceManager.sol +2 -5
  341. package/contracts/product/Product.sol +112 -88
  342. package/contracts/product/ProductService.sol +7 -32
  343. package/contracts/product/ProductServiceManager.sol +2 -5
  344. package/contracts/registry/IRegistry.sol +26 -16
  345. package/contracts/registry/IRegistryService.sol +6 -6
  346. package/contracts/registry/Registry.sol +85 -85
  347. package/contracts/registry/RegistryAdmin.sol +118 -86
  348. package/contracts/registry/RegistryService.sol +4 -18
  349. package/contracts/registry/RegistryServiceManager.sol +2 -2
  350. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  351. package/contracts/registry/ReleaseRegistry.sol +485 -0
  352. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  353. package/contracts/registry/TokenRegistry.sol +2 -2
  354. package/contracts/shared/Component.sol +13 -14
  355. package/contracts/shared/ComponentService.sol +102 -68
  356. package/contracts/shared/ComponentServiceManager.sol +2 -2
  357. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  358. package/contracts/shared/IComponentService.sol +15 -9
  359. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  360. package/contracts/shared/IKeyValueStore.sol +1 -0
  361. package/contracts/shared/ILifecycle.sol +1 -2
  362. package/contracts/shared/IService.sol +1 -1
  363. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  364. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  365. package/contracts/shared/KeyValueStore.sol +6 -2
  366. package/contracts/shared/Lifecycle.sol +16 -69
  367. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  368. package/contracts/shared/NftOwnable.sol +2 -2
  369. package/contracts/shared/PolicyHolder.sol +2 -5
  370. package/contracts/shared/Service.sol +3 -4
  371. package/contracts/staking/IStaking.sol +1 -2
  372. package/contracts/staking/IStakingService.sol +12 -5
  373. package/contracts/staking/Staking.sol +20 -17
  374. package/contracts/staking/StakingLifecycle.sol +23 -0
  375. package/contracts/staking/StakingManager.sol +2 -6
  376. package/contracts/staking/StakingReader.sol +12 -16
  377. package/contracts/staking/StakingServiceManager.sol +2 -2
  378. package/contracts/staking/StakingStore.sol +15 -23
  379. package/contracts/type/Amount.sol +12 -5
  380. package/contracts/type/ObjectType.sol +37 -7
  381. package/contracts/type/Referral.sol +1 -0
  382. package/contracts/type/RoleId.sol +55 -82
  383. package/contracts/type/UFixed.sol +34 -9
  384. package/contracts/type/Version.sol +3 -1
  385. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  386. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  387. package/package.json +6 -3
  388. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  389. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  390. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  391. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  392. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  393. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  394. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  395. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  396. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  397. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  398. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -166
  399. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  400. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1554
  401. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  402. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  403. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  404. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  405. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  406. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  407. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  408. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  409. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  410. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  411. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  412. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  413. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  414. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  415. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  416. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  417. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  418. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  419. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  420. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  421. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  422. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  423. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  424. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  425. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  426. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  427. package/contracts/registry/ReleaseManager.sol +0 -521
  428. package/contracts/shared/AccessManagerCustom.sol +0 -741
  429. package/contracts/shared/AccessManagerExtended.sol +0 -481
  430. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  431. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  432. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  433. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  434. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  435. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  436. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -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;
@@ -253,29 +257,24 @@ abstract contract Component is
253
257
  }
254
258
 
255
259
 
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
260
  /// @dev depending on the source of the component information this function needs to be overwritten.
267
261
  /// eg for instance linked components that externally store this information with the instance store contract
268
262
  function _getComponentInfo() internal virtual view returns (IComponents.ComponentInfo memory info) {
269
263
  ComponentStorage storage $ = _getComponentStorage();
270
-
264
+
271
265
  return IComponents.ComponentInfo({
272
266
  name: $._name,
273
267
  productNftId: NftIdLib.zero(),
274
268
  token: $._token,
275
- tokenHandler: $._tokenHandler,
269
+ tokenHandler: TokenHandler(address(0)),
276
270
  wallet: $._wallet, // initial wallet address
277
271
  data: $._data // user specific component data
278
272
  });
279
273
  }
280
274
 
275
+ function _approveTokenHandler(uint256 amount) internal {
276
+ ComponentStorage storage $ = _getComponentStorage();
277
+ $._token.approve(address(getComponentInfo().tokenHandler), amount);
278
+ }
279
+
281
280
  }
@@ -1,33 +1,32 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {Amount, AmountLib} from "../type/Amount.sol";
5
7
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
6
8
  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
9
  import {IComponents} from "../instance/module/IComponents.sol";
17
10
  import {IComponentService} from "./IComponentService.sol";
18
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
11
+ import {IInstance} from "../instance/IInstance.sol";
12
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
13
+ import {InstanceReader} from "../instance/InstanceReader.sol";
14
+ import {InstanceStore} from "../instance/InstanceStore.sol";
19
15
  import {IInstanceService} from "../instance/IInstanceService.sol";
20
16
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
21
17
  import {IProductComponent} from "../product/IProductComponent.sol";
22
- import {InstanceReader} from "../instance/InstanceReader.sol";
23
- import {InstanceStore} from "../instance/InstanceStore.sol";
18
+ import {IRegistry} from "../registry/IRegistry.sol";
19
+ import {IRegistryService} from "../registry/IRegistryService.sol";
20
+ import {KEEP_STATE} from "../type/StateId.sol";
21
+ import {NftId} from "../type/NftId.sol";
22
+ import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
23
+ import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
24
24
  import {TokenHandler} from "./TokenHandler.sol";
25
25
 
26
26
  contract ComponentService is
27
27
  ComponentVerifyingService,
28
28
  IComponentService
29
29
  {
30
-
31
30
  error ErrorComponentServiceAlreadyRegistered(address component);
32
31
  error ErrorComponentServiceNotComponent(address component);
33
32
  error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
@@ -94,6 +93,47 @@ contract ComponentService is
94
93
  // TODO implement
95
94
  function unlock() external virtual {}
96
95
 
96
+ function withdrawFees(Amount amount)
97
+ external
98
+ virtual
99
+ returns (Amount withdrawnAmount)
100
+ {
101
+ (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
102
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
103
+ address componentWallet = info.wallet;
104
+
105
+ // determine withdrawn amount
106
+ withdrawnAmount = amount;
107
+ if (withdrawnAmount.gte(AmountLib.max())) {
108
+ withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
109
+ } else if (withdrawnAmount.eqz()) {
110
+ revert ErrorComponentServiceWithdrawAmountIsZero();
111
+ } else {
112
+ Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
113
+ if (withdrawnAmount.gt(withdrawLimit)) {
114
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
115
+ }
116
+ }
117
+
118
+ // check allowance
119
+ TokenHandler tokenHandler = info.tokenHandler;
120
+ IERC20Metadata token = IERC20Metadata(info.token);
121
+ uint256 tokenAllowance = token.allowance(componentWallet, address(tokenHandler));
122
+ if (tokenAllowance < withdrawnAmount.toInt()) {
123
+ revert ErrorComponentServiceWalletAllowanceTooSmall(componentWallet, address(tokenHandler), tokenAllowance, withdrawnAmount.toInt());
124
+ }
125
+
126
+ // decrease fee counters by withdrawnAmount
127
+ _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
128
+
129
+ // transfer amount to component owner
130
+ address componentOwner = getRegistry().ownerOf(componentNftId);
131
+ // TODO: centralize token handling (issue #471)
132
+ tokenHandler.transfer(componentWallet, componentOwner, withdrawnAmount);
133
+
134
+ emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
135
+ }
136
+
97
137
 
98
138
  //-------- product ------------------------------------------------------//
99
139
 
@@ -102,12 +142,6 @@ contract ComponentService is
102
142
  virtual
103
143
  {
104
144
  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
145
 
112
146
  // register/create component setup
113
147
  (
@@ -117,9 +151,7 @@ contract ComponentService is
117
151
  ) = _register(
118
152
  contractAddress,
119
153
  PRODUCT(),
120
- PRODUCT_OWNER_ROLE(),
121
- roles,
122
- selectors);
154
+ PRODUCT_OWNER_ROLE());
123
155
 
124
156
  // create product info
125
157
  IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
@@ -193,24 +225,12 @@ contract ComponentService is
193
225
  virtual
194
226
  {
195
227
  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
228
 
207
229
  // register/create component info
208
230
  _register(
209
231
  contractAddress,
210
232
  DISTRIBUTION(),
211
- DISTRIBUTION_OWNER_ROLE(),
212
- roles,
213
- selectors);
233
+ DISTRIBUTION_OWNER_ROLE());
214
234
  }
215
235
 
216
236
 
@@ -275,6 +295,36 @@ contract ComponentService is
275
295
  _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
276
296
  }
277
297
 
298
+ //-------- distributor -------------------------------------------------------//
299
+
300
+ function increaseDistributorBalance(
301
+ InstanceStore instanceStore,
302
+ NftId distributorNftId,
303
+ Amount amount,
304
+ Amount feeAmount
305
+ )
306
+ external
307
+ virtual
308
+ // TODO re-enable once role granting is stable and fixed
309
+ // restricted()
310
+ {
311
+ _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
312
+ }
313
+
314
+ function decreaseDistributorBalance(
315
+ InstanceStore instanceStore,
316
+ NftId distributorNftId,
317
+ Amount amount,
318
+ Amount feeAmount
319
+ )
320
+ external
321
+ virtual
322
+ // TODO re-enable once role granting is stable and fixed
323
+ // restricted()
324
+ {
325
+ _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
326
+ }
327
+
278
328
  //-------- oracle -------------------------------------------------------//
279
329
 
280
330
  function registerOracle()
@@ -282,8 +332,6 @@ contract ComponentService is
282
332
  virtual
283
333
  {
284
334
  address contractAddress = msg.sender;
285
- RoleId[] memory roles = new RoleId[](0);
286
- bytes4[][] memory selectors = new bytes4[][](0);
287
335
 
288
336
  // register/create component setup
289
337
  (
@@ -293,9 +341,7 @@ contract ComponentService is
293
341
  ) = _register(
294
342
  contractAddress,
295
343
  ORACLE(),
296
- ORACLE_OWNER_ROLE(),
297
- roles,
298
- selectors);
344
+ ORACLE_OWNER_ROLE());
299
345
  }
300
346
 
301
347
  //-------- pool ---------------------------------------------------------//
@@ -305,16 +351,6 @@ contract ComponentService is
305
351
  virtual
306
352
  {
307
353
  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
354
 
319
355
  // register/create component setup
320
356
  (
@@ -324,14 +360,13 @@ contract ComponentService is
324
360
  ) = _register(
325
361
  contractAddress,
326
362
  POOL(),
327
- POOL_OWNER_ROLE(),
328
- roles,
329
- selectors);
363
+ POOL_OWNER_ROLE());
330
364
 
331
365
  // create info
332
366
  instanceStore.createPool(
333
367
  componentNftId,
334
- IPoolComponent(contractAddress).getInitialPoolInfo());
368
+ IPoolComponent(
369
+ contractAddress).getInitialPoolInfo());
335
370
  }
336
371
 
337
372
 
@@ -461,9 +496,7 @@ contract ComponentService is
461
496
  function _register(
462
497
  address componentAddress, // address of component to register
463
498
  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
499
+ RoleId requiredRole // role required for comonent owner for registration
467
500
  )
468
501
  internal
469
502
  virtual
@@ -490,21 +523,23 @@ contract ComponentService is
490
523
 
491
524
  component.linkToRegisteredNftId();
492
525
 
526
+ // setup initial component authorization
527
+ _instanceService.initializeAuthorization(
528
+ instance.getNftId(),
529
+ component);
530
+
493
531
  // save amended component info with instance
494
532
  instanceReader = instance.getInstanceReader();
495
533
  instanceStore = instance.getInstanceStore();
496
534
 
497
535
  IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
498
536
  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);
537
+
538
+ instanceStore.createComponent(
539
+ component.getNftId(),
540
+ componentInfo);
541
+
542
+ // TODO add logging
508
543
  }
509
544
 
510
545
 
@@ -605,8 +640,7 @@ contract ComponentService is
605
640
  instance = _getInstance(info.parentNftId);
606
641
  owner = info.initialOwner;
607
642
 
608
- (bool hasRole,) = instance.getInstanceAccessManager().hasRole(requiredRole.toInt(), owner);
609
- if(!hasRole) {
643
+ if(!instance.getInstanceAdmin().hasRole(owner, requiredRole)) {
610
644
  revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
611
645
  }
612
646
  }
@@ -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
  }
@@ -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
  {
@@ -6,13 +6,14 @@ 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
10
  import {Component} from "./Component.sol";
10
11
  import {IComponentService} from "./IComponentService.sol";
11
12
  import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
13
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
12
14
  import {IComponents} from "../instance/module/IComponents.sol";
13
15
  import {IInstanceService} from "../instance/IInstanceService.sol";
14
16
  import {IInstance} from "../instance/IInstance.sol";
15
- import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
16
17
  import {InstanceReader} from "../instance/InstanceReader.sol";
17
18
  import {IRegistry} from "../registry/IRegistry.sol";
18
19
  import {NftId} from "../type/NftId.sol";
@@ -35,6 +36,39 @@ abstract contract InstanceLinkedComponent is
35
36
  struct InstanceLinkedComponentStorage {
36
37
  IInstance _instance; // instance for this component
37
38
  InstanceReader _instanceReader; // instance reader for this component
39
+ IAuthorization _initialAuthorization;
40
+ IComponentService _componentService;
41
+ }
42
+
43
+ function lock() external onlyOwner {
44
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
45
+ }
46
+
47
+ function unlock() external onlyOwner {
48
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
49
+ }
50
+
51
+ function getInstance() public view override returns (IInstance instance) {
52
+ return _getInstanceLinkedComponentStorage()._instance;
53
+ }
54
+
55
+ function getProductNftId() public view override returns (NftId productNftId) {
56
+ return getComponentInfo().productNftId;
57
+ }
58
+
59
+ function getAuthorization() external view returns (IAuthorization authorization) {
60
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
61
+ }
62
+
63
+ /// @inheritdoc IInstanceLinkedComponent
64
+ function withdrawFees(Amount amount)
65
+ external
66
+ virtual
67
+ onlyOwner()
68
+ restricted()
69
+ returns (Amount withdrawnAmount)
70
+ {
71
+ return _withdrawFees(amount);
38
72
  }
39
73
 
40
74
  function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
@@ -43,18 +77,19 @@ abstract contract InstanceLinkedComponent is
43
77
  }
44
78
  }
45
79
 
46
- function initializeInstanceLinkedComponent(
80
+ function _initializeInstanceLinkedComponent(
47
81
  address registry,
48
82
  NftId instanceNftId,
49
83
  string memory name,
50
84
  address token,
51
85
  ObjectType componentType,
86
+ IAuthorization authorization,
52
87
  bool isInterceptor,
53
88
  address initialOwner,
54
89
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
55
90
  bytes memory componentData // data that will saved with the component info in the instance store
56
91
  )
57
- public
92
+ internal
58
93
  virtual
59
94
  onlyInitializing()
60
95
  {
@@ -82,6 +117,8 @@ abstract contract InstanceLinkedComponent is
82
117
 
83
118
  // set component state
84
119
  $._instanceReader = $._instance.getInstanceReader();
120
+ $._initialAuthorization = authorization;
121
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
85
122
 
86
123
  registerInterface(type(IAccessManaged).interfaceId);
87
124
  registerInterface(type(IInstanceLinkedComponent).interfaceId);
@@ -93,22 +130,6 @@ abstract contract InstanceLinkedComponent is
93
130
  IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
94
131
  }
95
132
 
96
- function lock() external onlyOwner {
97
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
98
- }
99
-
100
- function unlock() external onlyOwner {
101
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
102
- }
103
-
104
- function getInstance() public view override returns (IInstance instance) {
105
- return _getInstanceLinkedComponentStorage()._instance;
106
- }
107
-
108
- function getProductNftId() public view override returns (NftId productNftId) {
109
- return getComponentInfo().productNftId;
110
- }
111
-
112
133
 
113
134
  function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
114
135
  NftId componentNftId = getRegistry().getNftId(address(this));
@@ -134,6 +155,13 @@ abstract contract InstanceLinkedComponent is
134
155
  return _getInstanceLinkedComponentStorage()._instanceReader;
135
156
  }
136
157
 
158
+ function _withdrawFees(Amount amount)
159
+ internal
160
+ returns (Amount withdrawnAmount)
161
+ {
162
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
163
+ }
164
+
137
165
 
138
166
  /// @dev returns the service address for the specified domain
139
167
  /// gets address via lookup from registry using the major version form the linked instance
@@ -11,7 +11,7 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
11
11
  import {Lifecycle} from "./Lifecycle.sol";
12
12
  import {IKeyValueStore} from "./IKeyValueStore.sol";
13
13
 
14
- contract KeyValueStore is
14
+ abstract contract KeyValueStore is
15
15
  Lifecycle,
16
16
  IKeyValueStore
17
17
  {
@@ -34,8 +34,12 @@ contract KeyValueStore is
34
34
  revert ErrorKeyValueStoreAlreadyCreated(key32, objectType);
35
35
  }
36
36
 
37
+ if(!hasLifecycle(objectType)) {
38
+ revert ErrorKeyValueStoreNoLifecycle(objectType);
39
+ }
40
+
37
41
  Blocknumber blocknumber = blockBlocknumber();
38
- StateId initialState = hasLifecycle(objectType) ? getInitialState(objectType) : ACTIVE();
42
+ StateId initialState = getInitialState(objectType);
39
43
 
40
44
  // set metadata
41
45
  metadata.objectType = objectType;