@etherisc/gif-next 0.0.2-8d9d4d6-542 → 0.0.2-8daf0fe-431

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 (333) hide show
  1. package/README.md +18 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +107 -361
  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 +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +71 -207
  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 +1 -1
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +185 -5
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +5 -5
  17. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +271 -15
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +7 -7
  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 +90 -74
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +30 -30
  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 +1203 -290
  45. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +337 -25
  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 +18 -42
  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/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -9
  62. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  68. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  69. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  70. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  71. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  72. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  73. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  74. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  75. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  76. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
  77. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
  80. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +4 -4
  82. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +3 -3
  84. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  85. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  86. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  87. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  88. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  89. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +2 -2
  90. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +2 -2
  92. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  94. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
  95. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  97. package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
  98. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +2 -2
  100. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +2 -2
  102. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  103. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +4 -4
  104. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +3 -3
  106. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  107. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  108. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  109. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  110. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
  112. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
  114. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  115. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  116. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  117. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  118. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  119. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
  120. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  121. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  122. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +10 -10
  123. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +6 -6
  125. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PricingService.sol/PricingService.json +40 -40
  127. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +21 -21
  129. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  130. package/artifacts/contracts/product/Product.sol/Product.json +13 -153
  131. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ProductService.sol/ProductService.json +2 -2
  133. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +2 -2
  135. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  136. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  137. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +0 -44
  138. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  139. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  140. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  141. package/artifacts/contracts/registry/Registry.sol/Registry.json +18 -62
  142. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  143. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +196 -387
  144. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  145. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  146. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  148. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +29 -126
  150. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +11 -11
  152. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  154. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  155. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  156. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +56 -80
  157. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +29 -41
  159. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  160. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  161. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  162. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  164. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
  165. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  167. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  168. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  173. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  174. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  175. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
  176. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  177. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +2 -2
  178. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +2 -2
  180. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  181. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +2 -2
  182. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  184. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  185. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  186. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  188. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  189. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  190. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  191. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  192. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  193. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  194. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  195. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  196. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  197. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  198. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  199. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  200. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  201. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  202. package/artifacts/contracts/staking/Staking.sol/Staking.json +2 -2
  203. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  204. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +2 -2
  205. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  206. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  207. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
  209. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
  211. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  213. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  214. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  215. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  216. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  217. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -2
  218. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  219. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  220. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  221. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  222. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  223. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  224. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  225. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  226. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  227. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  228. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  229. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  230. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  231. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +26 -2
  233. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  235. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  237. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  239. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  241. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  243. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  251. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  253. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  255. package/contracts/authorization/AccessAdmin.sol +115 -276
  256. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  257. package/contracts/authorization/Authorization.sol +218 -0
  258. package/contracts/authorization/IAccess.sol +20 -15
  259. package/contracts/authorization/IAccessAdmin.sol +17 -11
  260. package/contracts/authorization/IAuthorization.sol +54 -0
  261. package/contracts/authorization/IModuleAuthorization.sol +11 -17
  262. package/contracts/authorization/ModuleAuthorization.sol +41 -79
  263. package/contracts/distribution/BasicDistribution.sol +149 -0
  264. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  265. package/contracts/distribution/Distribution.sol +126 -104
  266. package/contracts/distribution/DistributionService.sol +10 -5
  267. package/contracts/distribution/IDistributionComponent.sol +17 -35
  268. package/contracts/distribution/IDistributionService.sol +5 -1
  269. package/contracts/instance/IInstance.sol +1 -2
  270. package/contracts/instance/IInstanceService.sol +7 -12
  271. package/contracts/instance/Instance.sol +52 -57
  272. package/contracts/instance/InstanceAdmin.sol +202 -267
  273. package/contracts/instance/InstanceAuthorizationV3.sol +69 -43
  274. package/contracts/instance/InstanceReader.sol +22 -9
  275. package/contracts/instance/InstanceService.sol +66 -62
  276. package/contracts/instance/InstanceStore.sol +5 -1
  277. package/contracts/instance/base/ObjectManager.sol +7 -8
  278. package/contracts/oracle/BasicOracle.sol +48 -0
  279. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  280. package/contracts/oracle/IOracle.sol +16 -0
  281. package/contracts/oracle/Oracle.sol +61 -49
  282. package/contracts/pool/BasicPool.sol +164 -0
  283. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  284. package/contracts/pool/IPoolComponent.sol +0 -60
  285. package/contracts/pool/Pool.sol +143 -131
  286. package/contracts/pool/PoolService.sol +1 -1
  287. package/contracts/product/BasicProduct.sol +82 -0
  288. package/contracts/product/BasicProductAuthorization.sol +40 -0
  289. package/contracts/product/IProductComponent.sol +6 -9
  290. package/contracts/product/Product.sol +103 -88
  291. package/contracts/registry/IRegistry.sol +5 -8
  292. package/contracts/registry/Registry.sol +1 -5
  293. package/contracts/registry/RegistryAdmin.sol +81 -43
  294. package/contracts/registry/ReleaseManager.sol +8 -19
  295. package/contracts/registry/ServiceAuthorizationV3.sol +1 -1
  296. package/contracts/shared/ComponentService.sol +18 -56
  297. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  298. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  299. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  300. package/contracts/type/ObjectType.sol +11 -0
  301. package/contracts/type/RoleId.sol +55 -82
  302. package/contracts/type/UFixed.sol +6 -0
  303. package/package.json +4 -1
  304. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.dbg.json +0 -4
  305. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.json +0 -1639
  306. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.dbg.json +0 -4
  307. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.json +0 -1676
  308. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  309. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  310. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  311. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  312. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  313. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  314. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  315. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  316. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  317. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  318. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  319. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  320. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  321. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  322. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  323. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  324. package/contracts/authorization/InstanceAdmin.sol +0 -108
  325. package/contracts/instance/InstanceAdminNew.sol +0 -74
  326. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  327. package/contracts/shared/AccessManagerCustom.sol +0 -741
  328. package/contracts/shared/AccessManagerExtended.sol +0 -481
  329. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  330. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  331. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  332. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  333. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
