@etherisc/gif-next 0.0.2-e802d97-251 → 0.0.2-e83e4a5-207

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 (398) hide show
  1. package/README.md +18 -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/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  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/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  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 +138 -93
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +65 -57
  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 +45 -16
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -108
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +58 -78
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +147 -40
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -140
  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 +210 -103
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -49
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -135
  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/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -78
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
  82. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
  84. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
  86. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +66 -29
  88. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +44 -32
  90. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  92. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  94. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +78 -49
  96. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +50 -42
  98. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +13 -0
  100. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
  102. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +13 -0
  104. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
  106. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +62 -41
  108. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +42 -38
  110. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -37
  112. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -36
  114. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  116. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  118. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +106 -69
  120. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +64 -52
  122. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
  124. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
  126. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
  128. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
  130. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
  132. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
  134. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +84 -47
  136. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +53 -41
  138. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.json +92 -63
  140. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +57 -49
  142. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  143. package/artifacts/contracts/product/Product.sol/Product.json +13 -153
  144. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
  146. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +38 -30
  148. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  150. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +0 -44
  152. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -0
  154. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  155. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.json +24 -68
  157. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1505 -166
  159. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +50 -13
  161. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -25
  163. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  165. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  166. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +185 -318
  167. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  169. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  171. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  172. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +82 -85
  174. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -60
  176. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  177. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
  178. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  179. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +13 -0
  183. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
  185. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  187. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  189. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  195. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  197. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  198. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
  199. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  200. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  201. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  203. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  204. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +22 -22
  205. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  207. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  208. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  209. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -14
  211. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  213. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  214. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  215. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Service.sol/Service.json +13 -0
  217. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  218. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  219. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  220. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  221. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  222. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  223. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  224. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
  225. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +44 -28
  227. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  228. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -84
  229. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  230. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -56
  233. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  235. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +92 -73
  237. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -47
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +197 -149
  241. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  242. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
  243. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  244. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  245. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Amount.sol/AmountLib.json +8 -8
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  251. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  255. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  259. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  260. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  269. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  275. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  279. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  281. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  282. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  283. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  285. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  287. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  289. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  291. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  293. package/contracts/authorization/AccessAdmin.sol +591 -0
  294. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  295. package/contracts/authorization/Authorization.sol +218 -0
  296. package/contracts/authorization/IAccess.sol +48 -0
  297. package/contracts/authorization/IAccessAdmin.sol +136 -0
  298. package/contracts/authorization/IAuthorization.sol +54 -0
  299. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  300. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  301. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  302. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  303. package/contracts/distribution/BasicDistribution.sol +149 -0
  304. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  305. package/contracts/distribution/Distribution.sol +126 -104
  306. package/contracts/distribution/DistributionService.sol +13 -9
  307. package/contracts/distribution/IDistributionComponent.sol +17 -35
  308. package/contracts/distribution/IDistributionService.sol +5 -1
  309. package/contracts/instance/IInstance.sol +11 -7
  310. package/contracts/instance/IInstanceService.sol +29 -18
  311. package/contracts/instance/Instance.sol +103 -85
  312. package/contracts/instance/InstanceAdmin.sol +202 -267
  313. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  314. package/contracts/instance/InstanceReader.sol +24 -9
  315. package/contracts/instance/InstanceService.sol +151 -70
  316. package/contracts/instance/InstanceStore.sol +15 -20
  317. package/contracts/instance/base/BalanceStore.sol +11 -6
  318. package/contracts/instance/base/Cloneable.sol +2 -25
  319. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  320. package/contracts/instance/base/ObjectManager.sol +7 -10
  321. package/contracts/oracle/BasicOracle.sol +48 -0
  322. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  323. package/contracts/oracle/IOracle.sol +16 -0
  324. package/contracts/oracle/Oracle.sol +61 -49
  325. package/contracts/oracle/OracleService.sol +5 -4
  326. package/contracts/pool/BasicPool.sol +164 -0
  327. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  328. package/contracts/pool/BundleService.sol +19 -19
  329. package/contracts/pool/IPoolComponent.sol +0 -60
  330. package/contracts/pool/Pool.sol +143 -131
  331. package/contracts/pool/PoolService.sol +7 -8
  332. package/contracts/product/ApplicationService.sol +5 -5
  333. package/contracts/product/BasicProduct.sol +82 -0
  334. package/contracts/product/BasicProductAuthorization.sol +40 -0
  335. package/contracts/product/ClaimService.sol +5 -5
  336. package/contracts/product/IProductComponent.sol +6 -9
  337. package/contracts/product/PolicyService.sol +5 -5
  338. package/contracts/product/PricingService.sol +4 -5
  339. package/contracts/product/Product.sol +103 -88
  340. package/contracts/product/ProductService.sol +5 -5
  341. package/contracts/registry/IRegistry.sol +5 -8
  342. package/contracts/registry/Registry.sol +6 -4
  343. package/contracts/registry/RegistryAdmin.sol +276 -148
  344. package/contracts/registry/RegistryService.sol +5 -5
  345. package/contracts/registry/RegistryServiceManager.sol +0 -5
  346. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  347. package/contracts/registry/ReleaseManager.sol +161 -274
  348. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  349. package/contracts/shared/ComponentService.sol +24 -61
  350. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  351. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  352. package/contracts/shared/IKeyValueStore.sol +1 -0
  353. package/contracts/shared/ILifecycle.sol +1 -2
  354. package/contracts/shared/IService.sol +7 -0
  355. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  356. package/contracts/shared/KeyValueStore.sol +6 -2
  357. package/contracts/shared/Lifecycle.sol +16 -69
  358. package/contracts/shared/Service.sol +27 -21
  359. package/contracts/staking/IStakingService.sol +11 -7
  360. package/contracts/staking/StakeManagerLib.sol +52 -0
  361. package/contracts/staking/Staking.sol +58 -96
  362. package/contracts/staking/StakingLifecycle.sol +23 -0
  363. package/contracts/staking/StakingService.sol +61 -56
  364. package/contracts/staking/StakingServiceManager.sol +0 -1
  365. package/contracts/staking/StakingStore.sol +82 -39
  366. package/contracts/type/ObjectType.sol +169 -62
  367. package/contracts/type/RoleId.sol +103 -75
  368. package/contracts/type/Selector.sol +102 -0
  369. package/contracts/type/String.sol +53 -0
  370. package/contracts/type/UFixed.sol +6 -0
  371. package/package.json +4 -1
  372. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  373. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  374. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  375. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  376. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  377. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  378. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  379. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  380. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  381. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  382. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  383. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  384. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  385. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  386. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  387. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  388. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  389. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  390. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  391. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  392. package/contracts/shared/AccessManagerCustom.sol +0 -736
  393. package/contracts/shared/AccessManagerExtended.sol +0 -470
  394. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  395. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  396. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  397. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  398. 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
 
