@etherisc/gif-next 0.0.2-7340474-070 → 0.0.2-742eda3-807

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 (366) 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 +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 +1505 -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 +17 -242
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +106 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +55 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -16
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -39
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +0 -13
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +27 -39
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +29 -90
  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 -76
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +60 -120
  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 -91
  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/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -9
  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 +13 -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 +13 -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 +1477 -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 +44 -44
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +40 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
  99. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
  102. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
  104. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
  106. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  108. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  110. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  111. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  112. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  114. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  115. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  116. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  118. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  120. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  123. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
  124. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  125. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
  127. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  129. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PricingService.sol/PricingService.json +58 -58
  131. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  133. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  134. package/artifacts/contracts/product/Product.sol/Product.json +13 -153
  135. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  137. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  140. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  141. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  142. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +0 -44
  143. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  144. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  145. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  146. package/artifacts/contracts/registry/Registry.sol/Registry.json +24 -68
  147. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  148. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +233 -388
  149. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  150. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  151. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  153. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  154. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  155. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  156. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +148 -207
  157. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  159. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  160. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  161. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  162. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  163. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +62 -86
  164. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -61
  166. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  168. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  169. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
  173. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  175. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  185. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
  186. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  187. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  188. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  189. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  190. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +22 -22
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  196. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -14
  198. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  200. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  202. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  203. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  205. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  206. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  207. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  208. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  209. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  211. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
  212. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  213. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  214. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  216. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  218. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  219. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  220. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  222. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  224. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  225. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +142 -166
  226. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  227. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
  228. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  229. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  230. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.json +8 -8
  232. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  234. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  236. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  238. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  240. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  241. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  242. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  244. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  246. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  248. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  250. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  252. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  254. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  256. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  258. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  260. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  262. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  264. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  266. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  268. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  270. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  272. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  274. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  276. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  278. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  279. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  280. package/contracts/authorization/Authorization.sol +218 -0
  281. package/contracts/authorization/IAccess.sol +48 -0
  282. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  283. package/contracts/authorization/IAuthorization.sol +54 -0
  284. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  285. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  286. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  287. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  288. package/contracts/distribution/BasicDistribution.sol +149 -0
  289. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  290. package/contracts/distribution/Distribution.sol +126 -104
  291. package/contracts/distribution/DistributionService.sol +10 -5
  292. package/contracts/distribution/IDistributionComponent.sol +17 -35
  293. package/contracts/distribution/IDistributionService.sol +5 -1
  294. package/contracts/instance/IInstance.sol +3 -4
  295. package/contracts/instance/IInstanceService.sol +7 -12
  296. package/contracts/instance/Instance.sol +58 -67
  297. package/contracts/instance/InstanceAdmin.sol +202 -267
  298. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  299. package/contracts/instance/InstanceReader.sol +22 -9
  300. package/contracts/instance/InstanceService.sol +66 -62
  301. package/contracts/instance/InstanceStore.sol +11 -4
  302. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  303. package/contracts/instance/base/ObjectManager.sol +7 -8
  304. package/contracts/oracle/BasicOracle.sol +48 -0
  305. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  306. package/contracts/oracle/IOracle.sol +16 -0
  307. package/contracts/oracle/Oracle.sol +61 -49
  308. package/contracts/pool/BasicPool.sol +164 -0
  309. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  310. package/contracts/pool/IPoolComponent.sol +0 -60
  311. package/contracts/pool/Pool.sol +143 -131
  312. package/contracts/pool/PoolService.sol +1 -1
  313. package/contracts/product/BasicProduct.sol +82 -0
  314. package/contracts/product/BasicProductAuthorization.sol +40 -0
  315. package/contracts/product/IProductComponent.sol +6 -9
  316. package/contracts/product/Product.sol +103 -88
  317. package/contracts/registry/IRegistry.sol +5 -8
  318. package/contracts/registry/Registry.sol +1 -5
  319. package/contracts/registry/RegistryAdmin.sol +103 -71
  320. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  321. package/contracts/registry/ReleaseManager.sol +127 -167
  322. package/contracts/registry/ServiceAuthorizationV3.sol +9 -9
  323. package/contracts/shared/ComponentService.sol +20 -56
  324. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  325. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  326. package/contracts/shared/IKeyValueStore.sol +1 -0
  327. package/contracts/shared/ILifecycle.sol +1 -2
  328. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  329. package/contracts/shared/KeyValueStore.sol +6 -2
  330. package/contracts/shared/Lifecycle.sol +16 -69
  331. package/contracts/staking/StakingLifecycle.sol +23 -0
  332. package/contracts/staking/StakingStore.sol +3 -1
  333. package/contracts/type/ObjectType.sol +34 -0
  334. package/contracts/type/RoleId.sol +55 -82
  335. package/contracts/type/UFixed.sol +6 -0
  336. package/package.json +6 -3
  337. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  338. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  339. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  340. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  341. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  342. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  343. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  344. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  345. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  346. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  347. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  348. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  349. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  350. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  351. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  352. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  353. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  354. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  355. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  356. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  357. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  358. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  359. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  360. package/contracts/shared/AccessManagerCustom.sol +0 -741
  361. package/contracts/shared/AccessManagerExtended.sol +0 -481
  362. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  363. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  364. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  365. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  366. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