@@ -2,21 +2,26 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {
5
- ALL, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE
5
+ PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE
6
6
  } from "../../contracts/type/ObjectType.sol";
7
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";
8
13
  import {IAccess} from "../authorization/IAccess.sol";
9
14
  import {Instance} from "../instance/Instance.sol";
10
15
  import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
11
16
  import {InstanceStore} from "../instance/InstanceStore.sol";
12
17
  import {ModuleAuthorization} from "../authorization/ModuleAuthorization.sol";
18
+ import {RoleId} from "../type/RoleId.sol";
13
19
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
14
20
 
15
21
 
16
22
  contract InstanceAuthorizationV3
17
23
  is ModuleAuthorization
18
24
  {
19
- uint256 public constant GIF_VERSION = 3;
20
25
 
21
26
  string public constant INSTANCE_TARGET_NAME = "Instance";
22
27
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
@@ -24,37 +29,51 @@ contract InstanceAuthorizationV3
24
29
  string public constant BUNDLE_MANAGER_TARGET_NAME = "BundleManager";
25
30
 
26
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) {}
27
38
 
28
- function getRelease() public override view returns(VersionPart release) {
29
- return VersionPartLib.toVersionPart(GIF_VERSION);
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);
30
48
  }
31
49
 
50
+
32
51
  function _setupTargets()
33
52
  internal
34
53
  override
35
54
  {
36
- _addTarget(INSTANCE_TARGET_NAME);
55
+ // instance target
56
+ _addTargetWithRole(
57
+ INSTANCE_TARGET_NAME,
58
+ _getTargetRoleId(INSTANCE()),
59
+ INSTANCE_ROLE_NAME);
60
+
61
+ // instance supporting targets
37
62
  _addTarget(INSTANCE_STORE_TARGET_NAME);
38
63
  _addTarget(INSTANCE_ADMIN_TARGET_NAME);
39
64
  _addTarget(BUNDLE_MANAGER_TARGET_NAME);
40
- }
41
65
 