@@ -337,9 +342,19 @@ contract InstanceReader {
337
342
  );
338
343
  }
339
344
 
345
+
340
346
  function hasRole(address account, RoleId roleId) public view returns (bool isMember) {
341
- (isMember, ) = _instance.getInstanceAccessManager().hasRole(
342
- 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);
353
+ }
354
+
355
+
356
+ function isTargetLocked(address target) public view returns (bool) {
357
+ return _instance.getInstanceAdmin().isTargetLocked(target);
343
358
  }
344
359
 
345
360
  function toPolicyKey(NftId policyNftId) public pure returns (Key32) {
@@ -4,19 +4,20 @@ 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";
8
+ import {Amount} from "../type/Amount.sol";
7
9
  import {BundleManager} from "./BundleManager.sol";
8
10
  import {ChainNft} from "../registry/ChainNft.sol";
9
11
  import {NftId} from "../type/NftId.sol";
10
12
  import {RoleId} from "../type/RoleId.sol";
11
13
  import {SecondsLib} from "../type/Seconds.sol";
12
- import {UFixedLib} from "../type/UFixed.sol";
13
- 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";
14
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
14
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
15
+ import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
16
+ import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
15
17
 
16
18
  import {Service} from "../shared/Service.sol";
17
19
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
18
20
  import {IService} from "../shared/IService.sol";
19
- import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
20
21
 
21
22
  import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
22
23
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
@@ -28,12 +29,15 @@ import {IStakingService} from "../staking/IStakingService.sol";
28
29
  import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
29
30
 
30
31
  import {Instance} from "./Instance.sol";
32
+ import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
31
33
  import {IInstance} from "./IInstance.sol";
32
34
  import {InstanceAdmin} from "./InstanceAdmin.sol";
33
35
  import {IInstanceService} from "./IInstanceService.sol";
34
36
  import {InstanceReader} from "./InstanceReader.sol";
35
37
  import {InstanceStore} from "./InstanceStore.sol";
36
- import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
38
+ import {Seconds} from "../type/Seconds.sol";
39
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
40
+
37
41
 
38
42
  contract InstanceService is
39
43
  Service,
@@ -53,6 +57,28 @@ contract InstanceService is
53
57
  address internal _masterInstanceBundleManager;
54
58
  address internal _masterInstanceStore;
55
59
 
60
+
61
+ modifier onlyInstance() {
62
+ address instanceAddress = msg.sender;
63
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
64
+ if (instanceNftId.eqz()) {
65
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
66
+ }
67
+
68
+ ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
69
+ if (objectType != INSTANCE()) {
70
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
71
+ }
72
+
73
+ VersionPart instanceVersion = IInstance(instanceAddress).getMajorVersion();
74
+ if (instanceVersion != getVersion().toMajorPart()) {
75
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
76
+ }
77
+
78
+ _;
79
+ }
80
+
81
+
56
82
  modifier onlyInstanceOwner(NftId instanceNftId) {
57
83
  if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
58
84
  revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
@@ -75,73 +101,105 @@ contract InstanceService is
75
101
  NftId clonedInstanceNftId
76
102
  )
77
103
  {
104
+ // tx sender will become instance owner
78
105
  address instanceOwner = msg.sender;
79
- AccessManagerExtendedInitializeable clonedAccessManager = AccessManagerExtendedInitializeable(
106
+
107
+ // start with setting up a new OZ access manager
108
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
80
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
81
115
 
82
- // initially grants ADMIN_ROLE to this (being the instance service).
83
- // This will allow the instance service to bootstrap the authorizations of the instance.
84
- // Instance service will renounce ADMIN_ROLE when bootstraping is finished
85
- clonedAccessManager.initialize(address(this));
116
+ clonedInstanceAdmin.initialize(
117
+ clonedAccessManager,
118
+ InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
86
119
 
87
- clonedInstance = Instance(Clones.clone(_masterInstance));
88
- clonedInstance.initialize(
89
- address(clonedAccessManager),
90
- address(getRegistry()),
91
- instanceOwner);
92
- // initialize and set before instance reader
93
120
  InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
94
- clonedInstanceStore.initialize(address(clonedInstance));
95
- clonedInstance.setInstanceStore(clonedInstanceStore);
96
-
97
- InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
98
- clonedInstanceReader.initialize(address(clonedInstance));
99
- clonedInstance.setInstanceReader(clonedInstanceReader);
100
-
101
121
  BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
102
- clonedBundleManager.initialize(address(clonedInstance));
103
- clonedInstance.setBundleManager(clonedBundleManager);
122
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
104
123
 
105
- InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
106
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAdmin), 0);
107
- clonedInstanceAdmin.initialize(address(clonedInstance));
108
- clonedInstance.setInstanceAdmin(clonedInstanceAdmin);
109
-
110
- // TODO amend setters with instance specific , policy manager ...
111
-
112
- // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
113
- InstanceAuthorizationsLib.grantInitialAuthorizations(
114
- clonedAccessManager,
115
- clonedInstanceAdmin,
116
- clonedInstance,
117
- clonedBundleManager,
118
- clonedInstanceStore,
119
- instanceOwner,
124
+ // clone instance
125
+ clonedInstance = Instance(Clones.clone(_masterInstance));
126
+ clonedInstance.initialize(
127
+ clonedInstanceAdmin,
128
+ clonedInstanceStore,
129
+ clonedBundleManager,
130
+ clonedInstanceReader,
120
131
  getRegistry(),
121
- getVersion().toMajorPart());
122
-
123
- clonedAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
132
+ instanceOwner);
124
133
 
125
- // register new instance with registry
126
- IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
127
- clonedInstanceNftId = info.nftId;
134
+ // register cloned instance with registry
135
+ clonedInstanceNftId = _registryService.registerInstance(
136
+ clonedInstance, instanceOwner).nftId;
128
137
 
129
- // create corresponding staking target
138
+ // register cloned instance as staking target
130
139
  _stakingService.createInstanceTarget(
131
140
  clonedInstanceNftId,
132
141
  TargetManagerLib.getDefaultLockingPeriod(),
133
142
  TargetManagerLib.getDefaultRewardRate());
134
143
 
144
+ // MUST be set after instance is set up and registered
145
+ clonedInstanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
146
+
135
147
  emit LogInstanceCloned(
136
- address(clonedAccessManager),
137
- address(clonedInstanceAdmin),
138
- address(clonedInstance),
139
- address(clonedInstanceStore),
140
- address(clonedBundleManager),
141
- address(clonedInstanceReader),
142
- clonedInstanceNftId);
148
+ clonedInstanceNftId,
149
+ address(clonedInstance));
150
+ }
151
+
152
+
153
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
154
+ external
155
+ virtual
156
+ onlyInstance()
157
+ {
158
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
159
+ _stakingService.setInstanceLockingPeriod(
160
+ instanceNftId,
161
+ stakeLockingPeriod);
162
+ }
163
+
164
+
165
+ function setStakingRewardRate(UFixed rewardRate)
166
+ external
167
+ virtual
168
+ onlyInstance()
169
+ {
170
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
171
+ _stakingService.setInstanceRewardRate(
172
+ instanceNftId,
173
+ rewardRate);
174
+ }
175
+
176
+
177
+ function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
178
+ external
179
+ virtual
180
+ onlyInstance()
181
+ {
182
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
183
+ _stakingService.refillInstanceRewardReserves(
184
+ instanceNftId,
185
+ rewardProvider,
186
+ dipAmount);
187
+ }
188
+
189
+
190
+ function withdrawStakingRewardReserves(Amount dipAmount)
191
+ external
192
+ virtual
193
+ onlyInstance()
194
+ returns (Amount newBalance)
195
+ {
196
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
197
+ _stakingService.withdrawInstanceRewardReserves(
198
+ instanceNftId,
199
+ dipAmount);
143
200
  }
