@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
@@ -0,0 +1,202 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {
5
+ PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE
6
+ } from "../../contracts/type/ObjectType.sol";
7
+
8
+ import {
9
+ ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
10
+ } from "../../contracts/type/RoleId.sol";
11
+
12
+ import {BundleManager} from "../instance/BundleManager.sol";
13
+ import {IAccess} from "../authorization/IAccess.sol";
14
+ import {Instance} from "../instance/Instance.sol";
15
+ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
16
+ import {InstanceStore} from "../instance/InstanceStore.sol";
17
+ import {ModuleAuthorization} from "../authorization/ModuleAuthorization.sol";
18
+ import {RoleId} from "../type/RoleId.sol";
19
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
20
+
21
+
22
+ contract InstanceAuthorizationV3
23
+ is ModuleAuthorization
24
+ {
25
+
26
+ string public constant INSTANCE_TARGET_NAME = "Instance";
27
+ string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
28
+ string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
29
+ string public constant BUNDLE_MANAGER_TARGET_NAME = "BundleManager";
30
+
31
+ string public constant INSTANCE_ROLE_NAME = "InstanceRole";
32
+ string public constant DISTRIBUTION_OWNER_ROLE_NAME = "DistributionOwnerRole";
33
+ string public constant ORACLE_OWNER_ROLE_NAME = "OracleOwnerRole";
34
+ string public constant POOL_OWNER_ROLE_NAME = "PoolOwnerRole";
35
+ string public constant PRODUCT_OWNER_ROLE_NAME = "ProductOwnerRole";
36
+
37
+ constructor() ModuleAuthorization(INSTANCE_TARGET_NAME) {}
38
+
39
+
40
+ function _setupRoles()
41
+ internal
42
+ override
43
+ {
44
+ _addGifRole(DISTRIBUTION_OWNER_ROLE(), DISTRIBUTION_OWNER_ROLE_NAME);
45
+ _addGifRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME);
46
+ _addGifRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME);
47
+ _addGifRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME);
48
+ }
49
+
50
+
51
+ function _setupTargets()
52
+ internal
53
+ override
54
+ {
55
+ // instance target
56
+ _addTargetWithRole(
57
+ INSTANCE_TARGET_NAME,
58
+ _getTargetRoleId(INSTANCE()),
59
+ INSTANCE_ROLE_NAME);
60
+
61
+ // instance supporting targets
62
+ _addTarget(INSTANCE_STORE_TARGET_NAME);
63
+ _addTarget(INSTANCE_ADMIN_TARGET_NAME);
64
+ _addTarget(BUNDLE_MANAGER_TARGET_NAME);
65
+
66
+ // service targets relevant to instance
67
+ _addServiceTargetWithRole(INSTANCE());
68
+ _addServiceTargetWithRole(COMPONENT());
69
+ _addServiceTargetWithRole(DISTRIBUTION());
70
+ _addServiceTargetWithRole(ORACLE());
71
+ _addServiceTargetWithRole(POOL());
72
+ _addServiceTargetWithRole(BUNDLE());
73
+ _addServiceTargetWithRole(PRODUCT());
74
+ _addServiceTargetWithRole(APPLICATION());
75
+ _addServiceTargetWithRole(POLICY());
76
+ _addServiceTargetWithRole(CLAIM());
77
+ }
78
+
79
+
80
+ function _setupTargetAuthorizations()
81
+ internal
82
+ override
83
+ {
84
+ _setupInstanceAuthorization();
85
+ _setupInstanceAdminAuthorization();
86
+ _setupInstanceStoreAuthorization();
87
+ _setupBundleManagerAuthorization();
88
+ }
89
+
90
+
91
+ function _setupBundleManagerAuthorization()
92
+ internal
93
+ {
94
+ IAccess.FunctionInfo[] storage functions;
95
+
96
+ // authorize bundle service role
97
+ functions = _authorizeForTarget(BUNDLE_MANAGER_TARGET_NAME, getServiceRole(BUNDLE()));
98
+ _authorize(functions, BundleManager.linkPolicy.selector, "linkPolicy");
99
+ _authorize(functions, BundleManager.unlinkPolicy.selector, "unlinkPolicy");
100
+ _authorize(functions, BundleManager.add.selector, "add");
101
+ _authorize(functions, BundleManager.lock.selector, "lock");
102
+ _authorize(functions, BundleManager.unlock.selector, "unlock");
103
+ }
104
+
105
+
106
+ function _setupInstanceAuthorization()
107
+ internal
108
+ {
109
+ IAccess.FunctionInfo[] storage functions;
110
+
111
+ // authorize instance service role
112
+ functions = _authorizeForTarget(INSTANCE_TARGET_NAME, getServiceRole(INSTANCE()));
113
+ _authorize(functions, Instance.setInstanceReader.selector, "setInstanceReader");
114
+ }
115
+
116
+
117
+ function _setupInstanceAdminAuthorization()
118
+ internal
119
+ {
120
+ IAccess.FunctionInfo[] storage functions;
121
+
122
+ // authorize instance role
123
+ functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _getTargetRoleId(INSTANCE()));
124
+ _authorize(functions, InstanceAdmin.grantRole.selector, "grantRole");
125
+
126
+ // authorize instance service role
127
+ // functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, getServiceRole(INSTANCE()));
128
+ }
129
+
130
+
131
+ function _setupInstanceStoreAuthorization()
132
+ internal
133
+ {
134
+ IAccess.FunctionInfo[] storage functions;
135
+
136
+ // authorize component service role
137
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(COMPONENT()));
138
+ _authorize(functions, InstanceStore.createComponent.selector, "createComponent");
139
+ _authorize(functions, InstanceStore.updateComponent.selector, "updateComponent");
140
+ _authorize(functions, InstanceStore.createPool.selector, "createPool");
141
+ _authorize(functions, InstanceStore.createProduct.selector, "createProduct");
142
+ _authorize(functions, InstanceStore.updateProduct.selector, "updateProduct");
143
+ _authorize(functions, InstanceStore.increaseBalance.selector, "increaseBalance");
144
+ _authorize(functions, InstanceStore.increaseFees.selector, "increaseFees");
145
+
146
+ // authorize distribution service role
147
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(DISTRIBUTION()));
148
+ _authorize(functions, InstanceStore.createDistributorType.selector, "createDistributorType");
149
+ _authorize(functions, InstanceStore.updateDistributorType.selector, "updateDistributorType");
150
+ _authorize(functions, InstanceStore.updateDistributorTypeState.selector, "updateDistributorTypeState");
151
+ _authorize(functions, InstanceStore.createDistributor.selector, "createDistributor");
152
+ _authorize(functions, InstanceStore.updateDistributor.selector, "updateDistributor");
153
+ _authorize(functions, InstanceStore.updateDistributorState.selector, "updateDistributorState");
154
+ _authorize(functions, InstanceStore.createReferral.selector, "createReferral");
155
+ _authorize(functions, InstanceStore.updateReferral.selector, "updateReferral");
156
+ _authorize(functions, InstanceStore.updateReferralState.selector, "updateReferralState");
157
+
158
+ // authorize oracle service role
159
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(ORACLE()));
160
+ _authorize(functions, InstanceStore.createRequest.selector, "createRequest");
161
+ _authorize(functions, InstanceStore.updateRequest.selector, "updateRequest");
162
+ _authorize(functions, InstanceStore.updateRequestState.selector, "updateRequestState");
163
+
164
+ // authorize pool service role
165
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POOL()));
166
+ _authorize(functions, InstanceStore.updatePool.selector, "updatePool");
167
+
168
+ // authorize bundle service role
169
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(BUNDLE()));
170
+ _authorize(functions, InstanceStore.createBundle.selector, "createBundle");
171
+ _authorize(functions, InstanceStore.updateBundle.selector, "updateBundle");
172
+ _authorize(functions, InstanceStore.updateBundleState.selector, "updateBundleState");
173
+ _authorize(functions, InstanceStore.increaseLocked.selector, "increaseLocked");
174
+ _authorize(functions, InstanceStore.decreaseLocked.selector, "decreaseLocked");
175
+
176
+ // authorize product service role
177
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(PRODUCT()));
178
+ _authorize(functions, InstanceStore.createRisk.selector, "createRisk");
179
+ _authorize(functions, InstanceStore.updateRisk.selector, "updateRisk");
180
+ _authorize(functions, InstanceStore.updateRiskState.selector, "updateRiskState");
181
+
182
+ // authorize application service role
183
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(APPLICATION()));
184
+ _authorize(functions, InstanceStore.createApplication.selector, "createApplication");
185
+ _authorize(functions, InstanceStore.updateApplication.selector, "updateApplication");
186
+ _authorize(functions, InstanceStore.updateApplicationState.selector, "updateApplicationState");
187
+
188
+ // authorize policy service role
189
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POLICY()));
190
+ _authorize(functions, InstanceStore.updatePolicy.selector, "updatePolicy");
191
+ _authorize(functions, InstanceStore.updatePolicyState.selector, "updatePolicyState");
192
+
193
+ // authorize claim service role
194
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(CLAIM()));
195
+ _authorize(functions, InstanceStore.updatePolicyClaims.selector, "updatePolicyClaims");
196
+ _authorize(functions, InstanceStore.createClaim.selector, "createClaim");
197
+ _authorize(functions, InstanceStore.updateClaim.selector, "updateClaim");
198
+ _authorize(functions, InstanceStore.createPayout.selector, "createPayout");
199
+ _authorize(functions, InstanceStore.updatePayout.selector, "updatePayout");
200
+ }
201
+ }
202
+
@@ -38,24 +38,29 @@ contract InstanceReader {
38
38
  error ErrorInstanceReaderAlreadyInitialized();
39
39
  error ErrorInstanceReaderInstanceAddressZero();
40
40
 
41
- bool private _initialized;
41
+ bool private _initialized = false;
42
42
 
43
43
  IInstance internal _instance;
44
44
  InstanceStore internal _store;
45
45
 
46
- function initialize(address instance) public {
46
+ /// @dev This initializer needs to be called from the instance itself.
47
+ function initialize() public {
47
48
  if(_initialized) {
48
49
  revert ErrorInstanceReaderAlreadyInitialized();
49
50
  }
50
51
 
51
- if(instance == address(0)) {
52
- revert ErrorInstanceReaderInstanceAddressZero();
53
- }
52
+ initializeWithInstance(msg.sender);
53
+ }
54
54
 
55
- _instance = IInstance(instance);
56
- _store = _instance.getInstanceStore();
55
+ /// @dev This initializer needs to be called from the instance itself.
56
+ function initializeWithInstance(address instanceAddress) public {
57
+ if(_initialized) {
58
+ revert ErrorInstanceReaderAlreadyInitialized();
59
+ }
57
60
 
58
61
  _initialized = true;
62
+ _instance = IInstance(instanceAddress);
63
+ _store = _instance.getInstanceStore();
59
64
  }
60
65
 
61
66
 
@@ -339,11 +344,19 @@ contract InstanceReader {
339
344
 
340
345
 
341
346
  function hasRole(address account, RoleId roleId) public view returns (bool isMember) {
342
- (isMember, ) = _instance.getInstanceAccessManager().hasRole(
343
- roleId.toInt(), account);
347
+ return _instance.getInstanceAdmin().hasRole(account, roleId);
348
+ }
349
+
350
+
351
+ function hasAdminRole(address account, RoleId roleId) public view returns (bool isMember) {
352
+ return _instance.getInstanceAdmin().hasAdminRole(account, roleId);
344
353
  }
345
354
 
346
355
 
356
+ function isTargetLocked(address target) public view returns (bool) {
357
+ return _instance.getInstanceAdmin().isTargetLocked(target);
358
+ }
359
+
347
360
  function toPolicyKey(NftId policyNftId) public pure returns (Key32) {
348
361
  return policyNftId.toKey32(POLICY());
349
362
  }
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
6
 
7
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
7
8
  import {Amount} from "../type/Amount.sol";
8
9
  import {BundleManager} from "./BundleManager.sol";
9
10
  import {ChainNft} from "../registry/ChainNft.sol";
@@ -11,13 +12,12 @@ import {NftId} from "../type/NftId.sol";
11
12
  import {RoleId} from "../type/RoleId.sol";
12
13
  import {SecondsLib} from "../type/Seconds.sol";
13
14
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
14
- import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
15
+ import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
15
16
  import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
16
17
 
17
18
  import {Service} from "../shared/Service.sol";
18
19
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
19
20
  import {IService} from "../shared/IService.sol";
20
- import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
21
21
 
22
22
  import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
23
23
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
@@ -29,12 +29,12 @@ import {IStakingService} from "../staking/IStakingService.sol";
29
29
  import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
30
 
31
31
  import {Instance} from "./Instance.sol";
32
+ import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
32
33
  import {IInstance} from "./IInstance.sol";
33
34
  import {InstanceAdmin} from "./InstanceAdmin.sol";
34
35
  import {IInstanceService} from "./IInstanceService.sol";
35
36
  import {InstanceReader} from "./InstanceReader.sol";
36
37
  import {InstanceStore} from "./InstanceStore.sol";
37
- import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
38
38
  import {Seconds} from "../type/Seconds.sol";
39
39
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
40
40
 
@@ -101,71 +101,52 @@ contract InstanceService is
101
101
  NftId clonedInstanceNftId
102
102
  )
103
103
  {
104
+ // tx sender will become instance owner
104
105
  address instanceOwner = msg.sender;
105
- AccessManagerExtendedInitializeable clonedAccessManager = AccessManagerExtendedInitializeable(
106
+
107
+ // start with setting up a new OZ access manager
108
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
106
109
  Clones.clone(_masterAccessManager));
110
+
111
+ // set up the instance admin
112
+ InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
113
+ clonedAccessManager.initialize(
114
+ address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
107
115
 
108
- // initially grants ADMIN_ROLE to this (being the instance service).
109
- // This will allow the instance service to bootstrap the authorizations of the instance.
110
- // Instance service will renounce ADMIN_ROLE when bootstraping is finished
111
- clonedAccessManager.initialize(address(this));
116
+ clonedInstanceAdmin.initialize(
117
+ clonedAccessManager,
118
+ InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
112
119
 
113
- clonedInstance = Instance(Clones.clone(_masterInstance));
114
- clonedInstance.initialize(
115
- address(clonedAccessManager),
116
- address(getRegistry()),
117
- instanceOwner);
118
- // initialize and set before instance reader
119
120
  InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
120
- clonedInstanceStore.initialize(address(clonedInstance));
121
- clonedInstance.setInstanceStore(clonedInstanceStore);
122
-
123
- InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
124
- clonedInstanceReader.initialize(address(clonedInstance));
125
- clonedInstance.setInstanceReader(clonedInstanceReader);
126
-
127
121
  BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
128
- clonedBundleManager.initialize(address(clonedInstance));
129
- clonedInstance.setBundleManager(clonedBundleManager);
122
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
130
123
 
131
- InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
132
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAdmin), 0);
133
- clonedInstanceAdmin.initialize(address(clonedInstance));
134
- clonedInstance.setInstanceAdmin(clonedInstanceAdmin);
135
-
136
- // TODO amend setters with instance specific , policy manager ...
137
-
138
- // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
139
- InstanceAuthorizationsLib.grantInitialAuthorizations(
140
- clonedAccessManager,
141
- clonedInstanceAdmin,
142
- clonedInstance,
143
- clonedBundleManager,
144
- clonedInstanceStore,
145
- instanceOwner,
124
+ // clone instance
125
+ clonedInstance = Instance(Clones.clone(_masterInstance));
126
+ clonedInstance.initialize(
127
+ clonedInstanceAdmin,
128
+ clonedInstanceStore,
129
+ clonedBundleManager,
130
+ clonedInstanceReader,
146
131
  getRegistry(),
147
- getVersion().toMajorPart());
148
-
149
- clonedAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
132
+ instanceOwner);
150
133
 
151
- // register new instance with registry
152
- IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
153
- clonedInstanceNftId = info.nftId;
134
+ // register cloned instance with registry
135
+ clonedInstanceNftId = _registryService.registerInstance(
136
+ clonedInstance, instanceOwner).nftId;
154
137
 
155
- // create corresponding staking target
138
+ // register cloned instance as staking target
156
139
  _stakingService.createInstanceTarget(
157
140
  clonedInstanceNftId,
158
141
  TargetManagerLib.getDefaultLockingPeriod(),
159
142
  TargetManagerLib.getDefaultRewardRate());
160
143
 
144
+ // MUST be set after instance is set up and registered
145
+ clonedInstanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
146
+
161
147
  emit LogInstanceCloned(
162
- address(clonedAccessManager),
163
- address(clonedInstanceAdmin),
164
- address(clonedInstance),
165
- address(clonedInstanceStore),
166
- address(clonedBundleManager),
167
- address(clonedInstanceReader),
168
- clonedInstanceNftId);
148
+ clonedInstanceNftId,
149
+ address(clonedInstance));
169
150
  }
170
151
 
171
152
 
@@ -239,9 +220,10 @@ contract InstanceService is
239
220
  instanceNftId).objectAddress);
