@etherisc/gif-next 0.0.2-e802d97-251 → 0.0.2-e81f152-917

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 (467) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1500 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -292
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +248 -95
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +81 -57
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -149
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +116 -16
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -84
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -146
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +132 -140
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +215 -108
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -49
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +90 -263
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1137 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -26
  82. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
  84. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -157
  86. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +66 -29
  88. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +44 -32
  90. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1406 -0
  92. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  94. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +424 -63
  96. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +115 -43
  98. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +218 -1
  100. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -278
  102. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +171 -54
  104. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -417
  106. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +252 -95
  108. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +58 -38
  110. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +67 -49
  112. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -42
  114. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1254 -0
  116. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  118. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +122 -69
  120. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +64 -52
  122. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -0
  124. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +29 -0
  126. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +201 -108
  128. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
  130. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -68
  132. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
  134. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +294 -164
  136. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +69 -41
  138. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.json +97 -63
  140. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +57 -49
  142. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  143. package/artifacts/contracts/product/Product.sol/Product.json +32 -217
  144. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
  146. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +38 -30
  148. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  150. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  152. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -183
  154. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  155. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  157. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1506 -167
  159. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +50 -13
  161. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -25
  163. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  165. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  167. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  169. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  171. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  172. package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
  173. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +347 -85
  175. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +108 -60
  177. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
  179. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  181. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +166 -0
  183. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -26
  185. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  187. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  189. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  195. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  196. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  197. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  198. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -117
  200. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  202. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  204. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  205. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  206. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  208. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  210. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  212. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  214. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Service.sol/Service.json +13 -0
  216. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  217. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  218. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  219. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
  220. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  221. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
  222. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +52 -109
  224. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  225. package/artifacts/contracts/staking/Staking.sol/Staking.json +114 -146
  226. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  228. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  229. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +78 -58
  230. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  232. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  233. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +92 -73
  234. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  235. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -47
  236. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +201 -148
  238. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  239. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  240. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  241. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  242. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  244. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  246. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  248. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  250. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  252. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  254. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  256. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  257. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  258. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
  260. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  262. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  264. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  266. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  268. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  270. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  272. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  274. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  276. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  278. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  280. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  282. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  284. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  286. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  288. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  290. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  291. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  292. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  293. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  294. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  295. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  296. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  297. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  298. package/contracts/authorization/AccessAdmin.sol +591 -0
  299. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  300. package/contracts/authorization/Authorization.sol +217 -0
  301. package/contracts/authorization/IAccess.sol +48 -0
  302. package/contracts/authorization/IAccessAdmin.sol +136 -0
  303. package/contracts/authorization/IAuthorization.sol +54 -0
  304. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  305. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  306. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  307. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  308. package/contracts/distribution/BasicDistribution.sol +138 -0
  309. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  310. package/contracts/distribution/Distribution.sol +144 -110
  311. package/contracts/distribution/DistributionService.sol +60 -36
  312. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  313. package/contracts/distribution/IDistributionComponent.sol +25 -39
  314. package/contracts/distribution/IDistributionService.sol +15 -1
  315. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  316. package/contracts/instance/IInstance.sol +16 -12
  317. package/contracts/instance/IInstanceService.sol +34 -23
  318. package/contracts/instance/Instance.sol +106 -88
  319. package/contracts/instance/InstanceAdmin.sol +221 -267
  320. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  321. package/contracts/instance/InstanceReader.sol +34 -16
  322. package/contracts/instance/InstanceService.sol +189 -84
  323. package/contracts/instance/InstanceServiceManager.sol +2 -6
  324. package/contracts/instance/InstanceStore.sol +16 -20
  325. package/contracts/instance/base/BalanceStore.sol +11 -6
  326. package/contracts/instance/base/Cloneable.sol +2 -25
  327. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  328. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  329. package/contracts/instance/module/IBundle.sol +1 -1
  330. package/contracts/instance/module/IComponents.sol +1 -7
  331. package/contracts/instance/module/IDistribution.sol +0 -1
  332. package/contracts/instance/module/IPolicy.sol +1 -1
  333. package/contracts/mock/Dip.sol +1 -1
  334. package/contracts/oracle/BasicOracle.sol +48 -0
  335. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  336. package/contracts/oracle/IOracle.sol +16 -0
  337. package/contracts/oracle/IOracleComponent.sol +2 -1
  338. package/contracts/oracle/Oracle.sol +72 -51
  339. package/contracts/oracle/OracleService.sol +5 -4
  340. package/contracts/oracle/OracleServiceManager.sol +2 -5
  341. package/contracts/pool/BasicPool.sol +166 -0
  342. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  343. package/contracts/pool/BundleService.sol +199 -59
  344. package/contracts/pool/BundleServiceManager.sol +2 -5
  345. package/contracts/pool/IBundleService.sol +33 -5
  346. package/contracts/pool/IPoolComponent.sol +6 -60
  347. package/contracts/pool/IPoolService.sol +14 -17
  348. package/contracts/pool/Pool.sol +166 -137
  349. package/contracts/pool/PoolService.sol +158 -93
  350. package/contracts/pool/PoolServiceManager.sol +2 -5
  351. package/contracts/product/ApplicationService.sol +54 -58
  352. package/contracts/product/ApplicationServiceManager.sol +2 -2
  353. package/contracts/product/BasicProduct.sol +52 -0
  354. package/contracts/product/BasicProductAuthorization.sol +43 -0
  355. package/contracts/product/ClaimService.sol +18 -44
  356. package/contracts/product/ClaimServiceManager.sol +2 -2
  357. package/contracts/product/IApplicationService.sol +1 -0
  358. package/contracts/product/IClaimService.sol +1 -0
  359. package/contracts/product/IPolicyService.sol +23 -17
  360. package/contracts/product/IProductComponent.sol +7 -9
  361. package/contracts/product/IProductService.sol +1 -0
  362. package/contracts/product/PolicyService.sol +247 -136
  363. package/contracts/product/PolicyServiceManager.sol +2 -5
  364. package/contracts/product/PricingService.sol +9 -6
  365. package/contracts/product/PricingServiceManager.sol +2 -5
  366. package/contracts/product/Product.sol +128 -92
  367. package/contracts/product/ProductService.sol +12 -37
  368. package/contracts/product/ProductServiceManager.sol +2 -5
  369. package/contracts/registry/IRegistry.sol +26 -16
  370. package/contracts/registry/IRegistryService.sol +6 -6
  371. package/contracts/registry/Registry.sol +85 -85
  372. package/contracts/registry/RegistryAdmin.sol +292 -155
  373. package/contracts/registry/RegistryService.sol +9 -23
  374. package/contracts/registry/RegistryServiceManager.sol +2 -7
  375. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  376. package/contracts/registry/ReleaseRegistry.sol +485 -0
  377. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  378. package/contracts/registry/TokenRegistry.sol +2 -2
  379. package/contracts/shared/Component.sol +24 -37
  380. package/contracts/shared/ComponentService.sol +99 -76
  381. package/contracts/shared/ComponentServiceManager.sol +2 -2
  382. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  383. package/contracts/shared/IComponent.sol +4 -4
  384. package/contracts/shared/IComponentService.sol +15 -9
  385. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  386. package/contracts/shared/IKeyValueStore.sol +1 -0
  387. package/contracts/shared/ILifecycle.sol +1 -2
  388. package/contracts/shared/IService.sol +8 -1
  389. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  390. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  391. package/contracts/shared/KeyValueStore.sol +6 -2
  392. package/contracts/shared/Lifecycle.sol +16 -69
  393. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  394. package/contracts/shared/NftOwnable.sol +2 -2
  395. package/contracts/shared/PolicyHolder.sol +2 -5
  396. package/contracts/shared/Service.sol +27 -22
  397. package/contracts/shared/TokenHandler.sol +100 -19
  398. package/contracts/staking/IStaking.sol +1 -2
  399. package/contracts/staking/IStakingService.sol +22 -11
  400. package/contracts/staking/StakeManagerLib.sol +52 -25
  401. package/contracts/staking/Staking.sol +77 -132
  402. package/contracts/staking/StakingLifecycle.sol +23 -0
  403. package/contracts/staking/StakingManager.sol +2 -6
  404. package/contracts/staking/StakingReader.sol +12 -16
  405. package/contracts/staking/StakingService.sol +66 -65
  406. package/contracts/staking/StakingServiceManager.sol +2 -3
  407. package/contracts/staking/StakingStore.sol +93 -60
  408. package/contracts/type/Amount.sol +12 -5
  409. package/contracts/type/Blocknumber.sol +7 -1
  410. package/contracts/type/ObjectType.sol +167 -64
  411. package/contracts/type/Referral.sol +1 -0
  412. package/contracts/type/RoleId.sol +103 -75
  413. package/contracts/type/Seconds.sol +13 -1
  414. package/contracts/type/Selector.sol +102 -0
  415. package/contracts/type/String.sol +53 -0
  416. package/contracts/type/Timestamp.sol +11 -1
  417. package/contracts/type/UFixed.sol +34 -9
  418. package/contracts/type/Version.sol +3 -1
  419. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  420. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  421. package/package.json +6 -3
  422. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  423. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  424. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  425. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  426. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  427. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  428. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  429. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  430. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  431. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  432. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  433. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  434. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  435. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  436. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  437. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  438. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  439. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  440. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  441. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  442. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  443. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  444. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  445. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  446. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  447. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  448. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  449. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  450. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  451. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  452. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  453. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  454. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  455. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  456. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  457. package/contracts/registry/ReleaseManager.sol +0 -600
  458. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  459. package/contracts/shared/AccessManagerCustom.sol +0 -736
  460. package/contracts/shared/AccessManagerExtended.sol +0 -470
  461. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  462. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  463. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  464. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  465. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  466. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  467. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,736 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.20;
