@etherisc/gif-next 0.0.2-fd4931b-974 → 0.0.2-fd9539f-062

Sign up to get free protection for your applications and to get access to all the features.
Files changed (432) hide show
  1. package/README.md +20 -3
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +19 -13
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +115 -80
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +86 -59
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -5
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +20 -1
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +32 -101
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +83 -71
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +121 -12
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +105 -85
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +125 -29
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +195 -64
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +206 -49
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +79 -36
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +248 -118
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -71
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  47. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  49. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
  51. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  53. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  55. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  57. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  59. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +91 -48
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +74 -43
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +20 -1
  67. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -5
  69. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +35 -1
  71. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  72. package/artifacts/contracts/pool/Pool.sol/Pool.json +18 -12
  73. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +84 -42
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -40
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +79 -36
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -37
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +119 -68
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +88 -53
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +20 -1
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +20 -1
  93. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -5
  95. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.json +20 -1
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +97 -46
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +77 -42
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.json +105 -62
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +81 -50
  105. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  106. package/artifacts/contracts/product/Product.sol/Product.json +18 -12
  107. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.json +61 -26
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +59 -32
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +82 -45
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -1
  117. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  119. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  120. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/Registry.sol/Registry.json +254 -97
  122. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  124. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -15
  126. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +51 -35
  128. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +288 -182
  130. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  132. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  135. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +46 -177
  136. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  148. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +119 -69
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +85 -54
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  155. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +20 -1
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  158. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  164. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  165. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
  166. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  167. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -1
  168. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -5
  170. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +0 -10
  172. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  173. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  174. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  175. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  178. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  181. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  183. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  184. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  185. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +18 -12
  186. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  187. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +10 -20
  188. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  189. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +6 -6
  190. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +27 -35
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  196. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +35 -16
  198. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +15 -9
  200. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  202. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  205. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  206. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  207. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  208. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  209. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  210. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +247 -579
  211. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  212. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +471 -62
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  214. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  215. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  216. package/artifacts/contracts/staking/Staking.sol/Staking.json +303 -798
  217. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -164
  219. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -39
  221. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +503 -120
  223. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +67 -43
  225. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  226. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  227. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  228. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +281 -18
  229. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  230. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  237. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  239. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  241. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  242. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  243. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  245. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  246. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  247. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +96 -2
  249. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  251. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  253. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  254. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  255. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  257. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +114 -4
  259. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +52 -2
  261. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  262. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  263. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  264. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  265. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  267. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  268. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  269. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  271. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  273. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
  275. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  277. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  279. package/contracts/distribution/Distribution.sol +2 -4
  280. package/contracts/distribution/DistributionService.sol +5 -6
  281. package/contracts/distribution/DistributionServiceManager.sol +1 -13
  282. package/contracts/distribution/IDistributionComponent.sol +1 -1
  283. package/contracts/distribution/IDistributionService.sol +1 -1
  284. package/contracts/instance/BundleManager.sol +1 -1
  285. package/contracts/instance/IInstance.sol +22 -12
  286. package/contracts/instance/IInstanceService.sol +27 -13
  287. package/contracts/instance/Instance.sol +85 -50
  288. package/contracts/instance/InstanceAdmin.sol +331 -0
  289. package/contracts/instance/InstanceAuthorizationsLib.sol +193 -152
  290. package/contracts/instance/InstanceReader.sol +33 -7
  291. package/contracts/instance/InstanceService.sol +120 -48
  292. package/contracts/instance/InstanceServiceManager.sol +1 -1
  293. package/contracts/instance/InstanceStore.sol +30 -21
  294. package/contracts/instance/base/BalanceStore.sol +12 -7
  295. package/contracts/instance/base/Cloneable.sol +3 -26
  296. package/contracts/instance/base/ObjectCounter.sol +21 -0
  297. package/contracts/instance/base/ObjectManager.sol +2 -4
  298. package/contracts/instance/module/IAccess.sol +3 -11
  299. package/contracts/instance/module/IBundle.sol +1 -1
  300. package/contracts/instance/module/IComponents.sol +1 -1
  301. package/contracts/instance/module/IDistribution.sol +1 -1
  302. package/contracts/instance/module/IPolicy.sol +1 -1
  303. package/contracts/instance/module/IRisk.sol +1 -1
  304. package/contracts/mock/Dip.sol +1 -1
  305. package/contracts/oracle/IOracle.sol +20 -0
  306. package/contracts/oracle/IOracleComponent.sol +32 -0
  307. package/contracts/oracle/IOracleService.sol +65 -0
  308. package/contracts/oracle/Oracle.sol +145 -0
  309. package/contracts/oracle/OracleService.sol +278 -0
  310. package/contracts/oracle/OracleServiceManager.sol +42 -0
  311. package/contracts/pool/BundleService.sol +20 -20
  312. package/contracts/pool/BundleServiceManager.sol +1 -1
  313. package/contracts/pool/IBundleService.sol +1 -1
  314. package/contracts/pool/IPoolComponent.sol +1 -1
  315. package/contracts/pool/IPoolService.sol +4 -1
  316. package/contracts/pool/Pool.sol +1 -1
  317. package/contracts/pool/PoolService.sol +38 -10
  318. package/contracts/pool/PoolServiceManager.sol +1 -1
  319. package/contracts/product/ApplicationService.sol +6 -6
  320. package/contracts/product/ApplicationServiceManager.sol +1 -1
  321. package/contracts/product/ClaimService.sol +12 -7
  322. package/contracts/product/ClaimServiceManager.sol +1 -1
  323. package/contracts/product/IApplicationService.sol +1 -1
  324. package/contracts/product/IClaimService.sol +7 -1
  325. package/contracts/product/IPolicyService.sol +1 -1
  326. package/contracts/product/IPricingService.sol +1 -1
  327. package/contracts/product/IProductComponent.sol +1 -1
  328. package/contracts/product/IProductService.sol +1 -1
  329. package/contracts/product/PolicyService.sol +9 -7
  330. package/contracts/product/PolicyServiceManager.sol +1 -1
  331. package/contracts/product/PricingService.sol +8 -9
  332. package/contracts/product/PricingServiceManager.sol +1 -1
  333. package/contracts/product/Product.sol +1 -1
  334. package/contracts/product/ProductService.sol +6 -6
  335. package/contracts/product/ProductServiceManager.sol +1 -1
  336. package/contracts/registry/ChainNft.sol +2 -1
  337. package/contracts/registry/IRegistry.sol +21 -15
  338. package/contracts/registry/IRegistryService.sol +2 -1
  339. package/contracts/registry/IServiceAuthorization.sol +35 -0
  340. package/contracts/registry/ITransferInterceptor.sol +1 -1
  341. package/contracts/registry/Registry.sol +86 -67
  342. package/contracts/registry/RegistryAdmin.sol +333 -0
  343. package/contracts/registry/RegistryService.sol +9 -71
  344. package/contracts/registry/RegistryServiceManager.sol +2 -21
  345. package/contracts/registry/ReleaseManager.sol +219 -222
  346. package/contracts/registry/ServiceAuthorization.sol +86 -0
  347. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  348. package/contracts/registry/TokenRegistry.sol +57 -61
  349. package/contracts/shared/AccessAdmin.sol +759 -0
  350. package/contracts/shared/AccessManagerCustom.sol +741 -0
  351. package/contracts/shared/AccessManagerExtended.sol +481 -0
  352. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  353. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  354. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  355. package/contracts/shared/Component.sol +9 -14
  356. package/contracts/shared/ComponentService.sol +40 -18
  357. package/contracts/shared/ComponentServiceManager.sol +1 -1
  358. package/contracts/shared/ComponentVerifyingService.sol +14 -8
  359. package/contracts/shared/ERC165.sol +1 -1
  360. package/contracts/shared/IAccessAdmin.sol +168 -0
  361. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  362. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  363. package/contracts/shared/IComponent.sol +4 -8
  364. package/contracts/shared/IComponentService.sol +12 -1
  365. package/contracts/shared/IInstanceLinkedComponent.sol +1 -1
  366. package/contracts/shared/IKeyValueStore.sol +2 -2
  367. package/contracts/shared/ILifecycle.sol +1 -1
  368. package/contracts/shared/INftOwnable.sol +2 -2
  369. package/contracts/shared/IPolicyHolder.sol +1 -1
  370. package/contracts/shared/IRegisterable.sol +1 -1
  371. package/contracts/shared/IRegistryLinked.sol +1 -1
  372. package/contracts/shared/IService.sol +8 -1
  373. package/contracts/shared/IVersionable.sol +1 -1
  374. package/contracts/shared/InitializableCustom.sol +177 -0
  375. package/contracts/shared/InstanceLinkedComponent.sol +2 -3
  376. package/contracts/shared/KeyValueStore.sol +2 -5
  377. package/contracts/shared/Lifecycle.sol +12 -3
  378. package/contracts/shared/NftIdSetManager.sol +3 -7
  379. package/contracts/shared/NftOwnable.sol +3 -14
  380. package/contracts/shared/PolicyHolder.sol +3 -2
  381. package/contracts/shared/ProxyManager.sol +7 -3
  382. package/contracts/shared/Registerable.sol +1 -1
  383. package/contracts/shared/RegistryLinked.sol +1 -1
  384. package/contracts/shared/Service.sol +28 -22
  385. package/contracts/shared/TokenHandler.sol +1 -1
  386. package/contracts/shared/UpgradableProxyWithAdmin.sol +1 -1
  387. package/contracts/shared/Versionable.sol +1 -1
  388. package/contracts/staking/IStaking.sol +94 -39
  389. package/contracts/staking/IStakingService.sol +71 -40
  390. package/contracts/staking/StakeManagerLib.sol +231 -0
  391. package/contracts/staking/Staking.sol +303 -138
  392. package/contracts/staking/StakingManager.sol +23 -21
  393. package/contracts/staking/StakingReader.sol +120 -25
  394. package/contracts/staking/StakingService.sol +194 -77
  395. package/contracts/staking/StakingServiceManager.sol +3 -3
  396. package/contracts/staking/StakingStore.sol +613 -0
  397. package/contracts/staking/TargetManagerLib.sol +77 -11
  398. package/contracts/type/AddressSet.sol +1 -1
  399. package/contracts/type/Amount.sol +16 -2
  400. package/contracts/type/Blocknumber.sol +14 -2
  401. package/contracts/type/ClaimId.sol +1 -1
  402. package/contracts/type/DistributorType.sol +1 -1
  403. package/contracts/type/Fee.sol +1 -1
  404. package/contracts/type/Key32.sol +1 -1
  405. package/contracts/type/NftId.sol +9 -9
  406. package/contracts/type/NftIdSet.sol +1 -1
  407. package/contracts/type/ObjectType.sol +140 -68
  408. package/contracts/type/PayoutId.sol +1 -1
  409. package/contracts/type/Referral.sol +1 -1
  410. package/contracts/type/RequestId.sol +75 -0
  411. package/contracts/type/RiskId.sol +1 -1
  412. package/contracts/type/RoleId.sol +79 -21
  413. package/contracts/type/Seconds.sol +19 -1
  414. package/contracts/type/Selector.sol +102 -0
  415. package/contracts/type/StateId.sol +13 -1
  416. package/contracts/type/String.sol +53 -0
  417. package/contracts/type/Timestamp.sol +7 -3
  418. package/contracts/type/UFixed.sol +1 -1
  419. package/contracts/type/Version.sol +1 -1
  420. package/package.json +6 -3
  421. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  422. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  423. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  424. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -298
  425. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  426. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  427. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  428. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  429. package/contracts/instance/InstanceAccessManager.sol +0 -543
  430. package/contracts/registry/RegistryAccessManager.sol +0 -167
  431. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  432. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -0,0 +1,759 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.24;
