@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
@@ -0,0 +1,218 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "./IAccess.sol";
5
+ import {IAuthorization} from "./IAuthorization.sol";
6
+ import {ObjectType, ObjectTypeLib} from "../type/ObjectType.sol";
7
+ import {RoleId, RoleIdLib, ADMIN_ROLE} from "../type/RoleId.sol";
8
+ import {SelectorLib} from "../type/Selector.sol";
9
+ import {Str, StrLib} from "../type/String.sol";
10
+ import {TimestampLib} from "../type/Timestamp.sol";
11
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
12
+
13
+ contract Authorization
14
+ is IAuthorization
15
+ {
16
+ uint256 public constant GIF_VERSION = 3;
17
+ string public constant ROLE_NAME_SUFFIX = "Role";
18
+ string public constant SERVICE_ROLE_NAME_SUFFIX = "ServiceRole";
19
+
20
+ string internal _mainTargetName = "Component";
21
+ Str[] internal _targets;
22
+
23
+ mapping(Str target => RoleId roleid) internal _targetRole;
24
+ mapping(Str target => bool exists) internal _targetExists;
25
+
26
+ RoleId[] internal _roles;
27
+ mapping(RoleId role => RoleInfo info) internal _roleInfo;
28
+
29
+ mapping(Str target => RoleId[] authorizedRoles) internal _authorizedRoles;
30
+ mapping(Str target => mapping(RoleId authorizedRole => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
31
+
32
+
33
+ constructor(string memory mainTargetName) {
34
+ _mainTargetName = mainTargetName;
35
+
36
+ _setupRoles();
37
+ _setupTargets();
38
+ _setupTargetAuthorizations();
39
+ }
40
+
41
+ function getRelease() public virtual pure returns(VersionPart release) {
42
+ return VersionPartLib.toVersionPart(GIF_VERSION);
43
+ }
44
+
45
+ function getRoles() external view returns(RoleId[] memory roles) {
46
+ return _roles;
47
+ }
48
+
49
+ function getServiceRole(ObjectType serviceDomain) public virtual pure returns (RoleId serviceRoleId) {
50
+ return RoleIdLib.roleForTypeAndVersion(
51
+ serviceDomain, getRelease());
52
+ }
53
+
54
+ function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory info) {
55
+ return _roleInfo[roleId];
56
+ }
57
+
58
+ function roleExists(RoleId roleId) public view returns(bool exists) {
59
+ return _roleInfo[roleId].roleType != RoleType.Undefined;
60
+ }
61
+
62
+ function getTarget() public view returns(Str) {
63
+ if (_targets.length > 0) {
64
+ return _targets[0];
65
+ }
66
+
67
+ return StrLib.toStr("");
68
+ }
69
+
70
+ function getTargets() external view returns(Str[] memory targets) {
71
+ return _targets;
72
+ }
73
+
74
+ function targetExists(Str target) external view returns(bool exists) {
75
+ return _targetExists[target];
76
+ }
77
+
78
+ function getTargetRole(Str target) external view returns(RoleId roleId) {
79
+ return _targetRole[target];
80
+ }
81
+
82
+ function getAuthorizedRoles(Str target) external view returns(RoleId[] memory roleIds) {
83
+ return _authorizedRoles[target];
84
+ }
85
+
86
+ function getAuthorizedFunctions(Str target, RoleId roleId) external view returns(IAccess.FunctionInfo[] memory authorizatedFunctions) {
87
+ return _authorizedFunctions[target][roleId];
88
+ }
89
+
90
+ function getTargetName() public virtual view returns (string memory name) {
91
+ return _mainTargetName;
92
+ }
93
+
94
+ /// @dev Overwrite this function for a specific realease.
95
+ /// The first target added represents the components/module main target.
96
+ function _setupTargets() internal virtual { }
97
+
98
+ /// @dev Overwrite this function for a specific realease.
99
+ function _setupRoles() internal virtual {}
100
+
101
+ /// @dev Overwrite this function for a specific realease.
102
+ function _setupTargetAuthorizations() internal virtual {}
103
+
104
+ /// @dev Use this method to to add an authorized role.
105
+ function _addRole(RoleId roleId, RoleInfo memory info) internal {
106
+ _roles.push(roleId);
107
+ _roleInfo[roleId] = info;
108
+ }
109
+
110
+ /// @dev Add a contract role for the provided role id and name.
111
+ function _addContractRole(RoleId roleId, string memory name) internal {
112
+ _addRole(
113
+ roleId,
114
+ _toRoleInfo(
115
+ ADMIN_ROLE(),
116
+ RoleType.Contract,
117
+ 1,
118
+ name));
119
+ }
120
+
121
+ /// @dev Add the versioned service role for the specified service domain
122
+ function _addServiceRole(ObjectType serviceDomain) internal {
123
+ _addContractRole(
124
+ getServiceRole(serviceDomain),
125
+ ObjectTypeLib.toVersionedName(
126
+ ObjectTypeLib.toName(serviceDomain),
127
+ SERVICE_ROLE_NAME_SUFFIX,
128
+ getRelease().toInt()));
129
+ }
130
+
131
+ function _addComponentTargetWithRole(ObjectType componentType) internal {
132
+ _addTargetWithRole(
133
+ getTargetName(),
134
+ RoleIdLib.toComponentRoleId(componentType, 0),
135
+ _toTargetRoleName(
136
+ getTargetName()));
137
+
138
+ }
139
+
140
+ /// @dev Add a contract role for the provided role id and name.
141
+ function _addCustomRole(RoleId roleId, RoleId adminRoleId, uint32 maxMemberCount, string memory name) internal {
142
+ _addRole(
143
+ roleId,
144
+ _toRoleInfo(
145
+ adminRoleId,
146
+ RoleType.Custom,
147
+ maxMemberCount,
148
+ name));
149
+ }
150
+
151
+ /// @dev Use this method to to add an authorized target together with its target role.
152
+ function _addTargetWithRole(
153
+ string memory targetName,
154
+ RoleId roleId,
155
+ string memory roleName
156
+ )
157
+ internal
158
+ {
159
+ // add target
160
+ Str target = StrLib.toStr(targetName);
161
+ _targets.push(target);
162
+
163
+ _targetExists[target] = true;
164
+
165
+ // link role to target if defined
166
+ if (roleId != RoleIdLib.zero()) {
167
+ // add role if new
168
+ if (!roleExists(roleId)) {
169
+ _addContractRole(roleId, roleName);
170
+ }
171
+
172
+ // link target to role
173
+ _targetRole[target] = roleId;
174
+ }
175
+ }
176
+
177
+ /// @dev Use this method to to add an authorized target.
178
+ function _addTarget(string memory name) internal {
179
+ _addTargetWithRole(name, RoleIdLib.zero(), "");
180
+ }
181
+
182
+ /// @dev Use this method to authorize the specified role to access the target.
183
+ function _authorizeForTarget(string memory target, RoleId authorizedRoleId)
184
+ internal
185
+ returns (IAccess.FunctionInfo[] storage authorizatedFunctions)
186
+ {
187
+ Str targetStr = StrLib.toStr(target);
188
+ _authorizedRoles[targetStr].push(authorizedRoleId);
189
+ return _authorizedFunctions[targetStr][authorizedRoleId];
190
+ }
191
+
192
+ /// @dev Use this method to authorize a specific function authorization
193
+ function _authorize(IAccess.FunctionInfo[] storage functions, bytes4 selector, string memory name) internal {
194
+ functions.push(
195
+ IAccess.FunctionInfo({
196
+ selector: SelectorLib.toSelector(selector),
197
+ name: StrLib.toStr(name),
198
+ createdAt: TimestampLib.blockTimestamp()}));
199
+ }
200
+
201
+ function _toTargetRoleName(string memory targetName) internal view returns (string memory) {
202
+ return string(
203
+ abi.encodePacked(
204
+ targetName,
205
+ ROLE_NAME_SUFFIX));
206
+ }
207
+
208
+ /// @dev creates a role info object from the provided parameters
209
+ function _toRoleInfo(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) internal view returns (RoleInfo memory info) {
210
+ return RoleInfo({
211
+ name: StrLib.toStr(name),
212
+ adminRoleId: adminRoleId,
213
+ roleType: roleType,
214
+ maxMemberCount: maxMemberCount,
215
+ createdAt: TimestampLib.blockTimestamp()});
216
+ }
217
+ }
218
+
@@ -8,19 +8,19 @@ import {Timestamp} from "../type/Timestamp.sol";
8
8
 
9
9
  interface IAccess {
10
10
 
11
+ enum RoleType {
12
+ Undefined, // no role must have this type
13
+ Contract, // roles assigned to contracts, cannot be revoked
14
+ Gif, // framework roles that may be freely assigned and revoked
15
+ Custom // use case specific rules for components
16
+ }
17
+
11
18
  struct RoleInfo {
12
19
  RoleId adminRoleId;
20
+ RoleType roleType;
21
+ uint32 maxMemberCount;
13
22
  Str name;
14
- bool isCustom;
15
- uint256 maxMemberCount;
16
- bool memberRemovalDisabled;
17
23
  Timestamp createdAt;
18
- Timestamp disabledAt;
19
- }
20
-
21
- struct RoleNameInfo {
22
- RoleId roleId;
23
- bool exists;
24
24
  }
25
25
 
26
26
  struct TargetInfo {
@@ -29,15 +29,20 @@ interface IAccess {
29
29
  Timestamp createdAt;
30
30
  }
31
31
 
32
- struct TargeNameInfo {
33
- address target;
34
- Timestamp createdAt;
35
- }
36
-
37
32
  struct FunctionInfo {
38
- Selector selector; // function selector
39
33
  Str name; // function name
34
+ Selector selector; // function selector
40
35
  Timestamp createdAt;
41
36
  }
42
37
 
38
+ struct RoleNameInfo {
39
+ RoleId roleId;
40
+ bool exists;
41
+ }
42
+
43
+ struct TargeNameInfo {
44
+ address target;
45
+ bool exists;
46
+ }
47
+
43
48
  }
@@ -15,8 +15,7 @@ interface IAccessAdmin is
15
15
  {
16
16
 
17
17
  // roles
18
- event LogRoleCreated(RoleId roleId, RoleId roleAdminId, string name);
19
- event LogRoleDisabled(RoleId roleId, bool disabled, Timestamp disabledAtOld);
18
+ event LogRoleCreated(RoleId roleId, RoleType roleType, RoleId roleAdminId, string name);
20
19
  event LogTargetCreated(address target, string name);
21
20
  event LogFunctionCreated(address target, Selector selector, string name);
22
21
 
@@ -66,50 +65,56 @@ interface IAccessAdmin is
66
65
  /// Role disabling only prevents the role from being granted to new accounts.
67
66
  /// Existing role members may still execute functions that are authorized for that role.
68
67
  /// Permissioned: the caller must have the manager role (getManagerRole).
69
- function setRoleDisabled(RoleId roleId, bool disabled) external;
68
+ // TODO move to instance admin
69
+ // function setRoleDisabled(RoleId roleId, bool disabled) external;
70
70
 
71
71
  /// @dev Grant the specified account the provided role.
72
72
  /// Permissioned: the caller must have the roles admin role.
73
- function grantRole(address account, RoleId roleId) external;
73
+ // TODO move to instance admin
74
+ // function grantRole(address account, RoleId roleId) external;
74
75
 
75
76
  /// @dev Revoke the provided role from the specified account.
76
77
  /// Permissioned: the caller must have the roles admin role.
77
- function revokeRole(address account, RoleId roleId) external;
78
+ // TODO move to instance admin
79
+ // function revokeRole(address account, RoleId roleId) external;
78
80
 
79
81
  /// @dev Removes the provided role from the caller
80
- function renounceRole(RoleId roleId) external;
82
+ // TODO move to instance admin
83
+ // function renounceRole(RoleId roleId) external;
81
84
 
82
85
  /// @dev Set the locked status of the speicified contract.
83
86
  /// IMPORTANT: using this function the AccessManager might itself be put into locked state from which it cannot be unlocked again.
84
87
  /// Overwrite this function if a different use case specific behaviour is required.
85
88
  /// Alternatively, add specific function to just unlock this contract without a restricted() modifier.
86
89
  /// Permissioned: the caller must have the manager role (getManagerRole).
87
- function setTargetLocked(address target, bool locked) external;
90
+ // TODO move to instance admin
91
+ // function setTargetLocked(address target, bool locked) external;
88
92
 
89
93
  /// @dev Specifies which functions of the target can be accessed by the provided role.
90
94
  /// Previously existing authorizations will be overwritten.
91
95
  /// Authorizing the admin role is not allowed, use function unauthorizedFunctions for this.
92
96
  /// Permissioned: the caller must have the manager role (getManagerRole).
93
- function authorizeFunctions(address target, RoleId roleId, FunctionInfo[] memory functions) external;
97
+ // TODO move to instance admin
98
+ // function authorizeFunctions(address target, RoleId roleId, FunctionInfo[] memory functions) external;
94
99
 
95
100
  /// @dev Specifies for which functionss to remove any previous authorization
96
101
  /// Permissioned: the caller must have the manager role (getManagerRole).
97
- function unauthorizeFunctions(address target, FunctionInfo[] memory functions) external;
102
+ // TODO move to instance admin
103
+ // function unauthorizeFunctions(address target, FunctionInfo[] memory functions) external;
98
104
 
99
105
  //--- view functions ----------------------------------------------------//
100
106
 
101
107
  function roles() external view returns (uint256 numberOfRoles);
102
108
  function getRoleId(uint256 idx) external view returns (RoleId roleId);
103
109
  function getAdminRole() external view returns (RoleId roleId);
104
- function getManagerRole() external view returns (RoleId roleId);
105
110
  function getPublicRole() external view returns (RoleId roleId);
106
111
 
107
112
  function roleExists(RoleId roleId) external view returns (bool exists);
108
- function isRoleDisabled(RoleId roleId) external view returns (bool roleIsActive);
109
113
  function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory roleInfo);
110
114
  function getRoleForName(Str name) external view returns (RoleNameInfo memory);
111
115
 
112
116
  function hasRole(address account, RoleId roleId) external view returns (bool);
117
+ function hasAdminRole(address account, RoleId roleId) external view returns (bool);
113
118
  function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers);
114
119
  function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account);