@@ -11,7 +11,7 @@ import {IInstance} from "../instance/IInstance.sol";
11
11
  import {IAccess} from "../instance/module/IAccess.sol";
12
12
  import {NftId} from "../type/NftId.sol";
13
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";
14
+ import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
15
15
  import {KEEP_STATE} from "../type/StateId.sol";
16
16
  import {IComponents} from "../instance/module/IComponents.sol";
17
17
  import {IComponentService} from "./IComponentService.sol";
@@ -102,12 +102,6 @@ contract ComponentService is
102
102
  virtual
103
103
  {
104
104
  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
105
 
112
106
  // register/create component setup
113
107
  (
@@ -117,9 +111,7 @@ contract ComponentService is
117
111
  ) = _register(
118
112
  contractAddress,
119
113
  PRODUCT(),
120
- PRODUCT_OWNER_ROLE(),
121
- roles,
122
- selectors);
114
+ PRODUCT_OWNER_ROLE());
123
115
 
124
116
  // create product info
125
117
  IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
@@ -193,24 +185,12 @@ contract ComponentService is
193
185
  virtual
194
186
  {
195
187
  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
188
 
207
189
  // register/create component info
208
190
  _register(
209
191
  contractAddress,
210
192
  DISTRIBUTION(),
211
- DISTRIBUTION_OWNER_ROLE(),
212
- roles,
213
- selectors);
193
+ DISTRIBUTION_OWNER_ROLE());
214
194
  }
215
195
 
216
196
 
@@ -282,8 +262,6 @@ contract ComponentService is
282
262
  virtual
283
263
  {
284
264
  address contractAddress = msg.sender;
285
- RoleId[] memory roles = new RoleId[](0);
286
- bytes4[][] memory selectors = new bytes4[][](0);
287
265
 
288
266
  // register/create component setup
289
267
  (
@@ -293,9 +271,7 @@ contract ComponentService is
293
271
  ) = _register(
294
272
  contractAddress,
295
273
  ORACLE(),
296
- ORACLE_OWNER_ROLE(),
297
- roles,
298
- selectors);
274
+ ORACLE_OWNER_ROLE());
299
275
  }
300
276
 
301
277
  //-------- pool ---------------------------------------------------------//
@@ -305,16 +281,6 @@ contract ComponentService is
305
281
  virtual
306
282
  {
307
283
  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
284
 
319
285
  // register/create component setup
320
286
  (
@@ -324,14 +290,13 @@ contract ComponentService is
324
290
  ) = _register(
325
291
  contractAddress,
326
292
  POOL(),
327
- POOL_OWNER_ROLE(),
328
- roles,
329
- selectors);
293
+ POOL_OWNER_ROLE());
330
294
 
331
295
  // create info
332
296
  instanceStore.createPool(
333
297
  componentNftId,
334
- IPoolComponent(contractAddress).getInitialPoolInfo());
298
+ IPoolComponent(
299
+ contractAddress).getInitialPoolInfo());
335
300
  }
336
301
 
337
302
 
@@ -461,9 +426,7 @@ contract ComponentService is
461
426
  function _register(
462
427
  address componentAddress, // address of component to register
463
428
  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
429
+ RoleId requiredRole // role required for comonent owner for registration
467
430
  )
