@etherisc/gif-next 0.0.2-bca28f1-161 → 0.0.2-bcecc4c-647

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 (675) hide show
  1. package/README.md +38 -86
  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/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  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 +1548 -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 +4 -0
  27. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +278 -477
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +311 -318
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  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 +255 -1990
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +291 -208
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +415 -2834
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  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 +659 -315
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +375 -475
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +254 -130
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3581 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  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/IAccess.sol/IAccess.json +25 -150
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → oracle/IOracleService.sol/IOracleService.json} +311 -292
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1520 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1483 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +492 -374
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +446 -338
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1205 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +446 -500
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1620 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +762 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +411 -383
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +121 -247
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +239 -303
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +262 -225
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +422 -250
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IProductService.sol/IProductService.json +400 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1276 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +191 -18
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +185 -300
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +453 -34
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +347 -302
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +246 -126
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +307 -177
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +219 -220
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1696 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +222 -232
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +224 -113
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +285 -302
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -40
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -40
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -34
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +76 -164
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +19 -78
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -47
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +28 -90
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -36
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +88 -208
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  306. package/contracts/authorization/AccessAdmin.sol +591 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +138 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  318. package/contracts/{components → distribution}/Distribution.sol +180 -193
  319. package/contracts/distribution/DistributionService.sol +337 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  321. package/contracts/distribution/IDistributionComponent.sol +52 -0
  322. package/contracts/distribution/IDistributionService.sol +97 -0
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
  324. package/contracts/instance/IInstance.sol +72 -72
  325. package/contracts/instance/IInstanceService.sol +57 -24
  326. package/contracts/instance/Instance.sol +176 -203
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +173 -61
  330. package/contracts/instance/InstanceService.sol +316 -315
  331. package/contracts/instance/InstanceServiceManager.sol +13 -27
  332. package/contracts/instance/InstanceStore.sol +277 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  338. package/contracts/instance/module/IAccess.sol +19 -20
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/{ISetup.sol → IComponents.sol} +23 -19
  341. package/contracts/instance/module/IDistribution.sol +6 -4
  342. package/contracts/instance/module/IPolicy.sol +56 -17
  343. package/contracts/instance/module/IRisk.sol +1 -1
  344. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +36 -0
  348. package/contracts/oracle/IOracleComponent.sol +33 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +166 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +39 -0
  353. package/contracts/pool/BasicPool.sol +164 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +55 -0
  355. package/contracts/pool/BundleService.sol +424 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +128 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +155 -0
  360. package/contracts/pool/Pool.sol +332 -0
  361. package/contracts/pool/PoolService.sol +542 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +230 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +82 -0
  366. package/contracts/product/BasicProductAuthorization.sol +43 -0
  367. package/contracts/product/ClaimService.sol +417 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/{instance/service → product}/IApplicationService.sol +17 -37
  370. package/contracts/product/IClaimService.sol +99 -0
  371. package/contracts/product/IPolicyService.sol +78 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +40 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +476 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +392 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +16 -1
  383. package/contracts/registry/IRegistry.sol +61 -26
  384. package/contracts/registry/IRegistryService.sol +45 -43
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +251 -139
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +89 -114
  389. package/contracts/registry/RegistryServiceManager.sol +24 -33
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseRegistry.sol +485 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +262 -60
  394. package/contracts/shared/Component.sol +280 -0
  395. package/contracts/shared/ComponentService.sol +651 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/IComponent.sol +70 -0
  399. package/contracts/shared/IComponentService.sol +108 -0
  400. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  401. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  402. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  403. package/contracts/shared/INftOwnable.sol +6 -11
  404. package/contracts/shared/IPolicyHolder.sol +29 -10
  405. package/contracts/shared/IRegistryLinked.sol +0 -4
  406. package/contracts/shared/IService.sol +15 -6
  407. package/contracts/shared/InitializableCustom.sol +177 -0
  408. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -3
  409. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  410. package/contracts/shared/KeyValueStore.sol +131 -0
  411. package/contracts/shared/Lifecycle.sol +77 -0
  412. package/contracts/shared/NftIdSet.sol +65 -0
  413. package/contracts/shared/NftOwnable.sol +12 -95
  414. package/contracts/shared/PolicyHolder.sol +41 -23
  415. package/contracts/shared/Registerable.sol +15 -21
  416. package/contracts/shared/RegistryLinked.sol +5 -26
  417. package/contracts/shared/Service.sol +52 -30
  418. package/contracts/shared/TokenHandler.sol +37 -6
  419. package/contracts/staking/IStaking.sol +167 -0
  420. package/contracts/staking/IStakingService.sol +160 -0
  421. package/contracts/staking/StakeManagerLib.sol +231 -0
  422. package/contracts/staking/Staking.sol +516 -0
  423. package/contracts/staking/StakingLifecycle.sol +23 -0
  424. package/contracts/staking/StakingManager.sol +50 -0
  425. package/contracts/staking/StakingReader.sol +183 -0
  426. package/contracts/staking/StakingService.sol +411 -0
  427. package/contracts/staking/StakingServiceManager.sol +44 -0
  428. package/contracts/staking/StakingStore.sol +605 -0
  429. package/contracts/staking/TargetManagerLib.sol +207 -0
  430. package/contracts/{types → type}/AddressSet.sol +1 -1
  431. package/contracts/type/Amount.sol +135 -0
  432. package/contracts/{types → type}/Blocknumber.sol +21 -3
  433. package/contracts/type/ClaimId.sol +75 -0
  434. package/contracts/{types → type}/Fee.sol +33 -23
  435. package/contracts/{types → type}/NftId.sol +21 -15
  436. package/contracts/{types → type}/NftIdSet.sol +2 -2
  437. package/contracts/type/ObjectType.sol +271 -0
  438. package/contracts/type/PayoutId.sol +82 -0
  439. package/contracts/{types → type}/Referral.sol +6 -1
  440. package/contracts/type/RequestId.sol +75 -0
  441. package/contracts/{types → type}/RiskId.sol +1 -1
  442. package/contracts/type/RoleId.sol +174 -0
  443. package/contracts/type/Seconds.sol +93 -0
  444. package/contracts/type/Selector.sol +102 -0
  445. package/contracts/{types → type}/StateId.sol +34 -4
  446. package/contracts/type/String.sol +53 -0
  447. package/contracts/{types → type}/Timestamp.sol +23 -14
  448. package/contracts/{types → type}/UFixed.sol +35 -9
  449. package/contracts/{types → type}/Version.sol +5 -2
  450. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  451. package/contracts/upgradeability/ProxyManager.sol +198 -0
  452. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  453. package/contracts/upgradeability/Versionable.sol +59 -0
  454. package/package.json +8 -5
  455. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  456. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  457. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  459. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  460. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  462. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  465. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  467. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  469. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  471. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  473. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  475. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  477. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  479. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  481. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  483. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  485. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  487. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  489. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  491. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  494. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  496. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  498. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  500. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  502. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  503. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  504. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  505. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  506. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  507. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  508. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  509. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  511. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  512. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  514. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  516. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  517. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1117
  520. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1318
  522. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -586
  524. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1176
  526. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -602
  528. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1378
  536. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -642
  538. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -957
  540. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -574
  542. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1007
  544. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -574
  546. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  547. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  548. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  549. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  550. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  551. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  552. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  553. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  554. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  555. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -499
  558. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  560. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  561. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  562. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  563. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  564. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -446
  566. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  568. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -759
  570. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  572. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  574. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  576. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  577. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  578. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  579. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  580. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  582. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  584. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  586. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  588. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  589. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  590. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  592. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  593. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  594. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  595. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  596. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  598. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  600. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  602. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  604. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  607. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  609. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  611. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  613. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  615. package/contracts/components/Component.sol +0 -236
  616. package/contracts/components/IComponent.sol +0 -50
  617. package/contracts/components/IDistributionComponent.sol +0 -100
  618. package/contracts/components/IPoolComponent.sol +0 -87
  619. package/contracts/components/IProductComponent.sol +0 -39
  620. package/contracts/components/Pool.sol +0 -254
  621. package/contracts/components/Product.sol +0 -278
  622. package/contracts/experiment/cloning/Cloner.sol +0 -47
  623. package/contracts/experiment/errors/Require.sol +0 -38
  624. package/contracts/experiment/errors/Revert.sol +0 -44
  625. package/contracts/experiment/inheritance/A.sol +0 -53
  626. package/contracts/experiment/inheritance/B.sol +0 -28
  627. package/contracts/experiment/inheritance/C.sol +0 -34
  628. package/contracts/experiment/inheritance/IA.sol +0 -13
  629. package/contracts/experiment/inheritance/IB.sol +0 -10
  630. package/contracts/experiment/inheritance/IC.sol +0 -12
  631. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  632. package/contracts/experiment/statemachine/ISM.sol +0 -25
  633. package/contracts/experiment/statemachine/SM.sol +0 -57
  634. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  635. package/contracts/experiment/types/TypeA.sol +0 -47
  636. package/contracts/experiment/types/TypeB.sol +0 -29
  637. package/contracts/instance/InstanceAccessManager.sol +0 -297
  638. package/contracts/instance/base/ComponentService.sol +0 -134
  639. package/contracts/instance/base/KeyValueStore.sol +0 -172
  640. package/contracts/instance/base/Lifecycle.sol +0 -100
  641. package/contracts/instance/module/ITreasury.sol +0 -23
  642. package/contracts/instance/service/ApplicationService.sol +0 -268
  643. package/contracts/instance/service/BundleService.sol +0 -298
  644. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  645. package/contracts/instance/service/DistributionService.sol +0 -277
  646. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  647. package/contracts/instance/service/IBundleService.sol +0 -54
  648. package/contracts/instance/service/IDistributionService.sol +0 -65
  649. package/contracts/instance/service/IPolicyService.sol +0 -88
  650. package/contracts/instance/service/IPoolService.sol +0 -20
  651. package/contracts/instance/service/IProductService.sol +0 -40
  652. package/contracts/instance/service/PolicyService.sol +0 -524
  653. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  654. package/contracts/instance/service/PoolService.sol +0 -109
  655. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  656. package/contracts/instance/service/ProductService.sol +0 -233
  657. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  658. package/contracts/registry/RegistryAccessManager.sol +0 -216
  659. package/contracts/registry/ReleaseManager.sol +0 -331
  660. package/contracts/shared/ContractDeployerLib.sol +0 -72
  661. package/contracts/shared/ProxyManager.sol +0 -95
  662. package/contracts/shared/Versionable.sol +0 -148
  663. package/contracts/test/TestFee.sol +0 -25
  664. package/contracts/test/TestRegisterable.sol +0 -18
  665. package/contracts/test/TestRoleId.sol +0 -14
  666. package/contracts/test/TestService.sol +0 -25
  667. package/contracts/test/TestVersion.sol +0 -44
  668. package/contracts/test/TestVersionable.sol +0 -17
  669. package/contracts/test/Usdc.sol +0 -26
  670. package/contracts/types/ChainId.sol +0 -38
  671. package/contracts/types/NumberId.sol +0 -52
  672. package/contracts/types/ObjectType.sol +0 -156
  673. package/contracts/types/RoleId.sol +0 -90
  674. /package/contracts/{types → type}/DistributorType.sol +0 -0
  675. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,591 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
+ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
7
+
8
+ import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
9
+ import {IAccessAdmin} from "./IAccessAdmin.sol";
10
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
11
+ import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
12
+ import {Str, StrLib} from "../type/String.sol";
13
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
14
+
15
+
16
+ /**
17
+ * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
18
+ * The contract provides read functions to query all available roles, targets and access rights.
19
+ * This contract works for both a constructor based deployment or a deployment based on cloning and initialization.
20
+ */
21
+ contract AccessAdmin is
22
+ AccessManagedUpgradeable,
23
+ ReentrancyGuardUpgradeable,
24
+ IAccessAdmin
25
+ {
26
+ using EnumerableSet for EnumerableSet.AddressSet;
27
+
28
+ string public constant ADMIN_ROLE_NAME = "AdminRole";
29
+ string public constant PUBLIC_ROLE_NAME = "PublicRole";
30
+
31
+ /// @dev the OpenZeppelin access manager driving the access admin contract
32
+ AccessManagerCloneable internal _authority;
33
+
34
+ /// @dev stores the deployer address and allows to create initializers
35
+ /// that are restricted to the deployer address.
36
+ address internal _deployer;
37
+
38
+ /// @dev store role info per role id
39
+ mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
40
+
41
+ /// @dev store role name info per role name
42
+ mapping(Str roleName => RoleNameInfo nameInfo) internal _roleForName;
43
+
44
+ /// @dev store array with all created roles
45
+ RoleId [] internal _roleIds;
46
+
47
+ /// @dev store set of current role members for given role
48
+ mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
49
+
50
+ /// @dev store target info per target address
51
+ mapping(address target => TargetInfo info) internal _targetInfo;
52
+
53
+ /// @dev store role name info per role name
54
+ mapping(Str targetName => address target) internal _targetForName;
55
+
56
+ /// @dev store array with all created targets
57
+ address [] internal _targets;
58
+
59
+ /// @dev store all managed functions per target
60
+ mapping(address target => SelectorSetLib.Set selectors) internal _targetFunctions;
61
+
62
+ /// @dev function infos array
63
+ mapping(address target => mapping(Selector selector => FunctionInfo)) internal _functionInfo;
64
+
65
+ /// @dev temporary dynamic functions array
66
+ bytes4[] private _functions;
67
+
68
+ modifier onlyDeployer() {
69
+ // special case for cloned AccessAdmin contracts
70
+ // IMPORTANT cloning and _initializeAuthority needs to be done in a single transaction
71
+ if (_deployer == address(0)) {
72
+ _deployer = msg.sender;
73
+ }
74
+
75
+ if (msg.sender != _deployer) {
76
+ revert ErrorNotDeployer();
77
+ }
78
+ _;
79
+ }
80
+
81
+ modifier onlyRoleAdmin(RoleId roleId) {
82
+ if (!roleExists(roleId)) {
83
+ revert ErrorRoleUnknown(roleId);
84
+ }
85
+
86
+ if (!hasAdminRole(msg.sender, roleId)) {
87
+ revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
88
+ }
89
+ _;
90
+ }
91
+
92
+ modifier onlyRoleMember(RoleId roleId) {
93
+ if (!hasRole(msg.sender, roleId)) {
94
+ revert ErrorNotRoleOwner(roleId);
95
+ }
96
+ _;
97
+ }
98
+
99
+ modifier onlyExistingRole(RoleId roleId) {
100
+ _checkRoleId(roleId);
101
+ _;
102
+ }
103
+
104
+ modifier onlyExistingTarget(address target) {
105
+ _checkTarget(target);
106
+ _;
107
+ }
108
+
109
+ constructor() {
110
+ _deployer = msg.sender;
111
+ _authority = new AccessManagerCloneable();
112
+ _authority.initialize(address(this));
113
+
114
+ _setAuthority(address(_authority)); // set authority for oz access managed
115
+ _createAdminAndPublicRoles();
116
+ _disableInitializers();
117
+ }
118
+
119
+ //--- view functions for roles ------------------------------------------//
120
+
121
+ function roles() external view returns (uint256 numberOfRoles) {
122
+ return _roleIds.length;
123
+ }
124
+
125
+ function getRoleId(uint256 idx) external view returns (RoleId roleId) {
126
+ return _roleIds[idx];
127
+ }
128
+
129
+ function getAdminRole() public view returns (RoleId roleId) {
130
+ return RoleId.wrap(_authority.ADMIN_ROLE());
131
+ }
132
+
133
+ function getPublicRole() public view returns (RoleId roleId) {
134
+ return RoleId.wrap(_authority.PUBLIC_ROLE());
135
+ }
136
+
137
+ function roleExists(RoleId roleId) public view returns (bool exists) {
138
+ return _roleInfo[roleId].createdAt.gtz();
139
+ }
140
+
141
+ function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
142
+ return _roleInfo[roleId];
143
+ }
144
+
145
+ function getRoleForName(Str name) external view returns (RoleNameInfo memory) {
146
+ return _roleForName[name];
147
+ }
148
+
149
+ function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
150
+ return _roleMembers[roleId].length();
151
+ }
152
+
153
+ function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account) {
154
+ return _roleMembers[roleId].at(idx);
155
+ }
156
+
157
+ function hasRole(address account, RoleId roleId) public view returns (bool) {
158
+ (bool isMember, ) = _authority.hasRole(
159
+ RoleId.unwrap(roleId),
160
+ account);
161
+ return isMember;
162
+ }
163
+
164
+ function hasAdminRole(address account, RoleId roleId)
165
+ public
166
+ virtual
167
+ view
168
+ returns (bool)
169
+ {
170
+ return hasRole(account, _roleInfo[roleId].adminRoleId);
171
+ }
172
+
173
+ //--- view functions for targets ----------------------------------------//
174
+
175
+ function targetExists(address target) public view returns (bool exists) {
176
+ return _targetInfo[target].createdAt.gtz();
177
+ }
178
+
179
+ function targets() external view returns (uint256 numberOfTargets) {
180
+ return _targets.length;
181
+ }
182
+
183
+ function getTargetAddress(uint256 idx) external view returns (address target) {
184
+ return _targets[idx];
185
+ }
186
+
187
+ function getTargetInfo(address target) external view returns (TargetInfo memory targetInfo) {
188
+ return _targetInfo[target];
189
+ }
190
+
191
+ function getTargetForName(Str name) public view returns (address target) {
192
+ return _targetForName[name];
193
+ }
194
+
195
+ function isTargetLocked(address target) public view returns (bool locked) {
196
+ return _authority.isTargetClosed(target);
197
+ }
198
+
199
+ function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
200
+ return SelectorSetLib.size(_targetFunctions[target]);
201
+ }
202
+
203
+ function getAuthorizedFunction(
204
+ address target,
205
+ uint256 idx
206
+ )
207
+ external
208
+ view
209
+ returns (
210
+ FunctionInfo memory func,
211
+ RoleId roleId
212
+ )
213
+ {
214
+ Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
215
+ func = _functionInfo[target][selector];
216
+ roleId = RoleIdLib.toRoleId(
217
+ _authority.getTargetFunctionRole(
218
+ target,
219
+ selector.toBytes4()));
220
+ }
221
+
222
+ function isAccessManaged(address target) public view returns (bool) {
223
+ if (!_isContract(target)) {
224
+ return false;
225
+ }
226
+
227
+ (bool success, ) = target.staticcall(
228
+ abi.encodeWithSelector(
229
+ AccessManagedUpgradeable.authority.selector));
230
+
231
+ return success;
232
+ }
233
+
234
+ function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
235
+ (can, ) = _authority.canCall(caller, target, selector.toBytes4());
236
+ }
237
+
238
+ function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
239
+ return RoleInfo({
240
+ name: StrLib.toStr(name),
241
+ adminRoleId: adminRoleId,
242
+ roleType: roleType,
243
+ maxMemberCount: maxMemberCount,
244
+ createdAt: TimestampLib.blockTimestamp()
245
+ });
246
+ }
247
+
248
+ function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
249
+ return FunctionInfo({
250
+ name: StrLib.toStr(name),
251
+ selector: SelectorLib.toSelector(selector),
252
+ createdAt: TimestampLib.blockTimestamp()});
253
+ }
254
+
255
+ function deployer() public view returns (address) {
256
+ return _deployer;
257
+ }
258
+
259
+ //--- internal/private functions -------------------------------------------------//
260
+
261
+ function _authorizeTargetFunctions(
262
+ address target,
263
+ RoleId roleId,
264
+ FunctionInfo[] memory functions
265
+ )
266
+ internal
267
+ {
268
+ if (roleId == getAdminRole()) {
269
+ revert ErrorAuthorizeForAdminRoleInvalid(target);
270
+ }
271
+
272
+ bool addFunctions = true;
273
+ bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
274
+
275
+ // apply authz via access manager
276
+ _grantRoleAccessToFunctions(target, roleId, functionSelectors);
277
+ }
278
+
279
+ function _unauthorizeTargetFunctions(
280
+ address target,
281
+ FunctionInfo[] memory functions
282
+ )
283
+ internal
284
+ {
285
+ bool addFunctions = false;
286
+ bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
287
+ _grantRoleAccessToFunctions(target, getAdminRole(), functionSelectors);
288
+ }
289
+
290
+ function _processFunctionSelectors(
291
+ address target,
292
+ FunctionInfo[] memory functions,
293
+ bool addFunctions
294
+ )
295
+ internal
296
+ returns (
297
+ bytes4[] memory functionSelectors
298
+ )
299
+ {
300
+ uint256 n = functions.length;
301
+ functionSelectors = new bytes4[](n);
302
+ FunctionInfo memory func;
303
+ Selector selector;
304
+
305
+ for (uint256 i = 0; i < n; i++) {
306
+ func = functions[i];
307
+ selector = func.selector;
308
+
309
+ // add function selector to target selector set if not in set
310
+ if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
311
+ else { SelectorSetLib.remove(_targetFunctions[target], selector); }
312
+
313
+ // set function name
314
+ _functionInfo[target][selector] = func;
315
+
316
+ // add bytes4 selector to function selector array
317
+ functionSelectors[i] = selector.toBytes4();
318
+ }
319
+ }
320
+
321
+ function _initializeAuthority(
322
+ address authorityAddress
323
+ )
324
+ internal
325
+ virtual
326
+ onlyInitializing()
327
+ onlyDeployer()
328
+ {
329
+ if (authority() != address(0)) {
330
+ revert ErrorAuthorityAlreadySet();
331
+ }
332
+
333
+ _authority = AccessManagerCloneable(authorityAddress);
334
+ __AccessManaged_init(address(_authority));
335
+ }
336
+
337
+
338
+ function _initializeAdminAndPublicRoles()
339
+ internal
340
+ virtual
341
+ onlyInitializing()
342
+ {
343
+ _createAdminAndPublicRoles();
344
+ }
345
+
346
+
347
+ /// @dev internal setup function that can be used in both constructor and initializer.
348
+ function _createAdminAndPublicRoles()
349
+ internal
350
+ {
351
+ RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
352
+ FunctionInfo[] memory functions;
353
+
354
+ // setup admin role
355
+ _createRoleUnchecked(
356
+ ADMIN_ROLE(),
357
+ toRole({
358
+ adminRoleId: ADMIN_ROLE(),
359
+ roleType: RoleType.Contract,
360
+ maxMemberCount: 1,
361
+ name: ADMIN_ROLE_NAME}));
362
+
363
+ // add this contract as admin role member
364
+ _roleMembers[adminRoleId].add(address(this));
365
+
366
+ // setup public role
367
+ _createRoleUnchecked(
368
+ PUBLIC_ROLE(),
369
+ toRole({
370
+ adminRoleId: ADMIN_ROLE(),
371
+ roleType: RoleType.Gif,
372
+ maxMemberCount: type(uint32).max,
373
+ name: PUBLIC_ROLE_NAME}));
374
+ }
375
+
376
+ /// @dev check if target exists and reverts if it doesn't
377
+ function _checkTarget(address target)
378
+ internal
379
+ {
380
+ if (_targetInfo[target].createdAt.eqz()) {
381
+ revert ErrorTargetUnknown(target);
382
+ }
383
+ }
384
+
385
+ /// @dev grant the specified role access to all functions in the provided selector list
386
+ function _grantRoleAccessToFunctions(
387
+ address target,
388
+ RoleId roleId,
389
+ bytes4[] memory functionSelectors
390
+ )
391
+ internal
392
+ {
393
+ _authority.setTargetFunctionRole(
394
+ target,
395
+ functionSelectors,
396
+ RoleId.unwrap(roleId));
397
+
398
+ // implizit logging: rely on OpenZeppelin log TargetFunctionRoleUpdated
399
+ }
400
+
401
+ /// @dev grant the specified role to the provided account
402
+ function _grantRoleToAccount(RoleId roleId, address account)
403
+ internal
404
+ {
405
+ _checkRoleId(roleId);
406
+
407
+ // check max role members will not be exceeded
408
+ if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
409
+ revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
410
+ }
411
+
412
+ // check account is contract for contract role
413
+ // TODO implement
414
+ if (_roleInfo[roleId].roleType == RoleType.Contract) {
415
+ }
416
+
417
+ _roleMembers[roleId].add(account);
418
+ _authority.grantRole(
419
+ RoleId.unwrap(roleId),
420
+ account,
421
+ 0);
422
+
423
+ // indirect logging: rely on OpenZeppelin log RoleGranted
424
+ }
425
+
426
+ /// @dev revoke the specified role from the provided account
427
+ function _revokeRoleFromAccount(RoleId roleId, address account)
428
+ internal
429
+ {
430
+ _checkRoleId(roleId);
431
+
432
+ // check role removal is permitted
433
+ if (_roleInfo[roleId].roleType == RoleType.Contract) {
434
+ revert ErrorRoleRemovalDisabled(roleId);
435
+ }
436
+
437
+ _roleMembers[roleId].remove(account);
438
+ _authority.revokeRole(
439
+ RoleId.unwrap(roleId),
440
+ account);
441
+
442
+ // indirect logging: rely on OpenZeppelin log RoleGranted
443
+ }
444
+
445
+
446
+ function _checkRoleId(RoleId roleId)
447
+ internal
448
+ {
449
+ if (_roleInfo[roleId].createdAt.eqz()) {
450
+ revert ErrorRoleUnknown(roleId);
451
+ }
452
+
453
+ uint64 roleIdInt = RoleId.unwrap(roleId);
454
+ if (roleIdInt == _authority.ADMIN_ROLE()
455
+ || roleIdInt == _authority.PUBLIC_ROLE())
456
+ {
457
+ revert ErrorRoleIsLocked(roleId);
458
+ }
459
+ }
460
+
461
+ /// @dev Creates a role based on the provided parameters.
462
+ /// Checks that the provided role and role id and role name not already used.
463
+ function _createRole(
464
+ RoleId roleId,
465
+ RoleInfo memory info
466
+ )
467
+ internal
468
+ {
469
+ // check role does not yet exist
470
+ if(roleExists(roleId)) {
471
+ revert ErrorRoleAlreadyCreated(
472
+ roleId,
473
+ _roleInfo[roleId].name.toString());
474
+ }
475
+
476
+ // check admin role exists
477
+ if(!roleExists(info.adminRoleId)) {
478
+ revert ErrorRoleAdminNotExisting(info.adminRoleId);
479
+ }
480
+
481
+ // check role name is not empty
482
+ if(info.name.length() == 0) {
483
+ revert ErrorRoleNameEmpty(roleId);
484
+ }
485
+
486
+ // check role name is not used for another role
487
+ if(_roleForName[info.name].exists) {
488
+ revert ErrorRoleNameAlreadyExists(
489
+ roleId,
490
+ info.name.toString(),
491
+ _roleForName[info.name].roleId);
492
+ }
493
+
494
+ _createRoleUnchecked(roleId, info);
495
+ }
496
+
497
+
498
+ function _createRoleUnchecked(
499
+ RoleId roleId,
500
+ RoleInfo memory info
501
+ )
502
+ private
503
+ {
504
+ // create role info
505
+ info.createdAt = TimestampLib.blockTimestamp();
506
+ _roleInfo[roleId] = info;
507
+
508
+ // create role name info
509
+ _roleForName[info.name] = RoleNameInfo({
510
+ roleId: roleId,
511
+ exists: true});
512
+
513
+ // add role to list of roles
514
+ _roleIds.push(roleId);
515
+
516
+ emit LogRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
517
+ }
518
+
519
+
520
+ function _createTarget(
521
+ address target,
522
+ string memory targetName,
523
+ bool checkAuthority,
524
+ bool custom
525
+ )
526
+ internal
527
+ nonReentrant()
528
+ {
529
+ // check target does not yet exist
530
+ if(targetExists(target)) {
531
+ revert ErrorTargetAlreadyCreated(
532
+ target,
533
+ _targetInfo[target].name.toString());
534
+ }
535
+
536
+ // check target name is not empty
537
+ Str name = StrLib.toStr(targetName);
538
+ if(name.length() == 0) {
539
+ revert ErrorTargetNameEmpty(target);
540
+ }
541
+
542
+ // check target name is not used for another target
543
+ if( _targetForName[name] != address(0)) {
544
+ revert ErrorTargetNameAlreadyExists(
545
+ target,
546
+ targetName,
547
+ _targetForName[name]);
548
+ }
549
+
550
+ // check target is an access managed contract
551
+ if (!isAccessManaged(target)) {
552
+ revert ErrorTargetNotAccessManaged(target);
553
+ }
554
+
555
+ // check target shares authority with this contract
556
+ if (checkAuthority) {
557
+ address targetAuthority = AccessManagedUpgradeable(target).authority();
558
+ if (targetAuthority != authority()) {
559
+ revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
560
+ }
561
+ }
562
+
563
+ // create target info
564
+ _targetInfo[target] = TargetInfo({
565
+ name: name,
566
+ isCustom: custom,
567
+ createdAt: TimestampLib.blockTimestamp()
568
+ });
569
+
570
+ // create name to target mapping
571
+ _targetForName[name] = target;
572
+
573
+ // add role to list of roles
574
+ _targets.push(target);
575
+
576
+ emit LogTargetCreated(target, targetName);
577
+ }
578
+
579
+ function _isContract(address target)
580
+ internal
581
+ view
582
+ returns (bool)
583
+ {
584
+ uint256 size;
585
+ assembly {
586
+ size := extcodesize(target)
587
+ }
588
+ return size > 0;
589
+ }
590
+
591
+ }
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
5
+
6
+ contract AccessManagerCloneable is
7
+ AccessManagerUpgradeable
8
+ {
9
+
10
+ function initialize(address initialAdmin)
11
+ external
12
+ initializer()
13
+ {
14
+ __AccessManager_init(initialAdmin);
15
+ }
16
+ }