240
221
 
241
222
  // no revert in case already locked
242
- instance.getInstanceAdmin().setTargetLockedByService(
243
- componentAddress,
244
- locked);
223
+ // TODO refactor/implement
224
+ // instance.getInstanceAdmin().setTargetLockedByService(
225
+ // componentAddress,
226
+ // locked);
245
227
  }
246
228
 
247
229
 
@@ -255,13 +237,13 @@ contract InstanceService is
255
237
  returns(NftId masterInstanceNftId)
256
238
  {
257
239
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
258
- if(_masterAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
259
240
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
260
241
  if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
261
242
 
262
243
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
263
244
 
264
245
  IInstance instance = IInstance(instanceAddress);
246
+ address accessManagerAddress = instance.authority();
265
247
  InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
266
248
  address instanceAdminAddress = address(instanceAdmin);
267
249
  InstanceReader instanceReader = instance.getInstanceReader();
@@ -271,6 +253,7 @@ contract InstanceService is
271
253
  InstanceStore instanceStore = instance.getInstanceStore();
272
254
  address instanceStoreAddress = address(instanceStore);
273
255
 
256
+ if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
274
257
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
275
258
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
276
259
  if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
@@ -282,7 +265,7 @@ contract InstanceService is
282
265
  if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
283
266
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
284
267
 
285
- _masterAccessManager = instance.authority();
268
+ _masterAccessManager = accessManagerAddress;
286
269
  _masterInstanceAdmin = instanceAdminAddress;
287
270
  _masterInstance = instanceAddress;
288
271
  _masterInstanceReader = instanceReaderAddress;
@@ -314,7 +297,7 @@ contract InstanceService is
314
297
  Instance instance = Instance(instanceInfo.objectAddress);
315
298
 
316
299
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
317
- upgradedInstanceReaderClone.initialize(address(instance));
300
+ upgradedInstanceReaderClone.initializeWithInstance(address(instance));
318
301
  instance.setInstanceReader(upgradedInstanceReaderClone);
319
302
  }
320
303
 
@@ -340,6 +323,25 @@ contract InstanceService is
340
323
  }