3
-
4
- import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
5
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
- import {Address} from "@openzeppelin/contracts/utils/Address.sol";
7
- import {ContextUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol";
8
- import {MulticallUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol";
9
- import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
10
- import {Time} from "@openzeppelin/contracts/utils/types/Time.sol";
11
- import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
12
-
13
- /*
14
- * copy of @openzeppelin/contract-upgradeable/access/manager/AccessManagerUpgradeable.sol" except:
15
- 1. abstract
16
- 2. renamed to AccessManagerCustom
17
- 2. _getAdminRestrictions() private view -> internal virtual view
18
- 3. _checkSelector() private pure -> internal pure
19
- */
20
- abstract contract AccessManagerCustom is Initializable, ContextUpgradeable, MulticallUpgradeable, IAccessManager {
21
- using Time for *;
22
-
23
- // Structure that stores the details for a target contract.
24
- struct TargetConfig {
25
- mapping(bytes4 selector => uint64 roleId) allowedRoles;
26
- Time.Delay adminDelay;
27
- bool closed;
28
- }
29
-
30
- // Structure that stores the details for a role/account pair. This structures fit into a single slot.
31
- struct Access {
32
- // Timepoint at which the user gets the permission.
33
- // If this is either 0 or in the future, then the role permission is not available.
34
- uint48 since;
35
- // Delay for execution. Only applies to restricted() / execute() calls.
36
- Time.Delay delay;
37
- }
38
-
39
- // Structure that stores the details of a role.
40
- struct Role {
41
- // Members of the role.
42
- mapping(address user => Access access) members;
43
- // Admin who can grant or revoke permissions.
44
- uint64 admin;
45
- // Guardian who can cancel operations targeting functions that need this role.
46
- uint64 guardian;
47
- // Delay in which the role takes effect after being granted.
48
- Time.Delay grantDelay;
49
- }
50
-
51
- // Structure that stores the details for a scheduled operation. This structure fits into a single slot.
52
- struct Schedule {
53
- // Moment at which the operation can be executed.
54
- uint48 timepoint;
55
- // Operation nonce to allow third-party contracts to identify the operation.
56
- uint32 nonce;
57
- }
58
-
59
- uint64 public constant ADMIN_ROLE = type(uint64).min; // 0
60
- uint64 public constant PUBLIC_ROLE = type(uint64).max; // 2**64-1
61
-
62
- /// @custom:storage-location erc7201:openzeppelin.storage.AccessManagerCustom
63
- struct AccessManagerStorage {
64
- mapping(address target => TargetConfig mode) _targets;
65
- mapping(uint64 roleId => Role) _roles;
66
- mapping(bytes32 operationId => Schedule) _schedules;
67
-
68
- // Used to identify operations that are currently being executed via {execute}.
69
- // This should be transient storage when supported by the EVM.
70
- bytes32 _executionId;
71
- }
72
-
73
- // TODO compute address
74
- // keccak256(abi.encode(uint256(keccak256("etherisc.storage.AccessManagerCustom")) - 1)) & ~bytes32(uint256(0xff))
75
- bytes32 private constant AccessManagerCustomStorageLocation = 0x77301bc69e8248c80abb894217605b71fa89ea6a9e8bdf359d9e8aa1dd62bf00;
76
-
77
- function _getAccessManagerCustomStorage() private pure returns (AccessManagerStorage storage $) {
78
- assembly {
79
- $.slot := AccessManagerCustomStorageLocation
80
- }
81
- }
82
-
83
- /**
84
- * @dev Check that the caller is authorized to perform the operation, following the restrictions encoded in
85
- * {_getAdminRestrictions}.
86
- */
87
- modifier onlyAuthorized() {
88
- _checkAuthorized();
89
- _;
90
- }
91
-
92
- function __AccessManagerCustom_init(address initialAdmin) internal onlyInitializing {
93
- __AccessManagerCustom_init_unchained(initialAdmin);
94
- }
95
-
96
- function __AccessManagerCustom_init_unchained(address initialAdmin) internal onlyInitializing {
97
- if (initialAdmin == address(0)) {
98
- revert AccessManagerInvalidInitialAdmin(address(0));
99
- }
100
-
101
- // admin is active immediately and without any execution delay.
102
- _grantRole(ADMIN_ROLE, initialAdmin, 0, 0);
103
- }
104
-
105
- // =================================================== GETTERS ====================================================
106
- /// @inheritdoc IAccessManager
107
- function canCall(
108
- address caller,
109
- address target,
110
- bytes4 selector
111
- ) public view virtual returns (bool immediate, uint32 delay) {
112
- if (isTargetClosed(target)) {
113
- return (false, 0);
114
- } else if (caller == address(this)) {
115
- // Caller is AccessManager, this means the call was sent through {execute} and it already checked
116
- // permissions. We verify that the call "identifier", which is set during {execute}, is correct.
117
- return (_isExecuting(target, selector), 0);
118
- } else {
119
- uint64 roleId = getTargetFunctionRole(target, selector);
120
- (bool isMember, uint32 currentDelay) = hasRole(roleId, caller);
121
- return isMember ? (currentDelay == 0, currentDelay) : (false, 0);
122
- }
123
- }
124
-
125
- /// @inheritdoc IAccessManager
126
- function expiration() public view virtual returns (uint32) {
127
- return 1 weeks;
128
- }
129
-
130
- /// @inheritdoc IAccessManager
131
- function minSetback() public view virtual returns (uint32) {
132
- return 5 days;
133
- }
134
-
135
- /// @inheritdoc IAccessManager
136
- function isTargetClosed(address target) public view virtual returns (bool) {
137
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
138
- return $._targets[target].closed;
139
- }
140
-
141
- /// @inheritdoc IAccessManager
142
- function getTargetFunctionRole(address target, bytes4 selector) public view virtual returns (uint64) {
143
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
144
- return $._targets[target].allowedRoles[selector];
145
- }
146
-
147
- /// @inheritdoc IAccessManager
148
- function getTargetAdminDelay(address target) public view virtual returns (uint32) {
149
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
150
- return $._targets[target].adminDelay.get();
151
- }
152
-
153
- /// @inheritdoc IAccessManager
154
- function getRoleAdmin(uint64 roleId) public view virtual returns (uint64) {
155
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
156
- return $._roles[roleId].admin;
157
- }
158
-
159
- /// @inheritdoc IAccessManager
160
- function getRoleGuardian(uint64 roleId) public view virtual returns (uint64) {
161
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
162
- return $._roles[roleId].guardian;
163
- }
164
-
165
- /// @inheritdoc IAccessManager
166
- function getRoleGrantDelay(uint64 roleId) public view virtual returns (uint32) {
167
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
168
- return $._roles[roleId].grantDelay.get();
169
- }
170
-
171
- /// @inheritdoc IAccessManager
172
- function getAccess(
173
- uint64 roleId,
174
- address account
175
- ) public view virtual returns (uint48 since, uint32 currentDelay, uint32 pendingDelay, uint48 effect) {
176
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
177
- Access storage access = $._roles[roleId].members[account];
178
-
179
- since = access.since;
180
- (currentDelay, pendingDelay, effect) = access.delay.getFull();
181
-
182
- return (since, currentDelay, pendingDelay, effect);
183
- }
184
-
185
- /// @inheritdoc IAccessManager
186
- function hasRole(
187
- uint64 roleId,
188
- address account
189
- ) public view virtual returns (bool isMember, uint32 executionDelay) {
190
- if (roleId == PUBLIC_ROLE) {
191
- return (true, 0);
192
- } else {
193
- (uint48 hasRoleSince, uint32 currentDelay, , ) = getAccess(roleId, account);
194
- return (hasRoleSince != 0 && hasRoleSince <= Time.timestamp(), currentDelay);
195
- }
196
- }
197
-
198
- // =============================================== ROLE MANAGEMENT ===============================================
199
- /// @inheritdoc IAccessManager
200
- function labelRole(uint64 roleId, string calldata label) public virtual onlyAuthorized {
201
- if (roleId == ADMIN_ROLE || roleId == PUBLIC_ROLE) {
202
- revert AccessManagerLockedRole(roleId);
203
- }
204
- emit RoleLabel(roleId, label);
205
- }
206
-
207
- /// @inheritdoc IAccessManager
208
- function grantRole(uint64 roleId, address account, uint32 executionDelay) public virtual onlyAuthorized {
209
- _grantRole(roleId, account, getRoleGrantDelay(roleId), executionDelay);
210
- }
211
-
212
- /// @inheritdoc IAccessManager
213
- function revokeRole(uint64 roleId, address account) public virtual onlyAuthorized {
214
- _revokeRole(roleId, account);
215
- }
216
-
217
- /// @inheritdoc IAccessManager
218
- function renounceRole(uint64 roleId, address callerConfirmation) public virtual {
219
- if (callerConfirmation != _msgSender()) {
220
- revert AccessManagerBadConfirmation();
221
- }
222
- _revokeRole(roleId, callerConfirmation);
223
- }
224
-
225
- /// @inheritdoc IAccessManager
226
- function setRoleAdmin(uint64 roleId, uint64 admin) public virtual onlyAuthorized {
227
- _setRoleAdmin(roleId, admin);
228
- }
229
-
230
- /// @inheritdoc IAccessManager
231
- function setRoleGuardian(uint64 roleId, uint64 guardian) public virtual onlyAuthorized {
232
- _setRoleGuardian(roleId, guardian);
233
- }
234
-
235
- /// @inheritdoc IAccessManager
236
- function setGrantDelay(uint64 roleId, uint32 newDelay) public virtual onlyAuthorized {
237
- _setGrantDelay(roleId, newDelay);
238
- }
239
-
240
- /**
241
- * @dev Internal version of {grantRole} without access control. Returns true if the role was newly granted.
242
- *
243
- * Emits a {RoleGranted} event.
244
- */
245
- function _grantRole(
246
- uint64 roleId,
247
- address account,
248
- uint32 grantDelay,
249
- uint32 executionDelay
250
- ) internal virtual returns (bool) {
251
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
252
- if (roleId == PUBLIC_ROLE) {
253
- revert AccessManagerLockedRole(roleId);
254
- }
255
-
256
- bool newMember = $._roles[roleId].members[account].since == 0;
257
- uint48 since;
258
-
259
- if (newMember) {
260
- since = Time.timestamp() + grantDelay;
261
- $._roles[roleId].members[account] = Access({since: since, delay: executionDelay.toDelay()});
262
- } else {
263
- // No setback here. Value can be reset by doing revoke + grant, effectively allowing the admin to perform
264
- // any change to the execution delay within the duration of the role admin delay.
265
- ($._roles[roleId].members[account].delay, since) = $._roles[roleId].members[account].delay.withUpdate(
266
- executionDelay,
267
- 0
268
- );
269
- }
270
-
271
- emit RoleGranted(roleId, account, executionDelay, since, newMember);
272
- return newMember;
273
- }
274
-
275
- /**
276
- * @dev Internal version of {revokeRole} without access control. This logic is also used by {renounceRole}.
277
- * Returns true if the role was previously granted.
278
- *
279
- * Emits a {RoleRevoked} event if the account had the role.
280
- */
281
- function _revokeRole(uint64 roleId, address account) internal virtual returns (bool) {
282
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
283
- if (roleId == PUBLIC_ROLE) {
284
- revert AccessManagerLockedRole(roleId);
285
- }
286
-
287
- if ($._roles[roleId].members[account].since == 0) {
288
- return false;
289
- }
290
-
291
- delete $._roles[roleId].members[account];
292
-
293
- emit RoleRevoked(roleId, account);
294
- return true;
295
- }
296
-
297
- /**
298
- * @dev Internal version of {setRoleAdmin} without access control.
299
- *
300
- * Emits a {RoleAdminChanged} event.
301
- *
302
- * NOTE: Setting the admin role as the `PUBLIC_ROLE` is allowed, but it will effectively allow
303
- * anyone to set grant or revoke such role.
304
- */
305
- function _setRoleAdmin(uint64 roleId, uint64 admin) internal virtual {
306
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
307
- if (roleId == ADMIN_ROLE || roleId == PUBLIC_ROLE) {
308
- revert AccessManagerLockedRole(roleId);
309
- }
310
-
311
- $._roles[roleId].admin = admin;
312
-
313
- emit RoleAdminChanged(roleId, admin);
314
- }
315
-
316
- /**
317
- * @dev Internal version of {setRoleGuardian} without access control.
318
- *
319
- * Emits a {RoleGuardianChanged} event.
320
- *
321
- * NOTE: Setting the guardian role as the `PUBLIC_ROLE` is allowed, but it will effectively allow
322
- * anyone to cancel any scheduled operation for such role.
323
- */
324
- function _setRoleGuardian(uint64 roleId, uint64 guardian) internal virtual {
325
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
326
- if (roleId == ADMIN_ROLE || roleId == PUBLIC_ROLE) {
327
- revert AccessManagerLockedRole(roleId);
328
- }
329
-
330
- $._roles[roleId].guardian = guardian;
331
-
332
- emit RoleGuardianChanged(roleId, guardian);
333
- }
334
-
335
- /**
336
- * @dev Internal version of {setGrantDelay} without access control.
337
- *
338
- * Emits a {RoleGrantDelayChanged} event.
339
- */
340
- function _setGrantDelay(uint64 roleId, uint32 newDelay) internal virtual {
341
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
342
- if (roleId == PUBLIC_ROLE) {
343
- revert AccessManagerLockedRole(roleId);
344
- }
345
-
346
- uint48 effect;
347
- ($._roles[roleId].grantDelay, effect) = $._roles[roleId].grantDelay.withUpdate(newDelay, minSetback());
348
-
349
- emit RoleGrantDelayChanged(roleId, newDelay, effect);
350
- }
351
-
352
- // ============================================= FUNCTION MANAGEMENT ==============================================
353
- /// @inheritdoc IAccessManager
354
- function setTargetFunctionRole(
355
- address target,
356
- bytes4[] calldata selectors,
357
- uint64 roleId
358
- ) public virtual onlyAuthorized {
359
- for (uint256 i = 0; i < selectors.length; ++i) {
360
- _setTargetFunctionRole(target, selectors[i], roleId);
361
- }
362
- }
363
-
364
- /**
365
- * @dev Internal version of {setTargetFunctionRole} without access control.
366
- *
367
- * Emits a {TargetFunctionRoleUpdated} event.
368
- */
369
- function _setTargetFunctionRole(address target, bytes4 selector, uint64 roleId) internal virtual {
370
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
371
- $._targets[target].allowedRoles[selector] = roleId;
372
- emit TargetFunctionRoleUpdated(target, selector, roleId);
373
- }
374
-
375
- /// @inheritdoc IAccessManager
376
- function setTargetAdminDelay(address target, uint32 newDelay) public virtual onlyAuthorized {
377
- _setTargetAdminDelay(target, newDelay);
378
- }
379
-
380
- /**
381
- * @dev Internal version of {setTargetAdminDelay} without access control.
382
- *
383
- * Emits a {TargetAdminDelayUpdated} event.
384
- */
385
- function _setTargetAdminDelay(address target, uint32 newDelay) internal virtual {
386
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
387
- uint48 effect;
388
- ($._targets[target].adminDelay, effect) = $._targets[target].adminDelay.withUpdate(newDelay, minSetback());
389
- emit TargetAdminDelayUpdated(target, newDelay, effect);
390
- }
391
-
392
- // =============================================== MODE MANAGEMENT ================================================
393
- /// @inheritdoc IAccessManager
394
- function setTargetClosed(address target, bool closed) public virtual onlyAuthorized {
395
- _setTargetClosed(target, closed);
396
- }
397
-
398
- /**
399
- * @dev Set the closed flag for a contract. This is an internal setter with no access restrictions.
400
- *
401
- * Emits a {TargetClosed} event.
402
- */
403
- function _setTargetClosed(address target, bool closed) internal virtual {
404
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
405
- if (target == address(this)) {
406
- revert AccessManagerLockedAccount(target);
407
- }
408
- $._targets[target].closed = closed;
409
- emit TargetClosed(target, closed);
410
- }
411
-
412
- // ============================================== DELAYED OPERATIONS ==============================================
413
- /// @inheritdoc IAccessManager
414
- function getSchedule(bytes32 id) public view virtual returns (uint48) {
415
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
416
- uint48 timepoint = $._schedules[id].timepoint;
417
- return _isExpired(timepoint) ? 0 : timepoint;
418
- }
419
-
420
- /// @inheritdoc IAccessManager
421
- function getNonce(bytes32 id) public view virtual returns (uint32) {
422
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
423
- return $._schedules[id].nonce;
424
- }
425
-
426
- /// @inheritdoc IAccessManager
427
- function schedule(
428
- address target,
429
- bytes calldata data,
430
- uint48 when
431
- ) public virtual returns (bytes32 operationId, uint32 nonce) {
432
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
433
- address caller = _msgSender();
434
-
435
- // Fetch restrictions that apply to the caller on the targeted function
436
- (, uint32 setback) = _canCallExtended(caller, target, data);
437
-
438
- uint48 minWhen = Time.timestamp() + setback;
439
-
440
- // if call with delay is not authorized, or if requested timing is too soon
441
- if (setback == 0 || (when > 0 && when < minWhen)) {
442
- revert AccessManagerUnauthorizedCall(caller, target, _checkSelector(data));
443
- }
444
-
445
- // Reuse variable due to stack too deep
446
- when = uint48(Math.max(when, minWhen)); // cast is safe: both inputs are uint48
447
-
448
- // If caller is authorised, schedule operation
449
- operationId = hashOperation(caller, target, data);
450
-
451
- _checkNotScheduled(operationId);
452
-
453
- unchecked {
454
- // It's not feasible to overflow the nonce in less than 1000 years
455
- nonce = $._schedules[operationId].nonce + 1;
456
- }
457
- $._schedules[operationId].timepoint = when;
458
- $._schedules[operationId].nonce = nonce;
459
- emit OperationScheduled(operationId, nonce, when, caller, target, data);
460
-
461
- // Using named return values because otherwise we get stack too deep
462
- }
463
-
464
- /**
465
- * @dev Reverts if the operation is currently scheduled and has not expired.
466
- * (Note: This function was introduced due to stack too deep errors in schedule.)
467
- */
468
- function _checkNotScheduled(bytes32 operationId) private view {
469
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
470
- uint48 prevTimepoint = $._schedules[operationId].timepoint;
471
- if (prevTimepoint != 0 && !_isExpired(prevTimepoint)) {
472
- revert AccessManagerAlreadyScheduled(operationId);
473
- }
474
- }
475
-
476
- /// @inheritdoc IAccessManager
477
- // Reentrancy is not an issue because permissions are checked on msg.sender. Additionally,
478
- // _consumeScheduledOp guarantees a scheduled operation is only executed once.
479
- // slither-disable-next-line reentrancy-no-eth
480
- function execute(address target, bytes calldata data) public payable virtual returns (uint32) {
481
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
482
- address caller = _msgSender();
483
-
484
- // Fetch restrictions that apply to the caller on the targeted function
485
- (bool immediate, uint32 setback) = _canCallExtended(caller, target, data);
486
-
487
- // If caller is not authorised, revert
488
- if (!immediate && setback == 0) {
489
- revert AccessManagerUnauthorizedCall(caller, target, _checkSelector(data));
490
- }
491
-
492
- bytes32 operationId = hashOperation(caller, target, data);
493
- uint32 nonce;
494
-
495
- // If caller is authorised, check operation was scheduled early enough
496
- // Consume an available schedule even if there is no currently enforced delay
497
- if (setback != 0 || getSchedule(operationId) != 0) {
498
- nonce = _consumeScheduledOp(operationId);
499
- }
500
-
501
- // Mark the target and selector as authorised
502
- bytes32 executionIdBefore = $._executionId;
503
- $._executionId = _hashExecutionId(target, _checkSelector(data));
504
-
505
- // Perform call
506
- Address.functionCallWithValue(target, data, msg.value);
507
-
508
- // Reset execute identifier
509
- $._executionId = executionIdBefore;
510
-
511
- return nonce;
512
- }
513
-
514
- /// @inheritdoc IAccessManager
515
- function cancel(address caller, address target, bytes calldata data) public virtual returns (uint32) {
516
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
517
- address msgsender = _msgSender();
518
- bytes4 selector = _checkSelector(data);
519
-
520
- bytes32 operationId = hashOperation(caller, target, data);
521
- if ($._schedules[operationId].timepoint == 0) {
522
- revert AccessManagerNotScheduled(operationId);
523
- } else if (caller != msgsender) {
524
- // calls can only be canceled by the account that scheduled them, a global admin, or by a guardian of the required role.
525
- (bool isAdmin, ) = hasRole(ADMIN_ROLE, msgsender);
526
- (bool isGuardian, ) = hasRole(getRoleGuardian(getTargetFunctionRole(target, selector)), msgsender);
527
- if (!isAdmin && !isGuardian) {
528
- revert AccessManagerUnauthorizedCancel(msgsender, caller, target, selector);
529
- }
530
- }
531
-
532
- delete $._schedules[operationId].timepoint; // reset the timepoint, keep the nonce
533
- uint32 nonce = $._schedules[operationId].nonce;
534
- emit OperationCanceled(operationId, nonce);
535
-
536
- return nonce;
537
- }
538
-
539
- /// @inheritdoc IAccessManager
540
- function consumeScheduledOp(address caller, bytes calldata data) public virtual {
541
- address target = _msgSender();
542
- if (IAccessManaged(target).isConsumingScheduledOp() != IAccessManaged.isConsumingScheduledOp.selector) {
543
- revert AccessManagerUnauthorizedConsume(target);
544
- }
545
- _consumeScheduledOp(hashOperation(caller, target, data));
546
- }
547
-
548
- /**
549
- * @dev Internal variant of {consumeScheduledOp} that operates on bytes32 operationId.
550
- *
551
- * Returns the nonce of the scheduled operation that is consumed.
552
- */
553
- function _consumeScheduledOp(bytes32 operationId) internal virtual returns (uint32) {
554
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
555
- uint48 timepoint = $._schedules[operationId].timepoint;
556
- uint32 nonce = $._schedules[operationId].nonce;
557
-
558
- if (timepoint == 0) {
559
- revert AccessManagerNotScheduled(operationId);
560
- } else if (timepoint > Time.timestamp()) {
561
- revert AccessManagerNotReady(operationId);
562
- } else if (_isExpired(timepoint)) {
563
- revert AccessManagerExpired(operationId);
564
- }
565
-
566
- delete $._schedules[operationId].timepoint; // reset the timepoint, keep the nonce
567
- emit OperationExecuted(operationId, nonce);
568
-
569
- return nonce;
570
- }
571
-
572
- /// @inheritdoc IAccessManager
573
- function hashOperation(address caller, address target, bytes calldata data) public view virtual returns (bytes32) {
574
- return keccak256(abi.encode(caller, target, data));
575
- }
576
-
577
- // ==================================================== OTHERS ====================================================
578
- /// @inheritdoc IAccessManager
579
- function updateAuthority(address target, address newAuthority) public virtual onlyAuthorized {
580
- IAccessManaged(target).setAuthority(newAuthority);
581
- }
582
-
583
- // ================================================= ADMIN LOGIC ==================================================
584
- /**
585
- * @dev Check if the current call is authorized according to admin logic.
586
- */
587
- function _checkAuthorized() private {
588
- address caller = msg.sender;//_msgSender();
589
- (bool immediate, uint32 delay) = _canCallSelf(caller, _msgData());
590
- if (!immediate) {
591
- if (delay == 0) {
592
- (, uint64 requiredRole, ) = _getAdminRestrictions(_msgData());
593
- revert AccessManagerUnauthorizedAccount(caller, requiredRole);
594
- } else {
595
- _consumeScheduledOp(hashOperation(caller, address(this), _msgData()));
596
- }
597
- }
598
- }
599
-
600
- /**
601
- * @dev Get the admin restrictions of a given function call based on the function and arguments involved.
602
- *
603
- * Returns:
604
- * - bool restricted: does this data match a restricted operation
605
- * - uint64: which role is this operation restricted to
606
- * - uint32: minimum delay to enforce for that operation (max between operation's delay and admin's execution delay)
607
- */
608
- /**
609
- * @dev Get the admin restrictions of a given function call based on the function and arguments involved.
610
- *
611
- * Returns:
612
- * - bool restricted: does this data match a restricted operation
613
- * - uint64: which role is this operation restricted to
614
- * - uint32: minimum delay to enforce for that operation (max between operation's delay and admin's execution delay)
615
- */
616
- function _getAdminRestrictions(
617
- bytes calldata data
618
- ) internal virtual view returns (bool restricted, uint64 roleAdminId, uint32 executionDelay) {
619
- if (data.length < 4) {
620
- return (false, 0, 0);
621
- }
622
-
623
- bytes4 selector = _checkSelector(data);
624
-
625
- // Restricted to ADMIN with no delay beside any execution delay the caller may have
626
- if (
627
- selector == this.labelRole.selector ||
628
- selector == this.setRoleAdmin.selector ||
629
- selector == this.setRoleGuardian.selector ||
630
- selector == this.setGrantDelay.selector ||
631
- selector == this.setTargetAdminDelay.selector
632
- ) {
633
- return (true, ADMIN_ROLE, 0);
634
- }
635
-
636
- // Restricted to ADMIN with the admin delay corresponding to the target
637
- if (
638
- selector == this.updateAuthority.selector ||
639
- selector == this.setTargetClosed.selector ||
640
- selector == this.setTargetFunctionRole.selector
641
- ) {
642
- // First argument is a target.
643
- address target = abi.decode(data[0x04:0x24], (address));// who is target???
644
- uint32 delay = getTargetAdminDelay(target);
645
- return (true, ADMIN_ROLE, delay);
646
- }
647
-
648
- // Restricted to that role's admin with no delay beside any execution delay the caller may have.
649
- if (selector == this.grantRole.selector || selector == this.revokeRole.selector) {
650
- // First argument is a roleId.
651
- uint64 roleId = abi.decode(data[0x04:0x24], (uint64));
652
- return (true, getRoleAdmin(roleId), 0);
653
- }
654
-
655
- return (false, 0, 0);
656
- }
657
-
658
- // =================================================== HELPERS ====================================================
659
- /**
660
- * @dev An extended version of {canCall} for internal usage that checks {_canCallSelf}
661
- * when the target is this contract.
662
- *
663
- * Returns:
664
- * - bool immediate: whether the operation can be executed immediately (with no delay)
665
- * - uint32 delay: the execution delay
666
- */
667
- function _canCallExtended(
668
- address caller,
669
- address target,
670
- bytes calldata data
671
- ) private view returns (bool immediate, uint32 delay) {
672
- if (target == address(this)) {
673
- return _canCallSelf(caller, data);
674
- } else {
675
- return data.length < 4 ? (false, 0) : canCall(caller, target, _checkSelector(data));
676
- }
677
- }
678
-
679
- /**
680
- * @dev A version of {canCall} that checks for admin restrictions in this contract.
681
- */
682
- function _canCallSelf(address caller, bytes calldata data) private view returns (bool immediate, uint32 delay) {
683
- if (data.length < 4) {
684
- return (false, 0);
685
- }
686
-
687
- if (caller == address(this)) {
688
- // Caller is AccessManager, this means the call was sent through {execute} and it already checked
689
- // permissions. We verify that the call "identifier", which is set during {execute}, is correct.
690
- return (_isExecuting(address(this), _checkSelector(data)), 0);
691
- }
692
-
693
- (bool enabled, uint64 roleId, uint32 operationDelay) = _getAdminRestrictions(data);
694
- if (!enabled) {
695
- return (false, 0);
696
- }
697
-
698
- (bool inRole, uint32 executionDelay) = hasRole(roleId, caller);
699
- if (!inRole) {
700
- return (false, 0);
701
- }
702
-
703
- // downcast is safe because both options are uint32
704
- delay = uint32(Math.max(operationDelay, executionDelay));
705
- return (delay == 0, delay);
706
- }
707
-
708
- /**
709
- * @dev Returns true if a call with `target` and `selector` is being executed via {executed}.
710
- */
711
- function _isExecuting(address target, bytes4 selector) private view returns (bool) {
712
- AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
713
- return $._executionId == _hashExecutionId(target, selector);
714
- }
715
-
716
- /**
717
- * @dev Returns true if a schedule timepoint is past its expiration deadline.
718
- */
719
- function _isExpired(uint48 timepoint) private view returns (bool) {
720
- return timepoint + expiration() <= Time.timestamp();
721
- }
722
-
723
- /**
724
- * @dev Extracts the selector from calldata. Panics if data is not at least 4 bytes
725
- */
726
- function _checkSelector(bytes calldata data) internal pure returns (bytes4) {
727
- return bytes4(data[0:4]);
728
- }
729
-
730
- /**
731
- * @dev Hashing function for execute protection
732
- */
733
- function _hashExecutionId(address target, bytes4 selector) private pure returns (bytes32) {
734
- return keccak256(abi.encode(target, selector));
735
- }
736
- }