144
201
 
202
+
145
203
  function setComponentLocked(bool locked)
146
204
  external
147
205
  virtual
@@ -162,9 +220,10 @@ contract InstanceService is
162
220
  instanceNftId).objectAddress);
163
221
 
164
222
  // no revert in case already locked
165
- instance.getInstanceAdmin().setTargetLockedByService(
166
- componentAddress,
167
- locked);
223
+ // TODO refactor/implement
224
+ // instance.getInstanceAdmin().setTargetLockedByService(
225
+ // componentAddress,
226
+ // locked);
168
227
  }
169
228
 
170
229
 
@@ -172,24 +231,19 @@ contract InstanceService is
172
231
  return _masterInstanceReader;
173
232
  }
174
233
 
175
- // From IService
176
- function getDomain() public pure override returns(ObjectType) {
177
- return INSTANCE();
178
- }
179
-
180
234
  function setAndRegisterMasterInstance(address instanceAddress)
181
235
  external
182
236
  onlyOwner
183
237
  returns(NftId masterInstanceNftId)
184
238
  {
185
239
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
186
- if(_masterAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
187
240
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
188
241
  if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
189
242
 
190
243
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
191
244
 
192
245
  IInstance instance = IInstance(instanceAddress);
246
+ address accessManagerAddress = instance.authority();
193
247
  InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
194
248
  address instanceAdminAddress = address(instanceAdmin);
195
249
  InstanceReader instanceReader = instance.getInstanceReader();
@@ -199,6 +253,7 @@ contract InstanceService is
199
253
  InstanceStore instanceStore = instance.getInstanceStore();
200
254
  address instanceStoreAddress = address(instanceStore);
201
255
 
256
+ if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
202
257
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
203
258
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
204
259
  if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
@@ -210,7 +265,7 @@ contract InstanceService is
210
265
  if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
211
266
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
212
267
 
213
- _masterAccessManager = instance.authority();
268
+ _masterAccessManager = accessManagerAddress;
214
269
  _masterInstanceAdmin = instanceAdminAddress;
215
270
  _masterInstance = instanceAddress;
216
271
  _masterInstanceReader = instanceReaderAddress;
@@ -242,7 +297,7 @@ contract InstanceService is
242
297
  Instance instance = Instance(instanceInfo.objectAddress);
243
298
 
244
299
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
245
- upgradedInstanceReaderClone.initialize(address(instance));
300
+ upgradedInstanceReaderClone.initializeWithInstance(address(instance));
246
301
  instance.setInstanceReader(upgradedInstanceReaderClone);
247
302
  }
248
303
 
@@ -268,6 +323,25 @@ contract InstanceService is
268
323
  }
