@etherisc/gif-next 0.0.2-92c50c2-136 → 0.0.2-92cdbc9-533

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 (353) hide show
  1. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  3. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  10. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  13. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  16. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +10 -10
  17. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +17 -242
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +106 -90
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +55 -55
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -16
  35. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -39
  37. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +0 -13
  39. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +27 -39
  41. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  42. package/artifacts/contracts/instance/Instance.sol/Instance.json +29 -90
  43. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  45. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  47. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +110 -76
  49. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +61 -121
  51. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  53. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +73 -79
  55. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  57. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  58. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  60. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +6 -6
  62. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -9
  64. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  70. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  72. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  74. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  76. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  78. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
  80. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
  83. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  85. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  87. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  89. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  91. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +44 -44
  93. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +40 -40
  95. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
  98. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  100. package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
  101. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  102. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
  103. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
  105. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  106. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  107. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  109. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  110. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  111. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  113. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  114. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  115. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  117. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  118. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  120. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  122. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
  123. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  124. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  125. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
  126. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  128. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  129. package/artifacts/contracts/product/PricingService.sol/PricingService.json +58 -58
  130. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  132. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  133. package/artifacts/contracts/product/Product.sol/Product.json +13 -153
  134. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  135. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  136. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  138. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  140. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  141. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +0 -44
  142. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  143. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  144. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  145. package/artifacts/contracts/registry/Registry.sol/Registry.json +24 -68
  146. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  147. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +233 -388
  148. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  149. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  150. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  152. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  153. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +6 -6
  154. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +53 -71
  156. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +24 -16
  158. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  160. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  161. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  162. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +62 -86
  163. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  164. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -61
  165. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  168. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
  172. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  173. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  174. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  181. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  182. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
  183. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  184. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  185. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  186. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +22 -22
  187. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  188. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  189. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  190. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  191. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -14
  193. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  194. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  195. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  196. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  197. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  198. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  199. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  200. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  201. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  202. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  203. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  204. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  205. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  206. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
  207. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  208. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  209. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +6 -6
  211. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  213. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  215. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  216. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  217. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  219. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +131 -131
  221. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  222. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
  223. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  224. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  225. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/Amount.sol/AmountLib.json +8 -8
  227. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  228. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  229. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  231. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  233. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  235. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  236. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  237. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  239. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  240. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  241. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  243. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  245. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  247. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  249. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  251. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  253. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  255. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  257. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  259. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  261. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  263. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  265. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  267. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  269. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  271. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  273. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  274. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  275. package/contracts/authorization/Authorization.sol +218 -0
  276. package/contracts/authorization/IAccess.sol +48 -0
  277. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  278. package/contracts/authorization/IAuthorization.sol +54 -0
  279. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  280. package/contracts/{registry → authorization}/IServiceAuthorization.sol +5 -5
  281. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  282. package/contracts/{registry → authorization}/ServiceAuthorization.sol +17 -17
  283. package/contracts/distribution/BasicDistribution.sol +149 -0
  284. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  285. package/contracts/distribution/Distribution.sol +126 -104
  286. package/contracts/distribution/DistributionService.sol +10 -5
  287. package/contracts/distribution/IDistributionComponent.sol +17 -35
  288. package/contracts/distribution/IDistributionService.sol +5 -1
  289. package/contracts/instance/IInstance.sol +3 -4
  290. package/contracts/instance/IInstanceService.sol +7 -12
  291. package/contracts/instance/Instance.sol +58 -67
  292. package/contracts/instance/InstanceAdmin.sol +202 -267
  293. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  294. package/contracts/instance/InstanceReader.sol +22 -9
  295. package/contracts/instance/InstanceService.sol +66 -62
  296. package/contracts/instance/InstanceStore.sol +5 -1
  297. package/contracts/instance/base/ObjectManager.sol +7 -8
  298. package/contracts/oracle/BasicOracle.sol +48 -0
  299. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  300. package/contracts/oracle/IOracle.sol +16 -0
  301. package/contracts/oracle/Oracle.sol +61 -49
  302. package/contracts/pool/BasicPool.sol +164 -0
  303. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  304. package/contracts/pool/IPoolComponent.sol +0 -60
  305. package/contracts/pool/Pool.sol +143 -131
  306. package/contracts/pool/PoolService.sol +1 -1
  307. package/contracts/product/BasicProduct.sol +82 -0
  308. package/contracts/product/BasicProductAuthorization.sol +40 -0
  309. package/contracts/product/IProductComponent.sol +6 -9
  310. package/contracts/product/Product.sol +103 -88
  311. package/contracts/registry/IRegistry.sol +5 -8
  312. package/contracts/registry/Registry.sol +1 -5
  313. package/contracts/registry/RegistryAdmin.sol +101 -71
  314. package/contracts/registry/ReleaseManager.sol +53 -69
  315. package/contracts/registry/ServiceAuthorizationV3.sol +9 -9
  316. package/contracts/shared/ComponentService.sol +19 -58
  317. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  318. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  319. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  320. package/contracts/type/ObjectType.sol +34 -0
  321. package/contracts/type/RoleId.sol +55 -82
  322. package/contracts/type/UFixed.sol +6 -0
  323. package/package.json +1 -1
  324. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  325. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  326. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  327. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  328. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
  329. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  330. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  331. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  332. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  333. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  334. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  335. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  336. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  337. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  338. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  339. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  340. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  341. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  342. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  343. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  344. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  345. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  346. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  347. package/contracts/shared/AccessManagerCustom.sol +0 -741
  348. package/contracts/shared/AccessManagerExtended.sol +0 -481
  349. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  350. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  351. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  352. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  353. 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
 