468
431
  internal
469
432
  virtual
@@ -490,21 +453,23 @@ contract ComponentService is
490
453
 
491
454
  component.linkToRegisteredNftId();
492
455
 
456
+ // setup initial component authorization
457
+ _instanceService.initializeAuthorization(
458
+ instance.getNftId(),
459
+ component);
460
+
493
461
  // save amended component info with instance
494
462
  instanceReader = instance.getInstanceReader();
495
463
  instanceStore = instance.getInstanceStore();
496
464
 
497
465
  IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
498
466
  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);
467
+
468
+ instanceStore.createComponent(
469
+ component.getNftId(),
470
+ componentInfo);
471
+
472
+ // TODO add logging
508
473
  }
509
474
 
510
475
 
@@ -605,8 +570,7 @@ contract ComponentService is
605
570
  instance = _getInstance(info.parentNftId);
606
571
  owner = info.initialOwner;
607
572
 
608
- (bool hasRole,) = instance.getInstanceAccessManager().hasRole(requiredRole.toInt(), owner);
609
- if(!hasRole) {
573
+ if(!instance.getInstanceAdmin().hasRole(owner, requiredRole)) {
610
574
  revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
611
575
  }
612
576
  }
@@ -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
  }
@@ -5,6 +5,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
 
7
7
  import {IComponent} from "../shared/IComponent.sol";
8
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
9
  import {IComponents} from "../instance/module/IComponents.sol";
9
10
  import {IInstance} from "../instance/IInstance.sol";
10
11
  import {IInstanceService} from "../instance/IInstanceService.sol";
@@ -43,4 +44,7 @@ interface IInstanceLinkedComponent is
43
44
  /// this is only relevant for pool and distribution components
44
45
  function getProductNftId() external view returns (NftId productNftId);
45
46
 
47
+ /// @dev returns the initial component authorization specification.
48
+ function getAuthorization() external view returns (IAuthorization authorization);
49
+
46
50
  }
@@ -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,
@@ -9,10 +9,10 @@ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
9
9
  import {Component} from "./Component.sol";
10
10
  import {IComponentService} from "./IComponentService.sol";
11
11
  import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
12
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
12
13
  import {IComponents} from "../instance/module/IComponents.sol";
13
14
  import {IInstanceService} from "../instance/IInstanceService.sol";
14
15
  import {IInstance} from "../instance/IInstance.sol";
15
- import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
16
16
  import {InstanceReader} from "../instance/InstanceReader.sol";
17
17
  import {IRegistry} from "../registry/IRegistry.sol";
18
18
  import {NftId} from "../type/NftId.sol";
@@ -35,6 +35,27 @@ abstract contract InstanceLinkedComponent is
35
35
  struct InstanceLinkedComponentStorage {
36
36
  IInstance _instance; // instance for this component
37
37
  InstanceReader _instanceReader; // instance reader for this component
38
+ IAuthorization _initialAuthorization;
39
+ }
40
+
41
+ function lock() external onlyOwner {
42
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
43
+ }
44
+
45
+ function unlock() external onlyOwner {
46
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
47
+ }
48
+
49
+ function getInstance() public view override returns (IInstance instance) {
50
+ return _getInstanceLinkedComponentStorage()._instance;
51
+ }
52
+
53
+ function getProductNftId() public view override returns (NftId productNftId) {
54
+ return getComponentInfo().productNftId;
55
+ }
56
+
57
+ function getAuthorization() external view returns (IAuthorization authorization) {
58
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
38
59
  }
39
60
 
40
61
  function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
@@ -43,18 +64,19 @@ abstract contract InstanceLinkedComponent is
43
64
  }
44
65
  }
45
66
 