115
120
 
@@ -124,6 +129,7 @@ interface IAccessAdmin is
124
129
  function getAuthorizedFunction(address target, uint256 idx) external view returns (FunctionInfo memory func, RoleId roleId);
125
130
  function canCall(address caller, address target, Selector selector) external view returns (bool can);
126
131
 
132
+ function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) external view returns (RoleInfo memory);
127
133
  function toFunction(bytes4 selector, string memory name) external view returns (FunctionInfo memory);
128
134
  function isAccessManaged(address target) external view returns (bool);
129
135
  function deployer() external view returns (address);
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {ObjectType} from "../type/ObjectType.sol";
6
+ import {RoleId} from "../type/RoleId.sol";
7
+ import {Str} from "../type/String.sol";
8
+ import {VersionPart} from "../type/Version.sol";
9
+
10
+ interface IAuthorization is
11
+ IAccess
12
+ {
13
+
14
+ /// @dev Returns the release (VersionPart) for which the authorizations are defined by this contract.
15
+ /// Matches with the release returned by the linked service authorization.
16
+ function getRelease() external view returns(VersionPart release);
17
+
18
+ /// @dev Returns the list of involved roles.
19
+ function getRoles() external view returns(RoleId[] memory roles);
20
+
21
+ /// @dev Returns the service role for the specified service domain.
22
+ function getServiceRole(ObjectType serviceDomain) external pure returns (RoleId serviceRoleId);
23
+
24
+ /// @dev Returns the name for the provided role id.
25
+ function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory roleInfo);
26
+
27
+ /// @dev Returns true iff the specified role id exists.
28
+ function roleExists(RoleId roleId) external view returns(bool exists);
29
+
30
+ /// @dev Returns the main target id name as string.
31
+ /// This name is used to derive the target id and a corresponding target role name
32
+ /// Overwrite this function to change the basic pool target name.
33
+ function getTargetName() external view returns (string memory name);
34
+
35
+ /// @dev Returns the main target.
36
+ function getTarget() external view returns(Str target);
37
+
38
+ /// @dev Returns the complete list of targets.
39
+ function getTargets() external view returns(Str[] memory targets);
40
+
41
+ /// @dev Returns true iff the specified target exists.
42
+ function targetExists(Str target) external view returns(bool exists);
43
+
44
+ /// @dev Returns the role id associated with the target.
45
+ /// If no role is associated with the target the zero role id is returned.
46
+ function getTargetRole(Str target) external view returns(RoleId roleId);
47
+
48
+ /// @dev For the given target the list of authorized role ids is returned
49
+ function getAuthorizedRoles(Str target) external view returns(RoleId[] memory roleIds);
50
+
51
+ /// @dev For the given target and role id the list of authorized functions is returned
52
+ function getAuthorizedFunctions(Str target, RoleId roleId) external view returns(FunctionInfo[] memory authorizatedFunctions);
53
+ }
54
+
@@ -1,27 +1,21 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccess} from "../authorization/IAccess.sol";
4
+ import {IAccess} from "./IAccess.sol";
5
+ import {IAuthorization} from "./IAuthorization.sol";
6
+ import {ObjectType} from "../type/ObjectType.sol";
5
7
  import {RoleId} from "../type/RoleId.sol";