341
324
 
342
325
 
326
+ function initializeAuthorization(
327
+ NftId instanceNftId,
328
+ IInstanceLinkedComponent component
329
+ )
330
+ external
331
+ virtual
332
+ restricted()
333
+ {
334
+ (IInstance instance, ) = _validateInstanceAndComponent(
335
+ instanceNftId,
336
+ address(component));
337
+
338
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
339
+ instanceAdmin.initializeComponentAuthorization(
340
+ address(component),
341
+ component.getAuthorization());
342
+ }
343
+
344
+
343
345
  function createComponentTarget(
344
346
  NftId instanceNftId,
345
347
  address targetAddress,
@@ -379,12 +381,14 @@ contract InstanceService is
379
381
  ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
380
382
 
381
383
  InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
382
- instanceAdmin.createGifTarget(targetAddress, targetName);
384
+
385
+ // TODO refactor/implement
386
+ // instanceAdmin.createGifTarget(targetAddress, targetName);
387
+
383
388
  // set proposed target config
384
- // TODO restriction: gif targets are set only once and only here?
385
- // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
386
389
  for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
387
- instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
390
+ // TODO refactor/implement
391
+ // instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
388
392
  }
389
393
  }
390
394
 
@@ -27,21 +27,28 @@ import {IPolicy} from "./module/IPolicy.sol";
27
27
  import {IOracle} from "../oracle/IOracle.sol";