46
- function initializeInstanceLinkedComponent(
67
+ function _initializeInstanceLinkedComponent(
47
68
  address registry,
48
69
  NftId instanceNftId,
49
70
  string memory name,
50
71
  address token,
51
72
  ObjectType componentType,
73
+ IAuthorization authorization,
52
74
  bool isInterceptor,
53
75
  address initialOwner,
54
76
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
55
77
  bytes memory componentData // data that will saved with the component info in the instance store
56
78
  )
57
- public
79
+ internal
58
80
  virtual
59
81
  onlyInitializing()
60
82
  {
@@ -82,6 +104,7 @@ abstract contract InstanceLinkedComponent is
82
104
 
83
105
  // set component state
84
106
  $._instanceReader = $._instance.getInstanceReader();
107
+ $._initialAuthorization = authorization;
85
108
 
86
109
  registerInterface(type(IAccessManaged).interfaceId);
87
110
  registerInterface(type(IInstanceLinkedComponent).interfaceId);
@@ -93,22 +116,6 @@ abstract contract InstanceLinkedComponent is
93
116
  IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
94
117
  }
95
118
 
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
119
 
113
120
  function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
114
121
  NftId componentNftId = getRegistry().getNftId(address(this));
@@ -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;
@@ -1,15 +1,11 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
-
6
- import {NftId} from "../type/NftId.sol";
7
- import {ObjectType, COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT} from "../type/ObjectType.sol";
8
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId, zeroStateId} from "../type/StateId.sol";
9
6
  import {ILifecycle} from "./ILifecycle.sol";
10
7
 
11
- contract Lifecycle is
12
- Initializable,
8
+ abstract contract Lifecycle is
13
9
  ILifecycle