6
8
  import {Str} from "../type/String.sol";
7
- import {VersionPart} from "../type/Version.sol";
8
9
 
9
- interface IModuleAuthorization {
10
+ interface IModuleAuthorization is
11
+ IAccess,
12
+ IAuthorization
13
+ {
10
14
 
11
- /// @dev Returns the release (VersionPart) for which the instance authorizations are defined by this contract.
12
- /// Matches with the release returned by the linked service authorization.
13
- function getRelease() external view returns(VersionPart release);
15
+ /// @dev Returns the list of service targets.
16
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains);
14
17
 
15
- /// @dev Returns the list of module targets.
16
- function getTargets() external view returns(Str[] memory targets);
17
-
18
- /// @dev Returns the list of involved roles.
19
- function getRoles() external view returns(RoleId[] memory roles);
20
-
21
- /// @dev For the given target the list of authorized role ids is returned
22
- function getAuthorizedRoles(Str target) external view returns(RoleId[] memory roleIds);
23
-
24
- /// @dev For the given target and role id the list of authorized functions is returned
25
- function getAuthorizedFunctions(Str target, RoleId roleId) external view returns(IAccess.FunctionInfo[] memory authorizatedFunctions);
18
+ /// @dev Returns the service target for the specified domain.
19
+ function getServiceTarget(ObjectType serviceDomain) external view returns(Str serviceTarget);
26
20
  }