3
+
4
+ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
6
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
7
+
8
+ import {IAccessAdmin} from "./IAccessAdmin.sol";
9
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
10
+ import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
11
+ import {Str, StrLib} from "../type/String.sol";
12
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
13
+
14
+
15
+ /**
16
+ * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
17
+ * The contract provides read functions to query all available roles, targets and access rights.
18
+ * This contract works for both a constructor based deployment or a deployment based on cloning and initialization.
19
+ */
20
+ contract AccessAdmin is
21
+ AccessManagedUpgradeable,
22
+ IAccessAdmin
23
+ {
24
+ using EnumerableSet for EnumerableSet.AddressSet;
25
+
26
+ string public constant ADMIN_ROLE_NAME = "AdminRole";
27
+ string public constant PUBLIC_ROLE_NAME = "PublicRole";
28
+
29
+ uint64 public constant MANAGER_ROLE = type(uint64).min + 1;
30
+ string public constant MANAGER_ROLE_NAME = "ManagerRole";
31
+
32
+ /// @dev the OpenZeppelin access manager driving the access admin contract
33
+ AccessManager internal _authority;
34
+
35
+ /// @dev stores the deployer address and allows to create initializers
36
+ /// that are restricted to the deployer address.
37
+ address internal _deployer;
38
+
39
+ /// @dev required role for state changes to this contract
40
+ RoleId internal _managerRoleId;
41
+
42
+ /// @dev store role info per role id
43
+ mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
44
+
45
+ /// @dev store role name info per role name
46
+ mapping(Str roleName => RoleNameInfo nameInfo) internal _roleForName;
47
+
48
+ /// @dev store array with all created roles
49
+ RoleId [] internal _roleIds;
50
+
51
+ /// @dev store set of current role members for given role
52
+ mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
53
+
54
+ /// @dev store target info per target address
55
+ mapping(address target => TargetInfo info) internal _targetInfo;
56
+
57
+ /// @dev store role name info per role name
58
+ mapping(Str targetName => address target) internal _targetForName;
59
+
60
+ /// @dev store array with all created targets
61
+ address [] internal _targets;
62
+
63
+ /// @dev store all managed functions per target
64
+ mapping(address target => SelectorSetLib.Set selectors) internal _targetFunctions;
65
+
66
+ /// @dev temporary dynamic function infos array
67
+ mapping(address target => mapping(Selector selector => Str functionName)) internal _functionName;
68
+
69
+ /// @dev temporary dynamic functions array
70
+ bytes4[] private _functions;
71
+
72
+ modifier onlyDeployer() {
73
+ // special case for cloned AccessAdmin contracts
74
+ // IMPORTANT cloning and _initializeAuthority needs to be done in a single transaction
75
+ if (_deployer == address(0)) {
76
+ _deployer = msg.sender;
77
+ }
78
+
79
+ if (msg.sender != _deployer) {
80
+ revert ErrorNotDeployer();
81
+ }
82
+ _;
83
+ }
84
+
85
+ modifier onlyRoleAdmin(RoleId roleId) {
86
+ if (!roleExists(roleId)) {
87
+ revert ErrorRoleUnknown(roleId);
88
+ }
89
+
90
+ if (!hasRole(msg.sender, _roleInfo[roleId].adminRoleId)) {
91
+ revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
92
+ }
93
+ _;
94
+ }
95
+
96
+ modifier onlyRoleMember(RoleId roleId) {
97
+ if (!hasRole(msg.sender, roleId)) {
98
+ revert ErrorNotRoleOwner(roleId);
99
+ }
100
+ _;
101
+ }
102
+
103
+ modifier onlyExistingRole(RoleId roleId) {
104
+ _checkRoleId(roleId);
105
+ _;
106
+ }
107
+
108
+ modifier onlyExistingTarget(address target) {
109
+ _checkTarget(target);
110
+ _;
111
+ }
112
+
113
+ constructor() {
114
+ _deployer = msg.sender;
115
+ _authority = new AccessManager(address(this));
116
+
117
+ _setAuthority(address(_authority));
118
+ _createInitialRoleSetup();
119
+
120
+ _disableInitializers();
121
+ }
122
+
123
+ //--- role management functions -----------------------------------------//
124
+
125
+ function createRole(
126
+ RoleId roleId,
127
+ RoleId adminRoleId,
128
+ string memory name,
129
+ uint256 maxMemberCount,
130
+ bool memberRemovalDisabled
131
+ )
132
+ external
133
+ virtual
134
+ restricted()
135
+ {
136
+ _createRole(roleId, adminRoleId, name, maxMemberCount, memberRemovalDisabled);
137
+ }
138
+
139
+ function setRoleDisabled(
140
+ RoleId roleId,
141
+ bool disabled
142
+ )
143
+ external
144
+ virtual
145
+ restricted()
146
+ {
147
+ _setRoleDisabled(roleId, disabled);
148
+ }
149
+
150
+ function grantRole(
151
+ address account,
152
+ RoleId roleId
153
+ )
154
+ external
155
+ virtual
156
+ onlyRoleAdmin(roleId)
157
+ restricted()
158
+ {
159
+ _grantRoleToAccount(roleId, account);
160
+ }
161
+
162
+ function revokeRole(
163
+ address account,
164
+ RoleId roleId
165
+ )
166
+ external
167
+ virtual
168
+ onlyRoleAdmin(roleId)
169
+ restricted()
170
+ {
171
+ _revokeRoleFromAccount(roleId, account);
172
+ }
173
+
174
+ function renounceRole(
175
+ RoleId roleId
176
+ )
177
+ external
178
+ virtual
179
+ onlyRoleMember(roleId)
180
+ restricted()
181
+ {
182
+ _revokeRoleFromAccount(roleId, msg.sender);
183
+ }
184
+
185
+ //--- target management functions ---------------------------------------//
186
+
187
+ function createTarget(
188
+ address target,
189
+ string memory name
190
+ )
191
+ external
192
+ virtual
193
+ restricted()
194
+ {
195
+ _createTarget(target, name);
196
+ }
197
+
198
+ function setTargetLocked(
199
+ address target,
200
+ bool locked
201
+ )
202
+ external
203
+ virtual
204
+ onlyExistingTarget(target)
205
+ restricted()
206
+ {
207
+ _authority.setTargetClosed(target, locked);
208
+
209
+ // implizit logging: rely on OpenZeppelin log TargetClosed
210
+ }
211
+
212
+ function authorizeFunctions(
213
+ address target,
214
+ RoleId roleId,
215
+ Function[] memory functions
216
+ )
217
+ external
218
+ virtual
219
+ onlyExistingTarget(target)
220
+ onlyExistingRole(roleId)
221
+ restricted()
222
+ {
223
+ _authorizeTargetFunctions(target, roleId, functions);
224
+ }
225
+
226
+ function unauthorizeFunctions(
227
+ address target,
228
+ Function[] memory functions
229
+ )
230
+ external
231
+ virtual
232
+ restricted()
233
+ {
234
+ _unauthorizeTargetFunctions(target, functions);
235
+ }
236
+
237
+
238
+ function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
239
+ return SelectorSetLib.size(_targetFunctions[target]);
240
+ }
241
+
242
+ function getAuthorizedFunction(
243
+ address target,
244
+ uint256 idx
245
+ )
246
+ external
247
+ view
248
+ returns (
249
+ Function memory func,
250
+ RoleId roleId
251
+ )
252
+ {
253
+ Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
254
+
255
+ func = Function({
256
+ selector: selector,
257
+ name: _functionName[target][selector]});
258
+
259
+ roleId = RoleIdLib.toRoleId(
260
+ _authority.getTargetFunctionRole(
261
+ target,
262
+ selector.toBytes4()));
263
+ }
264
+
265
+ //--- view functions ----------------------------------------------------//
266
+
267
+ function roles() external view returns (uint256 numberOfRoles) {
268
+ return _roleIds.length;
269
+ }
270
+
271
+ function getRoleId(uint256 idx) external view returns (RoleId roleId) {
272
+ return _roleIds[idx];
273
+ }
274
+
275
+ function getAdminRole() public view returns (RoleId roleId) {
276
+ return RoleId.wrap(_authority.ADMIN_ROLE());
277
+ }
278
+
279
+ function getPublicRole() public view returns (RoleId roleId) {
280
+ return RoleId.wrap(_authority.PUBLIC_ROLE());
281
+ }
282
+
283
+ function getManagerRole() public view returns (RoleId roleId) {
284
+ return _managerRoleId;
285
+ }
286
+
287
+ function roleExists(RoleId roleId) public view returns (bool exists) {
288
+ return _roleInfo[roleId].exists;
289
+ }
290
+
291
+ function isRoleDisabled(RoleId roleId) public view returns (bool isActive) {
292
+ return _roleInfo[roleId].disabledAt <= TimestampLib.blockTimestamp();
293
+ }
294
+
295
+ function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
296
+ return _roleInfo[roleId];
297
+ }
298
+
299
+ function getRoleForName(Str name) external view returns (RoleNameInfo memory) {
300
+ return _roleForName[name];
301
+ }
302
+
303
+ function hasRole(address account, RoleId roleId) public view returns (bool) {
304
+ (bool isMember, ) = _authority.hasRole(
305
+ RoleId.unwrap(roleId),
306
+ account);
307
+ return isMember;
308
+ }
309
+
310
+ function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
311
+ return _roleMembers[roleId].length();
312
+ }
313
+
314
+ function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account) {
315
+ return _roleMembers[roleId].at(idx);
316
+ }
317
+
318
+ function targetExists(address target) public view returns (bool exists) {
319
+ return _targetInfo[target].createdAt.gtz();
320
+ }
321
+
322
+ function isTargetLocked(address target) public view returns (bool locked) {
323
+ return _authority.isTargetClosed(target);
324
+ }
325
+
326
+ function targets() external view returns (uint256 numberOfTargets) {
327
+ return _targets.length;
328
+ }
329
+
330
+ function getTargetAddress(uint256 idx) external view returns (address target) {
331
+ return _targets[idx];
332
+ }
333
+
334
+ function getTargetInfo(address target) external view returns (TargetInfo memory targetInfo) {
335
+ return _targetInfo[target];
336
+ }
337
+
338
+ function getTargetForName(Str name) external view returns (address target) {
339
+ return _targetForName[name];
340
+ }
341
+
342
+ function isAccessManaged(address target) public view returns (bool) {
343
+ if (!_isContract(target)) {
344
+ return false;
345
+ }
346
+
347
+ (bool success, ) = target.staticcall(
348
+ abi.encodeWithSelector(
349
+ AccessManagedUpgradeable.authority.selector));
350
+
351
+ return success;
352
+ }
353
+
354
+ function canCall(address caller, address target, Selector selector) external view returns (bool can) {
355
+ (can, ) = _authority.canCall(caller, target, selector.toBytes4());
356
+ }
357
+
358
+ function deployer() public view returns (address) {
359
+ return _deployer;
360
+ }
361
+
362
+ function toFunction(bytes4 selector, string memory name) public pure returns (Function memory) {
363
+ return Function({
364
+ selector: SelectorLib.toSelector(selector),
365
+ name: StrLib.toStr(name)});
366
+ }
367
+
368
+ //--- internal/private functions -------------------------------------------------//
369
+
370
+ function _authorizeTargetFunctions(
371
+ address target,
372
+ RoleId roleId,
373
+ Function[] memory functions
374
+ )
375
+ internal
376
+ {
377
+ if (roleId == getAdminRole()) {
378
+ revert ErrorAuthorizeForAdminRoleInvalid(target);
379
+ }
380
+
381
+ bool addFunctions = true;
382
+ bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
383
+
384
+ // apply authz via access manager
385
+ _grantRoleAccessToFunctions(target, roleId, functionSelectors);
386
+ }
387
+
388
+ function _unauthorizeTargetFunctions(
389
+ address target,
390
+ Function[] memory functions
391
+ )
392
+ internal
393
+ {
394
+ bool addFunctions = false;
395
+ bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
396
+ _grantRoleAccessToFunctions(target, getAdminRole(), functionSelectors);
397
+ }
398
+
399
+ function _processFunctionSelectors(
400
+ address target,
401
+ Function[] memory functions,
402
+ bool addFunctions
403
+ )
404
+ internal
405
+ returns (
406
+ bytes4[] memory functionSelectors
407
+ )
408
+ {
409
+ uint256 n = functions.length;
410
+ functionSelectors = new bytes4[](n);
411
+ Function memory func;
412
+ Selector selector;
413
+
414
+ for (uint256 i = 0; i < n; i++) {
415
+ func = functions[i];
416
+ selector = func.selector;
417
+
418
+ // add function selector to target selector set if not in set
419
+ if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
420
+ else { SelectorSetLib.remove(_targetFunctions[target], selector); }
421
+
422
+ // set function name
423
+ _functionName[target][selector] = func.name;
424
+
425
+ // add bytes4 selector to function selector array
426
+ functionSelectors[i] = selector.toBytes4();
427
+ }
428
+ }
429
+
430
+ function _initializeAuthority(
431
+ address authorityAddress
432
+ )
433
+ internal
434
+ virtual
435
+ onlyInitializing()
436
+ onlyDeployer()
437
+ {
438
+ if (authority() != address(0)) {
439
+ revert ErrorAuthorityAlreadySet();
440
+ }
441
+
442
+ _authority = AccessManager(authorityAddress);
443
+
444
+ if(!hasRole(address(this), RoleId.wrap(_authority.ADMIN_ROLE()))) {
445
+ revert ErrorAdminRoleMissing();
446
+ }
447
+
448
+ __AccessManaged_init(address(_authority));
449
+ }
450
+
451
+
452
+ function _initializeRoleSetup()
453
+ internal
454
+ virtual
455
+ onlyInitializing()
456
+ {
457
+ _createInitialRoleSetup();
458
+ }
459
+
460
+
461
+ function _createInitialRoleSetup()
462
+ internal
463
+ {
464
+ RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
465
+ Function[] memory functions;
466
+
467
+ // setup admin role
468
+ _createRoleUnchecked(
469
+ adminRoleId,
470
+ adminRoleId,
471
+ StrLib.toStr(ADMIN_ROLE_NAME),
472
+ 1,
473
+ true);
474
+
475
+ // add this contract as admin role member
476
+ _roleMembers[adminRoleId].add(address(this));
477
+
478
+ // setup public role
479
+ _createRoleUnchecked(
480
+ RoleIdLib.toRoleId(_authority.PUBLIC_ROLE()),
481
+ adminRoleId,
482
+ StrLib.toStr(PUBLIC_ROLE_NAME),
483
+ type(uint256).max,
484
+ true);
485
+
486
+ // setup manager role
487
+ _managerRoleId = RoleIdLib.toRoleId(MANAGER_ROLE);
488
+ _createRole(
489
+ _managerRoleId,
490
+ adminRoleId,
491
+ MANAGER_ROLE_NAME,
492
+ 3, // TODO think about max member count
493
+ false);
494
+
495
+ // grant public role access to grant and revoke, renounce
496
+ functions = new Function[](3);
497
+ functions[0] = toFunction(IAccessAdmin.grantRole.selector, "grantRole");
498
+ functions[1] = toFunction(IAccessAdmin.revokeRole.selector, "revokeRole");
499
+ functions[2] = toFunction(IAccessAdmin.renounceRole.selector, "renounceRole");
500
+ _authorizeTargetFunctions(address(this), getPublicRole(), functions);
501
+
502
+ // grant manager role access to the specified functions
503
+ functions = new Function[](6);
504
+ functions[0] = toFunction(IAccessAdmin.createRole.selector, "createRole");
505
+ functions[1] = toFunction(IAccessAdmin.setRoleDisabled.selector, "setRoleDisabled");
506
+ functions[2] = toFunction(IAccessAdmin.createTarget.selector, "createTarget");
507
+ functions[3] = toFunction(IAccessAdmin.setTargetLocked.selector, "setTargetLocked");
508
+ functions[4] = toFunction(IAccessAdmin.authorizeFunctions.selector, "authorizeFunctions");
509
+ functions[5] = toFunction(IAccessAdmin.unauthorizeFunctions.selector, "unauthorizeFunctions");
510
+ _authorizeTargetFunctions(address(this), getManagerRole(), functions);
511
+ }
512
+
513
+ /// @dev check if target exists and reverts if it doesn't
514
+ function _checkTarget(address target)
515
+ internal
516
+ {
517
+ if (_targetInfo[target].createdAt.eqz()) {
518
+ revert ErrorTargetUnknown(target);
519
+ }
520
+ }
521
+
522
+ /// @dev grant the specified role access to all functions in the provided selector list
523
+ function _grantRoleAccessToFunctions(
524
+ address target,
525
+ RoleId roleId,
526
+ bytes4[] memory functionSelectors
527
+ )
528
+ internal
529
+ {
530
+ _authority.setTargetFunctionRole(
531
+ target,
532
+ functionSelectors,
533
+ RoleId.unwrap(roleId));
534
+
535
+ // implizit logging: rely on OpenZeppelin log TargetFunctionRoleUpdated
536
+ }
537
+
538
+ /// @dev grant the specified role to the provided account
539
+ function _grantRoleToAccount(RoleId roleId, address account)
540
+ internal
541
+ {
542
+ _checkRoleId(roleId);
543
+ _checkRoleIsActive(roleId);
544
+
545
+ // check max role members will not be exceeded
546
+ if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
547
+ revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
548
+ }
549
+
550
+ _roleMembers[roleId].add(account);
551
+ _authority.grantRole(
552
+ RoleId.unwrap(roleId),
553
+ account,
554
+ 0);
555
+
556
+ // indirect logging: rely on OpenZeppelin log RoleGranted
557
+ }
558
+
559
+ /// @dev revoke the specified role from the provided account
560
+ function _revokeRoleFromAccount(RoleId roleId, address account)
561
+ internal
562
+ {
563
+ _checkRoleId(roleId);
564
+
565
+ // check role removal is permitted
566
+ if (_roleInfo[roleId].memberRemovalDisabled) {
567
+ revert ErrorRoleRemovalDisabled(roleId);
568
+ }
569
+
570
+ _roleMembers[roleId].remove(account);
571
+ _authority.revokeRole(
572
+ RoleId.unwrap(roleId),
573
+ account);
574
+
575
+ // indirect logging: rely on OpenZeppelin log RoleGranted
576
+ }
577
+
578
+
579
+ function _checkRoleId(RoleId roleId)
580
+ internal
581
+ {
582
+ if (!_roleInfo[roleId].exists) {
583
+ revert ErrorRoleUnknown(roleId);
584
+ }
585
+
586
+ uint64 roleIdInt = RoleId.unwrap(roleId);
587
+ if (roleIdInt == _authority.ADMIN_ROLE()
588
+ || roleIdInt == _authority.PUBLIC_ROLE())
589
+ {
590
+ revert ErrorRoleIsLocked(roleId);
591
+ }
592
+ }
593
+
594
+
595
+ function _checkRoleIsActive(RoleId roleId)
596
+ internal
597
+ {
598
+ if (isRoleDisabled(roleId)) {
599
+ revert ErrorRoleIsDisabled(roleId);
600
+ }
601
+ }
602
+
603
+
604
+ function _createRole(
605
+ RoleId roleId,
606
+ RoleId adminRoleId,
607
+ string memory roleName,
608
+ uint256 maxMemberCount,
609
+ bool memberRemovalDisabled
610
+ )
611
+ internal
612
+ {
613
+ // check role does not yet exist
614
+ if(roleExists(roleId)) {
615
+ revert ErrorRoleAlreadyCreated(
616
+ roleId,
617
+ _roleInfo[roleId].name.toString());
618
+ }
619
+
620
+ // check admin role exists
621
+ if(!roleExists(adminRoleId)) {
622
+ revert ErrorRoleAdminNotExisting(adminRoleId);
623
+ }
624
+
625
+ // check role name is not empty
626
+ Str name = StrLib.toStr(roleName);
627
+ if(name.length() == 0) {
628
+ revert ErrorRoleNameEmpty(roleId);
629
+ }
630
+
631
+ // check role name is not used for another role
632
+ if(_roleForName[name].exists) {
633
+ revert ErrorRoleNameAlreadyExists(
634
+ roleId,
635
+ roleName,
636
+ _roleForName[name].roleId);
637
+ }
638
+
639
+ _createRoleUnchecked(
640
+ roleId, adminRoleId,
641
+ name,
642
+ maxMemberCount,
643
+ memberRemovalDisabled);
644
+ }
645
+
646
+
647
+ function _setRoleDisabled(
648
+ RoleId roleId,
649
+ bool disabled
650
+ )
651
+ internal
652
+ {
653
+
654
+ _checkRoleId(roleId);
655
+ Timestamp disabledAtOld = _roleInfo[roleId].disabledAt;
656
+
657
+ if (disabled) {
658
+ _roleInfo[roleId].disabledAt = TimestampLib.blockTimestamp();
659
+ } else {
660
+ _roleInfo[roleId].disabledAt = TimestampLib.max();
661
+ }
662
+
663
+ emit LogRoleDisabled(roleId, disabled, disabledAtOld);
664
+ }
665
+
666
+
667
+ function _createRoleUnchecked(
668
+ RoleId roleId,
669
+ RoleId adminRoleId,
670
+ Str name,
671
+ uint256 maxMemberCount,
672
+ bool memberRemovalDisabled
673
+ )
674
+ private
675
+ {
676
+ // create role info
677
+ _roleInfo[roleId] = RoleInfo({
678
+ adminRoleId: adminRoleId,
679
+ name: name,
680
+ maxMemberCount: maxMemberCount,
681
+ memberRemovalDisabled: memberRemovalDisabled,
682
+ disabledAt: TimestampLib.max(),
683
+ exists: true});
684
+
685
+ // create role name info
686
+ _roleForName[name] = RoleNameInfo({
687
+ roleId: roleId,
688
+ exists: true});
689
+
690
+ // add role to list of roles
691
+ _roleIds.push(roleId);
692
+
693
+ emit LogRoleCreated(roleId, adminRoleId, name.toString());
694
+ }
695
+
696
+
697
+ function _createTarget(address target, string memory targetName)
698
+ internal
699
+ {
700
+ // check target does not yet exist
701
+ if(targetExists(target)) {
702
+ revert ErrorTargetAlreadyCreated(
703
+ target,
704
+ _targetInfo[target].name.toString());
705
+ }
706
+
707
+ // check target name is not empty
708
+ Str name = StrLib.toStr(targetName);
709
+ if(name.length() == 0) {
710
+ revert ErrorTargetNameEmpty(target);
711
+ }
712
+
713
+ // check target name is not used for another role
714
+ if( _targetForName[name] != address(0)) {
715
+ revert ErrorTargetNameAlreadyExists(
716
+ target,
717
+ targetName,
718
+ _targetForName[name]);
719
+ }
720
+
721
+ // check target is an access managed contract
722
+ if (!isAccessManaged(target)) {
723
+ revert ErrorTargetNotAccessManaged(target);
724
+ }
725
+
726
+ // check target shares authority with this contract
727
+ address targetAuthority = AccessManagedUpgradeable(target).authority();
728
+ if (targetAuthority != authority()) {
729
+ revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
730
+ }
731
+
732
+ // create target info
733
+ _targetInfo[target] = TargetInfo({
734
+ name: name,
735
+ createdAt: TimestampLib.blockTimestamp()
736
+ });
737
+
738
+ // create name to target mapping
739
+ _targetForName[name] = target;
740
+
741
+ // add role to list of roles
742
+ _targets.push(target);
743
+
744
+ emit LogTargetCreated(target, targetName);
745
+ }
746
+
747
+ function _isContract(address target)
748
+ internal
749
+ view
750
+ returns (bool)
751
+ {
752
+ uint256 size;
753
+ assembly {
754
+ size := extcodesize(target)
755
+ }
756
+ return size > 0;
757
+ }
758
+
759
+ }