@@ -37,11 +37,15 @@ contract InstanceStore is
37
37
  ObjectCounter,
38
38
  ObjectLifecycle
39
39
  {
40
- function initialize(address instance)
40
+
41
+ /// @dev This initializer needs to be called from the instance itself.
42
+ function initialize()
41
43
  public
42
44
  initializer()
43
45
  {
46
+ address instance = msg.sender;
44
47
  address authority = IInstance(instance).authority();
48
+
45
49
  __AccessManaged_init(authority);
46
50
  // double initialization, safe
47
51
  _initializeLifecycle();
@@ -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) {
@@ -0,0 +1,48 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAuthorization} from "../../contracts/authorization/IAuthorization.sol";
5
+ import {NftId} from "../../contracts/type/NftId.sol";
6
+ import {Oracle} from "../../contracts/oracle/Oracle.sol";
7
+ import {RequestId} from "../../contracts/type/RequestId.sol";
8
+
9
+ contract BasicOracle is
10
+ Oracle
11
+ {
12
+
13
+ /// Function to provide reponse data releated to request id.
14
+ function respond(
15
+ RequestId requestId,
16
+ bytes memory responseData
17
+ )
18
+ external
19
+ virtual
20
+ restricted()
21
+ {
22
+ _respond(requestId, responseData);
23
+ }
24
+
25
+ function _initializeBasicOracle(
26
+ address registry,
27
+ NftId instanceNftId,
28
+ IAuthorization authorization,
29
+ address initialOwner,
30
+ string memory name,
31
+ address token
32
+ )
33
+ internal
34
+ virtual
35
+ onlyInitializing()
36
+ {
37
+
38
+ _initializeOracle(
39
+ registry,
40
+ instanceNftId,
41
+ authorization,
42
+ initialOwner,
43
+ name,
44
+ token,
45
+ "",
46
+ "");
47
+ }
48
+ }
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Authorization} from "../authorization/Authorization.sol";
5
+ import {BasicOracle} from "./BasicOracle.sol";
6
+ import {ORACLE} from "../type/ObjectType.sol";
7
+ import {IAccess} from "../authorization/IAccess.sol";
8
+ import {IOracle} from "./IOracle.sol";
9
+ import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
11
+
12
+
13
+ contract BasicOracleAuthorization
14
+ is Authorization
15
+ {
16
+
17
+ constructor(string memory componentName)
18
+ Authorization(componentName)
19
+ {}
20
+
21
+ function _setupTargets()
22
+ internal
23
+ virtual override
24
+ {
25
+ // basic component target
26
+ _addComponentTargetWithRole(ORACLE());
27
+ }
28
+
29
+
30
+ function _setupTargetAuthorizations()
31
+ internal
32
+ virtual override
33
+ {
34
+ IAccess.FunctionInfo[] storage functions;
35
+
36
+ // authorize public role (open access to any account, only allows to lock target)
37
+ functions = _authorizeForTarget(getTargetName(), getServiceRole(ORACLE()));
38
+ _authorize(functions, IOracle.request.selector, "request");
39
+ _authorize(functions, IOracle.cancel.selector, "cancel");
40
+
41
+ // authorize public role (open access to any account, only allows to lock target)
42
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
43
+ _authorize(functions, BasicOracle.respond.selector, "respond");
44
+ }
45
+ }
46
+
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {NftId} from "../type/NftId.sol";
5
+ import {RequestId} from "../type/RequestId.sol";
5
6
  import {Timestamp} from "../type/Timestamp.sol";
6
7
 
7
8
 
@@ -17,4 +18,19 @@ interface IOracle {
17
18
  Timestamp expiredAt; // expiry timestamp
18
19
  bool isCancelled;
19
20
  }
21
+
22
+
23
+ /// @dev Callback function for oracle service to notify this oracle component to retreive some oracle data.
24
+ function request(
25
+ RequestId requestId,
26
+ NftId requesterId,
27
+ bytes calldata requestData,
28
+ Timestamp expiryAt
29
+ ) external;
30
+
31
+
32
+ /// @dev Callback function for oracle service to notify this oracle component that the specified oracle request has ben cancelled by the requestor.
33
+ function cancel(
34
+ RequestId requestId
35
+ ) external;
20
36
  }