27
21
 
@@ -1,100 +1,70 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccess} from "../authorization/IAccess.sol";
4
+ import {Authorization} from "./Authorization.sol";
5
+ import {IAccess} from "./IAccess.sol";
5
6
  import {IModuleAuthorization} from "./IModuleAuthorization.sol";
6
7
  import {ObjectType, ObjectTypeLib} from "../type/ObjectType.sol";
7
- import {RoleId, RoleIdLib} from "../type/RoleId.sol";
8
+ import {RoleId, RoleIdLib, ADMIN_ROLE} from "../type/RoleId.sol";
8
9
  import {SelectorLib} from "../type/Selector.sol";
9
10
  import {Str, StrLib} from "../type/String.sol";
10
11
  import {TimestampLib} from "../type/Timestamp.sol";
11
12
  import {VersionPart} from "../type/Version.sol";
12
13
 
13
- contract ModuleAuthorization
14
- is IModuleAuthorization
14
+ contract ModuleAuthorization is
15
+ Authorization,
16
+ IModuleAuthorization
15
17
  {
16
18
 
17
- Str[] internal _targets;
18
- RoleId[] internal _roles;
19
- mapping(RoleId role => Str name) internal _roleName;
19
+ ObjectType[] internal _serviceDomains;
20
+ mapping(ObjectType domain => Str target) internal _serviceTarget;
20
21
 
21
- mapping(Str target => RoleId[] authorizedRoles) internal _authorizedRoles;
22
- mapping(Str target => mapping(RoleId authorizedRole => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
22
+ constructor(string memory moduleName)
23
+ Authorization(moduleName)
24
+ { }
23
25
 
24
- constructor() {
25
- _setupTargets();
26
- _setupRoles();
27
- _setupTargetAuthorizations();
26
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
27
+ return _serviceDomains;
28
28
  }
29
29
 
30
- function getRelease() public virtual view returns(VersionPart release) { }
31
-
32
- function getTargets() external view returns(Str[] memory targets) {
33
- return _targets;
34
- }
35
-
36
- function getRoles() external view returns(RoleId[] memory roles) {
37
- return _roles;
38
- }
39
-
40
- function getRoleName(RoleId roleId) external view returns (Str name) {
41
- return _roleName[roleId];
42
- }
43
-
44
- function getAuthorizedRoles(Str target) external view returns(RoleId[] memory roleIds) {
45
- return _authorizedRoles[target];
30
+ function getServiceTarget(ObjectType serviceDomain) external view returns(Str serviceTarget) {
31
+ return _serviceTarget[serviceDomain];
46
32
  }
47
33
 
48
- function getAuthorizedFunctions(Str target, RoleId roleId) external view returns(IAccess.FunctionInfo[] memory authorizatedFunctions) {
49
- return _authorizedFunctions[target][roleId];
34
+ /// @dev Add a GIF role for the provided role id and name.
35
+ function _addGifRole(RoleId roleId, string memory name) internal returns (RoleInfo memory info) {
36
+ _addRole(
37
+ roleId,
38
+ _toRoleInfo(
39
+ ADMIN_ROLE(),
40
+ RoleType.Gif,
41
+ type(uint32).max,
42
+ name));
50
43
  }
51
44
 
52
- /// @dev Overwrite this function for a specific realease.
53
- function _setupTargets() internal virtual {}
54
-
55
- /// @dev Overwrite this function for a specific realease.
56
- function _setupRoles() internal virtual {}
45
+ /// @dev Add the service target role for the specified service domain
46
+ function _addServiceTargetWithRole(ObjectType serviceDomain) internal {
47
+ // add service domain
48
+ _serviceDomains.push(serviceDomain);
57
49
 
58
- /// @dev Overwrite this function for a specific realease.
59
- function _setupTargetAuthorizations() internal virtual {}
50
+ // get versioned target name
51
+ string memory serviceTargetName = ObjectTypeLib.toVersionedName(
52
+ ObjectTypeLib.toName(serviceDomain),
53
+ "Service",
54
+ getRelease().toInt());
60
55
 
61
- /// @dev Use this method to to add an authorized target.
62
- function _addTarget(string memory name) internal {
63
- _targets.push(StrLib.toStr(name));
64
- }
56
+ _serviceTarget[serviceDomain] = StrLib.toStr(serviceTargetName);
65
57
 
66
- function _addServiceRole(ObjectType serviceDomain) internal {
67
- _addRole(
68
- _getServiceRoleId(serviceDomain),
69
- ObjectTypeLib.toVersionedName(
58
+ RoleId serviceRoleId = getServiceRole(serviceDomain);
59
+ string memory serviceRoleName = ObjectTypeLib.toVersionedName(
70
60
  ObjectTypeLib.toName(serviceDomain),
71
61
  "ServiceRole",
72
- getRelease().toInt()));
73
- }
74
-
75
- /// @dev Use this method to to add an authorized role.
76
- function _addRole(RoleId roleId, string memory name) internal {
77
- _roles.push(roleId);
78
- _roleName[roleId] = StrLib.toStr(name);
79
- }
62
+ getRelease().toInt());
80
63
 
81
- /// @dev Use this method to authorize the specified role to access the target.
82
- function _authorizeForTarget(string memory target, RoleId authorizedRoleId)
83
- internal
84
- returns (IAccess.FunctionInfo[] storage authorizatedFunctions)
85
- {
86
- Str targetStr = StrLib.toStr(target);
87
- _authorizedRoles[targetStr].push(authorizedRoleId);
88
- return _authorizedFunctions[targetStr][authorizedRoleId];
89
- }
90
-
91
- /// @dev Use this method to authorize a specific function authorization
92
- function _authorize(IAccess.FunctionInfo[] storage functions, bytes4 selector, string memory name) internal {
93
- functions.push(
94
- IAccess.FunctionInfo({
95
- selector: SelectorLib.toSelector(selector),
96
- name: StrLib.toStr(name),
97
- createdAt: TimestampLib.blockTimestamp()}));
64
+ _addTargetWithRole(
65
+ serviceTargetName,
66
+ serviceRoleId,
67
+ serviceRoleName);
98
68
  }
99
69
 
100
70
  /// @dev role id for targets registry, staking and instance
@@ -104,13 +74,5 @@ contract ModuleAuthorization
104
74
  {
105
75
  return RoleIdLib.roleForType(targetDomain);
106
76
  }
107
-
108
- function _getServiceRoleId(ObjectType serviceDomain)
109
- internal
110
- returns (RoleId serviceRoleId)
111
- {
112
- return RoleIdLib.roleForTypeAndVersion(
113
- serviceDomain, getRelease());
114
- }
115
77
  }
116
78