28
28
  import {IRisk} from "./module/IRisk.sol";
29
29
 
30
+ import {ObjectLifecycle} from "./base/ObjectLifecycle.sol";
31
+
30
32
 
31
33
  contract InstanceStore is
32
34
  AccessManagedUpgradeable,
33
35
  BalanceStore,
34
36
  KeyValueStore,
35
- ObjectCounter
37
+ ObjectCounter,
38
+ ObjectLifecycle
36
39
  {
37
- function initialize(address instance)
40
+
41
+ /// @dev This initializer needs to be called from the instance itself.
42
+ function initialize()
38
43
  public
39
44
  initializer()
40
45
  {
46
+ address instance = msg.sender;
41
47
  address authority = IInstance(instance).authority();
42
- __AccessManaged_init(authority);
43
48
 
44
- initializeLifecycle();
49
+ __AccessManaged_init(authority);
50
+ // double initialization, safe
51
+ _initializeLifecycle();
45
52
  }
46
53
 
47
54
  //--- Component ---------------------------------------------------------//
@@ -0,0 +1,106 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
7
+ import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
8
+ import {Lifecycle} from "../../shared/Lifecycle.sol";
9
+
10
+ contract ObjectLifecycle is
11
+ Lifecycle,
12
+ Initializable
13
+ {
14
+ function _initializeLifecycle() internal onlyInitializing
15
+ {
16
+ _setupLifecycle();
17
+ }
18
+
19
+ function _setupLifecycle()
20
+ internal
21
+ override
22
+ {
23
+ _setupBundleLifecycle();
24
+ _setupComponentLifecycle();
25
+ _setupPolicyLifecycle();
26
+ _setupClaimLifecycle();
27
+ _setupPayoutLifecycle();
28
+ _setupRiskLifecycle();
29
+ _setupRequestLifecycle();
30
+
31
+ // setup dummy lifecycles to manage with key value store
32
+ _setUpPoolLifecycle();
33
+ _setUpProductLifecycle();
34
+ _setUpDistributionLifecycle();
35
+ }
36
+
37
+ function _setupComponentLifecycle() private {
38
+ setInitialState(COMPONENT(), ACTIVE());
39
+ setStateTransition(COMPONENT(), ACTIVE(), PAUSED());
40
+ setStateTransition(COMPONENT(), PAUSED(), ACTIVE());
41
+ setStateTransition(COMPONENT(), PAUSED(), ARCHIVED());
42
+ }
43
+
44
+ function _setupBundleLifecycle() private {
45
+ setInitialState(BUNDLE(), ACTIVE());
46
+ setStateTransition(BUNDLE(), ACTIVE(), PAUSED());
47
+ setStateTransition(BUNDLE(), ACTIVE(), CLOSED());
48
+ setStateTransition(BUNDLE(), PAUSED(), ACTIVE());
49
+ setStateTransition(BUNDLE(), PAUSED(), CLOSED());
50
+ }
51
+
52
+ function _setupPolicyLifecycle() private {
53
+ setInitialState(POLICY(), APPLIED());
54
+ setStateTransition(POLICY(), APPLIED(), REVOKED());
55
+ setStateTransition(POLICY(), APPLIED(), DECLINED());
56
+ setStateTransition(POLICY(), APPLIED(), COLLATERALIZED());
57
+ setStateTransition(POLICY(), APPLIED(), ACTIVE());
58
+ setStateTransition(POLICY(), COLLATERALIZED(), ACTIVE());
59
+ setStateTransition(POLICY(), ACTIVE(), CLOSED());
60
+ }
61
+
62
+ function _setupClaimLifecycle() private {
63
+ setInitialState(CLAIM(), SUBMITTED());
64
+ setStateTransition(CLAIM(), SUBMITTED(), CONFIRMED());
65
+ setStateTransition(CLAIM(), SUBMITTED(), DECLINED());
66
+ setStateTransition(CLAIM(), CONFIRMED(), CLOSED());
67
+ }
68
+
69
+ function _setupPayoutLifecycle() private {
70
+ setInitialState(PAYOUT(), EXPECTED());
71
+ setStateTransition(PAYOUT(), EXPECTED(), PAID());
72
+ }
73
+
74
+ function _setupRiskLifecycle() private {
75
+ setInitialState(RISK(), ACTIVE());
76
+ setStateTransition(RISK(), ACTIVE(), PAUSED());
77
+ setStateTransition(RISK(), PAUSED(), ACTIVE());
78
+ setStateTransition(RISK(), PAUSED(), ARCHIVED());
79
+ }
80
+
81
+ function _setupRequestLifecycle() private {
82
+ setInitialState(REQUEST(), ACTIVE());
83
+ setStateTransition(REQUEST(), ACTIVE(), FULFILLED());
84
+ setStateTransition(REQUEST(), ACTIVE(), FAILED());
85
+ setStateTransition(REQUEST(), FAILED(), FULFILLED());
86
+ setStateTransition(REQUEST(), ACTIVE(), CANCELLED());
87
+ }
88
+
89
+ // dummy lifecycle only
90
+ function _setUpPoolLifecycle() private {
91
+ setInitialState(POOL(), ACTIVE());
92
+ }
93
+
94
+ // dummy lifecycle only
95
+ function _setUpProductLifecycle() private {
96
+ setInitialState(PRODUCT(), ACTIVE());
97
+ }
98
+
99
+ // dummy lifecycles only
100
+ function _setUpDistributionLifecycle() private {
101
+ setInitialState(DISTRIBUTION(), ACTIVE());
102
+ setInitialState(DISTRIBUTOR(), ACTIVE());
103
+ setInitialState(DISTRIBUTOR_TYPE(), ACTIVE());
104
+ setInitialState(REFERRAL(), ACTIVE());
105
+ }
106
+ }
@@ -22,16 +22,15 @@ contract ObjectManager is
22
22
  mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _allObjects;
23
23
  IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectManager initialization
24
24
 
25
- /// @dev call to initialize MUST be made in the same transaction as cloning of the contract
26
- function initialize(address instanceAddress)
27
- initializer
28
- external
25
+ /// @dev This initializer needs to be called from the instance itself.
26
+ function initialize()
27
+ external
28
+ initializer()
29
29
  {
30
- IInstance instance = IInstance(instanceAddress);
31
- __Cloneable_init(instance.authority(), address(instance.getRegistry()));
32
- _instance = instance;
30
+ _instance = IInstance(msg.sender);
31
+ __Cloneable_init(_instance.authority(), address(_instance.getRegistry()));
33
32
 
34
- emit LogObjectManagerInitialized(instanceAddress);
33
+ emit LogObjectManagerInitialized(address(_instance));
35
34
  }
36
35
 
37
36
  function getInstance() external view returns (IInstance) {