14
10
  {
15
11
  mapping(ObjectType objectType => StateId initialState)
@@ -18,16 +14,17 @@ contract Lifecycle is
18
14
  mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
19
15
  private _isValidTransition;
20
16
 
21
- function initializeLifecycle()
22
- public
23
- onlyInitializing
24
- {
25
- _setupBundleLifecycle();
26
- _setupComponentLifecycle();
27
- _setupPolicyLifecycle();
28
- _setupClaimAndPayoutLifecycle();
29
- _setupRiskLifecycle();
30
- _setupRequestLifecycle();
17
+ /// @dev child class must implement and CALL setup func at deployment/initializaton time
18
+ function _setupLifecycle() internal virtual;
19
+
20
+ function setInitialState(ObjectType ttype, StateId state) internal virtual {
21
+ assert(_initialState[ttype] == zeroStateId());
22
+ _initialState[ttype] = state;
23
+ }
24
+
25
+ function setStateTransition(ObjectType ttype, StateId oldState, StateId newState) internal virtual {
26
+ assert(_isValidTransition[ttype][oldState][newState] == false);
27
+ _isValidTransition[ttype][oldState][newState] = true;
31
28
  }
32
29
 
33
30
  function hasLifecycle(
@@ -59,9 +56,9 @@ contract Lifecycle is
59
56
  public
60
57
  view
61
58
  {
62
- // return if no life cycle support
59
+ // revert if no life cycle support
63
60
  if (_initialState[objectType].eqz()) {
64
- return;
61
+ revert ErrorNoLifecycle(objectType);
65
62
  }
66
63
 
67
64
  // enforce valid state transition
@@ -77,54 +74,4 @@ contract Lifecycle is
77
74
  ) public view returns (bool) {
78
75
  return _isValidTransition[objectType][fromId][toId];
79
76
  }
80
-
81
- function _setupComponentLifecycle() internal {
82
- _initialState[COMPONENT()] = ACTIVE();
83
- _isValidTransition[COMPONENT()][ACTIVE()][PAUSED()] = true;
84
- _isValidTransition[COMPONENT()][PAUSED()][ACTIVE()] = true;
85
- _isValidTransition[COMPONENT()][PAUSED()][ARCHIVED()] = true;
86
- }
87
-
88
- function _setupBundleLifecycle() internal {
89
- _initialState[BUNDLE()] = ACTIVE();
90
- _isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
91
- _isValidTransition[BUNDLE()][ACTIVE()][CLOSED()] = true;
92
- _isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
93
- _isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
94
- }
95
-
96
- function _setupPolicyLifecycle() internal {
97
- _initialState[POLICY()] = APPLIED();
98
- _isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
99
- _isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
100
- _isValidTransition[POLICY()][APPLIED()][COLLATERALIZED()] = true;
101
- _isValidTransition[POLICY()][APPLIED()][ACTIVE()] = true;
102
- _isValidTransition[POLICY()][COLLATERALIZED()][ACTIVE()] = true;
103
- _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
104
- }
105
-
106
- function _setupClaimAndPayoutLifecycle() internal {
107
- _initialState[CLAIM()] = SUBMITTED();
108
- _isValidTransition[CLAIM()][SUBMITTED()][CONFIRMED()] = true;
109
- _isValidTransition[CLAIM()][SUBMITTED()][DECLINED()] = true;
110
- _isValidTransition[CLAIM()][CONFIRMED()][CLOSED()] = true;
111
-
112
- _initialState[PAYOUT()] = EXPECTED();
113
- _isValidTransition[PAYOUT()][EXPECTED()][PAID()] = true;
114
- }
115
-
116
- function _setupRiskLifecycle() internal {
117
- _initialState[RISK()] = ACTIVE();
118
- _isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
119
- _isValidTransition[RISK()][PAUSED()][ACTIVE()] = true;
120
- _isValidTransition[RISK()][PAUSED()][ARCHIVED()] = true;
121
- }
122
-
123
- function _setupRequestLifecycle() internal {
124
- _initialState[REQUEST()] = ACTIVE();
125
- _isValidTransition[REQUEST()][ACTIVE()][FULFILLED()] = true;
126
- _isValidTransition[REQUEST()][ACTIVE()][FAILED()] = true;
127
- _isValidTransition[REQUEST()][FAILED()][FULFILLED()] = true;
128
- _isValidTransition[REQUEST()][ACTIVE()][CANCELLED()] = true;
129
- }
130
77
  }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {TARGET, COMPONENT, STAKE} from "../type/ObjectType.sol";
5
+ import {INITIAL} from "../type/StateId.sol";
6
+ import {Lifecycle} from "../shared/Lifecycle.sol";
7
+
8
+ contract StakingLifecycle is
9
+ Lifecycle
10
+ {
11
+ constructor() {
12
+ _setupLifecycle();
13
+ }
14
+
15
+ function _setupLifecycle()
16
+ internal
17
+ override
18
+ {
19
+ setInitialState(TARGET(), INITIAL());
20
+ setInitialState(COMPONENT(), INITIAL());
21
+ setInitialState(STAKE(), INITIAL());
22
+ }
23
+ }
@@ -28,11 +28,13 @@ import {Version, VersionLib} from "../type/Version.sol";
28
28
  import {Versionable} from "../shared/Versionable.sol";
29
29
 
30
30
  import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
31
+ import {StakingLifecycle} from "./StakingLifecycle.sol";
31
32
 
32
33
 
33
34
  contract StakingStore is
34
35
  AccessManaged,
35
- KeyValueStore
36
+ KeyValueStore,
37
+ StakingLifecycle
36
38
  {
37
39
 
38
40
  event LogStakingStoreReserveBalanceIncreased(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdatedIn);
@@ -137,6 +137,8 @@ function neObjectType(ObjectType a, ObjectType b) pure returns (bool isSame) {
137
137
  // library functions that operate on user defined type
138
138
  library ObjectTypeLib {
139
139
 
140
+ error ErrorVersionTooBig(uint256 version);
141
+
140
142
  function zero() public pure returns (ObjectType) {
141
143
  return ObjectType.wrap(0);
142
144
  }
@@ -209,6 +211,38 @@ library ObjectTypeLib {
209
211
  toInt(objectType))));
210
212
  }
211
213
 
214
+ function toVersionedName(
215
+ string memory name,
216
+ string memory suffix,
217
+ uint256 version
218
+ )
219
+ external
220
+ pure
221
+ returns (string memory versionedName)
222
+ {
223
+ if (version > maxNumReleases()) {
224
+ revert ErrorVersionTooBig(version);
225
+ }
226
+
227
+ string memory versionName = "_v0";
228
+
229
+ if (version >= 10) {
230
+ versionName = "_v";
231
+ }
232
+
233
+ versionedName = string(
234
+ abi.encodePacked(
235
+ name,
236
+ suffix,
237
+ versionName,
238
+ toString(version)));
239
+ }
240
+
241
+ /// @dev returns the max number of releases (major versions) this gif setup can handle.
242
+ function maxNumReleases() public pure returns (uint8) {
243
+ return 99;
244
+ }
245
+
212
246
  /// @dev returns the provied int as a string
213
247
  function toString(uint256 value) public pure returns (string memory name) {
214
248