42
- function _setupRoles()
43
- internal
44
- override
45
- {
46
- _addRole(_getTargetRoleId(INSTANCE()), INSTANCE_ROLE_NAME);
47
-
48
- _addServiceRole(INSTANCE());
49
- _addServiceRole(COMPONENT());
50
- _addServiceRole(DISTRIBUTION());
51
- _addServiceRole(ORACLE());
52
- _addServiceRole(POOL());
53
- _addServiceRole(BUNDLE());
54
- _addServiceRole(PRODUCT());
55
- _addServiceRole(APPLICATION());
56
- _addServiceRole(POLICY());
57
- _addServiceRole(CLAIM());
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());
58
77
  }
59
78
 
60
79
 
@@ -65,6 +84,22 @@ contract InstanceAuthorizationV3
65
84
  _setupInstanceAuthorization();
66
85
  _setupInstanceAdminAuthorization();
67
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");
68
103
  }
69
104
 
70
105
 
@@ -74,10 +109,7 @@ contract InstanceAuthorizationV3
74
109
  IAccess.FunctionInfo[] storage functions;
75
110
 
76
111
  // authorize instance service role
77
- functions = _authorizeForTarget( INSTANCE_TARGET_NAME, _getServiceRoleId(INSTANCE()));
78
- _authorize(functions, Instance.setInstanceAdmin.selector, "setInstanceAdmin");
79
- _authorize(functions, Instance.setInstanceStore.selector, "setInstanceStore");
80
- _authorize(functions, Instance.setBundleManager.selector, "setBundleManager");
112
+ functions = _authorizeForTarget(INSTANCE_TARGET_NAME, getServiceRole(INSTANCE()));
81
113
  _authorize(functions, Instance.setInstanceReader.selector, "setInstanceReader");
82
114
  }
83
115
 
@@ -89,16 +121,10 @@ contract InstanceAuthorizationV3
89
121
 
90
122
  // authorize instance role
91
123
  functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _getTargetRoleId(INSTANCE()));
92
- _authorize(functions, InstanceAdmin.createRole.selector, "createRole");
93
- _authorize(functions, InstanceAdmin.createTarget.selector, "createTarget");
94
- _authorize(functions, InstanceAdmin.setTargetFunctionRoleByInstance.selector, "setTargetFunctionRoleByInstance");
95
- _authorize(functions, InstanceAdmin.setTargetLockedByInstance.selector, "setTargetLockedByInstance");
124
+ _authorize(functions, InstanceAdmin.grantRole.selector, "grantRole");
96
125
 
97
126
  // authorize instance service role
98
- functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _getServiceRoleId(INSTANCE()));
99
- _authorize(functions, InstanceAdmin.createGifTarget.selector, "createGifTarget");
100
- _authorize(functions, InstanceAdmin.setTargetLockedByService.selector, "setTargetLockedByService");
101
- _authorize(functions, InstanceAdmin.setTargetFunctionRoleByService.selector, "setTargetFunctionRoleByService");
127
+ // functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, getServiceRole(INSTANCE()));
102
128
  }
103
129
 
104
130
 
@@ -108,7 +134,7 @@ contract InstanceAuthorizationV3
108
134
  IAccess.FunctionInfo[] storage functions;
109
135
 
110
136
  // authorize component service role
111
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, _getServiceRoleId(COMPONENT()));
137
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(COMPONENT()));
112
138
  _authorize(functions, InstanceStore.createComponent.selector, "createComponent");
113
139
  _authorize(functions, InstanceStore.updateComponent.selector, "updateComponent");
114
140
  _authorize(functions, InstanceStore.createPool.selector, "createPool");
@@ -118,7 +144,7 @@ contract InstanceAuthorizationV3
118
144
  _authorize(functions, InstanceStore.increaseFees.selector, "increaseFees");
119
145
 
120
146
  // authorize distribution service role