269
324
 
270
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
+
271
345
  function createComponentTarget(
272
346
  NftId instanceNftId,
273
347
  address targetAddress,
@@ -307,12 +381,14 @@ contract InstanceService is
307
381
  ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
308
382
 
309
383
  InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
310
- instanceAdmin.createGifTarget(targetAddress, targetName);
384
+
385
+ // TODO refactor/implement
386
+ // instanceAdmin.createGifTarget(targetAddress, targetName);
387
+
311
388
  // set proposed target config
312
- // TODO restriction: gif targets are set only once and only here?
313
- // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
314
389
  for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
315
- instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
390
+ // TODO refactor/implement
391
+ // instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
316
392
  }
317
393
  }
318
394
 
@@ -348,7 +424,7 @@ contract InstanceService is
348
424
  IRegistry registry = getRegistry();
349
425
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
350
426
  if(instanceInfo.objectType != INSTANCE()) {
351
- revert ErrorInstanceServiceNotInstance(instanceNftId);
427
+ revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
352
428
  }
353
429
 
354
430
  IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
@@ -359,4 +435,9 @@ contract InstanceService is
359
435
  instance = Instance(instanceInfo.objectAddress);
360
436
  componentNftId = componentInfo.nftId;
361
437
  }
438
+
439
+ // From IService
440
+ function _getDomain() internal pure override returns(ObjectType) {
441
+ return INSTANCE();
442
+ }
362
443
  }