121
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, _getServiceRoleId(DISTRIBUTION()));
147
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(DISTRIBUTION()));
122
148
  _authorize(functions, InstanceStore.createDistributorType.selector, "createDistributorType");
123
149
  _authorize(functions, InstanceStore.updateDistributorType.selector, "updateDistributorType");
124
150
  _authorize(functions, InstanceStore.updateDistributorTypeState.selector, "updateDistributorTypeState");
@@ -130,17 +156,17 @@ contract InstanceAuthorizationV3
130
156
  _authorize(functions, InstanceStore.updateReferralState.selector, "updateReferralState");
131
157
 
132
158
  // authorize oracle service role
133
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, _getServiceRoleId(ORACLE()));
159
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(ORACLE()));
134
160
  _authorize(functions, InstanceStore.createRequest.selector, "createRequest");
135
161
  _authorize(functions, InstanceStore.updateRequest.selector, "updateRequest");
136
162
  _authorize(functions, InstanceStore.updateRequestState.selector, "updateRequestState");
137
163
 
138
164
  // authorize pool service role
139
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, _getServiceRoleId(POOL()));
165
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POOL()));
140
166
  _authorize(functions, InstanceStore.updatePool.selector, "updatePool");
141
167
 
142
168
  // authorize bundle service role
143
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, _getServiceRoleId(BUNDLE()));
169
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(BUNDLE()));
144
170
  _authorize(functions, InstanceStore.createBundle.selector, "createBundle");
145
171
  _authorize(functions, InstanceStore.updateBundle.selector, "updateBundle");
146
172
  _authorize(functions, InstanceStore.updateBundleState.selector, "updateBundleState");
@@ -148,24 +174,24 @@ contract InstanceAuthorizationV3
148
174
  _authorize(functions, InstanceStore.decreaseLocked.selector, "decreaseLocked");
149
175
 
150
176
  // authorize product service role
151
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, _getServiceRoleId(PRODUCT()));
177
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(PRODUCT()));
152
178
  _authorize(functions, InstanceStore.createRisk.selector, "createRisk");
153
179
  _authorize(functions, InstanceStore.updateRisk.selector, "updateRisk");
154
180
  _authorize(functions, InstanceStore.updateRiskState.selector, "updateRiskState");
155
181
 
156
182
  // authorize application service role
157
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, _getServiceRoleId(APPLICATION()));
183
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(APPLICATION()));
158
184
  _authorize(functions, InstanceStore.createApplication.selector, "createApplication");
159
185
  _authorize(functions, InstanceStore.updateApplication.selector, "updateApplication");
160
186
  _authorize(functions, InstanceStore.updateApplicationState.selector, "updateApplicationState");
161
187
 
162
188
  // authorize policy service role
163
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, _getServiceRoleId(POLICY()));
189
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POLICY()));
164
190
  _authorize(functions, InstanceStore.updatePolicy.selector, "updatePolicy");
165
191
  _authorize(functions, InstanceStore.updatePolicyState.selector, "updatePolicyState");
166
192
 
167
193
  // authorize claim service role
168
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, _getServiceRoleId(CLAIM()));
194
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(CLAIM()));
169
195
  _authorize(functions, InstanceStore.updatePolicyClaims.selector, "updatePolicyClaims");
170
196
  _authorize(functions, InstanceStore.createClaim.selector, "createClaim");
171
197
  _authorize(functions, InstanceStore.updateClaim.selector, "updateClaim");
@@ -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
 
@@ -34,11 +34,15 @@ contract InstanceStore is
34
34
  KeyValueStore,
35
35
  ObjectCounter
36
36
  {
37
- function initialize(address instance)
37
+
38
+ /// @dev This initializer needs to be called from the instance itself.
39
+ function initialize()
38
40
  public
39
41
  initializer()
40
42
  {
43
+ address instance = msg.sender;
41
44
  address authority = IInstance(instance).authority();
45
+
42
46
  __AccessManaged_init(authority);
43
47
 
44
48
  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
+