@etherisc/gif-next 0.0.2-da06f3b-803 → 0.0.2-da0f894-204

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 (315) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +212 -94
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +552 -122
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +64 -72
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +279 -98
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +406 -90
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +68 -144
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +654 -117
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +316 -166
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  21. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +765 -323
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +97 -180
  25. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  26. package/artifacts/contracts/instance/Instance.sol/Instance.json +841 -574
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +134 -231
  29. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +98 -124
  31. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +265 -269
  33. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +319 -99
  35. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  37. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +118 -169
  39. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  43. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  45. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +62 -36
  47. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  54. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +947 -0
  55. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  57. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +261 -267
  59. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  60. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +305 -93
  61. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  63. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  65. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1031 -250
  67. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +441 -85
  69. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +535 -0
  71. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +130 -212
  73. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
  75. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +552 -135
  77. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +40 -287
  79. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +22 -169
  81. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +22 -169
  83. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +164 -391
  85. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +311 -127
  87. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +142 -221
  89. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +302 -90
  91. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +142 -221
  93. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +302 -90
  95. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  96. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  97. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +15 -21
  98. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  99. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +83 -174
  100. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  101. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  102. package/artifacts/contracts/registry/Registry.sol/Registry.json +28 -34
  103. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  104. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  105. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  106. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +193 -216
  107. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -94
  109. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
  111. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -37
  113. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  114. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  115. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  116. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  117. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  118. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  119. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  120. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  121. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -29
  122. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  123. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  124. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  125. package/artifacts/contracts/shared/IService.sol/IService.json +22 -169
  126. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  128. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +113 -33
  130. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  131. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  132. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -74
  134. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +125 -55
  136. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  137. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  138. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  139. package/artifacts/contracts/shared/Service.sol/Service.json +113 -164
  140. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  141. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  142. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  143. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  145. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +125 -55
  148. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  150. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestService.sol/TestService.json +134 -221
  152. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  156. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  157. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  158. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  161. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  162. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  164. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  167. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  169. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  170. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  171. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  174. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  175. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  176. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  178. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  180. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  182. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  184. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  187. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  191. package/contracts/components/Component.sol +82 -77
  192. package/contracts/components/Distribution.sol +188 -48
  193. package/contracts/components/IComponent.sol +42 -17
  194. package/contracts/components/IDistributionComponent.sol +39 -7
  195. package/contracts/components/IPoolComponent.sol +121 -21
  196. package/contracts/components/IProductComponent.sol +3 -2
  197. package/contracts/components/Pool.sol +290 -120
  198. package/contracts/components/Product.sol +92 -69
  199. package/contracts/instance/BundleManager.sol +1 -1
  200. package/contracts/instance/IInstance.sol +21 -1
  201. package/contracts/instance/IInstanceService.sol +19 -2
  202. package/contracts/instance/Instance.sol +58 -36
  203. package/contracts/instance/InstanceAccessManager.sol +136 -253
  204. package/contracts/instance/InstanceService.sol +154 -137
  205. package/contracts/instance/InstanceServiceManager.sol +1 -1
  206. package/contracts/instance/base/ComponentService.sol +1 -1
  207. package/contracts/instance/module/IAccess.sol +10 -11
  208. package/contracts/instance/module/IBundle.sol +2 -1
  209. package/contracts/instance/module/IDistribution.sol +2 -0
  210. package/contracts/instance/module/IPolicy.sol +30 -3
  211. package/contracts/instance/module/ISetup.sol +10 -10
  212. package/contracts/instance/service/ApplicationService.sol +346 -0
  213. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  214. package/contracts/instance/service/BundleService.sol +15 -9
  215. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  216. package/contracts/instance/service/ClaimService.sol +151 -0
  217. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  218. package/contracts/instance/service/DistributionService.sol +303 -15
  219. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  220. package/contracts/instance/service/IApplicationService.sol +81 -0
  221. package/contracts/instance/service/IBundleService.sol +14 -3
  222. package/contracts/instance/service/IClaimService.sol +61 -0
  223. package/contracts/instance/service/IDistributionService.sol +74 -0
  224. package/contracts/instance/service/IPolicyService.sol +26 -50
  225. package/contracts/instance/service/PolicyService.sol +126 -260
  226. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  227. package/contracts/instance/service/PoolService.sol +2 -3
  228. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  229. package/contracts/instance/service/ProductService.sol +9 -9
  230. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  231. package/contracts/registry/IRegistry.sol +3 -4
  232. package/contracts/registry/IRegistryService.sol +10 -8
  233. package/contracts/registry/Registry.sol +28 -21
  234. package/contracts/registry/RegistryService.sol +69 -48
  235. package/contracts/registry/RegistryServiceManager.sol +13 -13
  236. package/contracts/registry/ReleaseManager.sol +18 -28
  237. package/contracts/registry/TokenRegistry.sol +16 -12
  238. package/contracts/shared/ERC165.sol +14 -12
  239. package/contracts/shared/INftOwnable.sol +11 -10
  240. package/contracts/shared/IPolicyHolder.sol +26 -0
  241. package/contracts/shared/IRegisterable.sol +3 -3
  242. package/contracts/shared/IRegistryLinked.sol +12 -0
  243. package/contracts/shared/IService.sol +2 -0
  244. package/contracts/shared/IVersionable.sol +4 -47
  245. package/contracts/shared/NftOwnable.sol +66 -85
  246. package/contracts/shared/PolicyHolder.sol +81 -0
  247. package/contracts/shared/ProxyManager.sol +100 -25
  248. package/contracts/shared/Registerable.sol +7 -19
  249. package/contracts/shared/RegistryLinked.sol +48 -0
  250. package/contracts/shared/Service.sol +15 -17
  251. package/contracts/shared/Versionable.sol +4 -92
  252. package/contracts/test/TestRegisterable.sol +1 -1
  253. package/contracts/test/TestService.sol +1 -1
  254. package/contracts/types/ClaimId.sol +52 -0
  255. package/contracts/types/DistributorType.sol +2 -2
  256. package/contracts/types/ObjectType.sol +9 -5
  257. package/contracts/types/PayoutId.sol +54 -0
  258. package/contracts/types/RoleId.sol +14 -12
  259. package/contracts/types/Seconds.sol +54 -0
  260. package/contracts/types/Timestamp.sol +12 -13
  261. package/package.json +1 -1
  262. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  263. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  264. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  265. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  266. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  267. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  268. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  269. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  270. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  271. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  272. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  273. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  274. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  275. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  276. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  277. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  278. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  279. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  280. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  281. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  282. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  283. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  284. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  285. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  286. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  287. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  288. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  289. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  290. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  291. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  292. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  293. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  294. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  295. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  296. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  297. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  298. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  299. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  300. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  301. package/contracts/experiment/cloning/Cloner.sol +0 -47
  302. package/contracts/experiment/errors/Require.sol +0 -38
  303. package/contracts/experiment/errors/Revert.sol +0 -44
  304. package/contracts/experiment/inheritance/A.sol +0 -53
  305. package/contracts/experiment/inheritance/B.sol +0 -28
  306. package/contracts/experiment/inheritance/C.sol +0 -34
  307. package/contracts/experiment/inheritance/IA.sol +0 -13
  308. package/contracts/experiment/inheritance/IB.sol +0 -10
  309. package/contracts/experiment/inheritance/IC.sol +0 -12
  310. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  311. package/contracts/experiment/statemachine/ISM.sol +0 -25
  312. package/contracts/experiment/statemachine/SM.sol +0 -57
  313. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  314. package/contracts/experiment/types/TypeA.sol +0 -47
  315. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -6,12 +6,10 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
6
6
  import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
7
7
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
8
8
 
9
- import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE} from "../types/RoleId.sol";
9
+ import {RoleId, RoleIdLib } from "../types/RoleId.sol";
10
10
  import {TimestampLib} from "../types/Timestamp.sol";
11
11
  import {IAccess} from "./module/IAccess.sol";
12
12
 
13
- import {IRegistry} from "../registry/IRegistry.sol";
14
-
15
13
  contract InstanceAccessManager is
16
14
  AccessManagedUpgradeable
17
15
  {
@@ -24,302 +22,173 @@ contract InstanceAccessManager is
24
22
  uint32 public constant EXECUTION_DELAY = 0;
25
23
 
26
24
  // role specific state
27
- mapping(RoleId roleId => IAccess.RoleInfo info) internal _roleInfo;
25
+ mapping(RoleId roleId => IAccess.RoleInfo info) internal _role;
28
26
  mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
29
- mapping(ShortString name => RoleId roleId) internal _roleIdForName;
30
- RoleId [] internal _roleIds;
31
- uint64 _idNext;
27
+ mapping(ShortString name => RoleId roleId) internal _roleForName;
28
+ RoleId [] internal _roles;
32
29
 
33
30
  // target specific state
34
- mapping(address target => IAccess.TargetInfo info) internal _targetInfo;
35
- mapping(ShortString name => address target) internal _targetAddressForName;
31
+ mapping(address target => IAccess.TargetInfo info) internal _target;
32
+ mapping(ShortString name => address target) internal _targetForName;
36
33
  address [] internal _targets;
37
34
 
38
35
  AccessManager internal _accessManager;
39
- IRegistry internal _registry;
40
-
41
- modifier restrictedToRoleAdmin(RoleId roleId) {
42
- RoleId admin = getRoleAdmin(roleId);
43
- (bool inRole, uint32 executionDelay) = _accessManager.hasRole(admin.toInt(), _msgSender());
44
- assert(executionDelay == 0); // to be sure no delayed execution functionality is used
45
- if (!inRole) {
46
- revert IAccess.ErrorIAccessCallerIsNotRoleAdmin(_msgSender(), roleId);
47
- }
48
- _;
49
- }
50
36
 
51
- function initialize(address initialAdmin, address registry) external initializer
37
+ function initialize(address initialAdmin) external initializer
52
38
  {
53
39
  // if size of the contract gets too large, this can be externalized which will reduce the contract size considerably
54
40
  _accessManager = new AccessManager(address(this));
41
+ // this service required admin rights to access manager to be able to grant/revoke roles
42
+ _accessManager.grantRole(_accessManager.ADMIN_ROLE(), initialAdmin, 0);
55
43
 
56
44
  __AccessManaged_init(address(_accessManager));
57
45
 
58
- _registry = IRegistry(_registry);
59
- _idNext = CUSTOM_ROLE_ID_MIN;
60
-
61
- _createRole(ADMIN_ROLE(), ADMIN_ROLE_NAME, false);
62
- _createRole(PUBLIC_ROLE(), PUBLIC_ROLE_NAME, false);
63
-
64
- // assume initialAdmin is instance service which requires admin rights to access manager during instance cloning
65
- _accessManager.grantRole(ADMIN_ROLE().toInt(), initialAdmin, 0);
66
-
67
- EnumerableSet.add(_roleMembers[ADMIN_ROLE()], address(this));
68
- EnumerableSet.add(_roleMembers[ADMIN_ROLE()], initialAdmin);
46
+ _createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
47
+ _createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
69
48
  }
70
49
 
71
50
  //--- Role ------------------------------------------------------//
72
- // INSTANCE_SERVICE_ROLE
73
- // creates core or gif roles
74
- // assume core roles are never revoked or renounced -> core roles admin is never active after intialization
75
- // assume gif roles can be revoked or renounced
76
- function createRole(RoleId roleId, string memory name, RoleId admin)
77
- external
78
- restricted()
79
- {
80
- bool isCustom = false;
81
- _validateRoleParameters(roleId, name, isCustom);
82
- _createRole(roleId, name, isCustom);
83
- setRoleAdmin(roleId, admin);
51
+ function createGifRole(RoleId roleId, string memory name) external restricted() {
52
+ _createRole(roleId, name, false, true);
84
53
  }
85
54
 
86
- // INSTANCE_OWNER_ROLE
87
- // creates custom roles only
88
- // TODO INSTANCE_OWNER_ROLE as default admin
89
- function createCustomRole(string memory name, RoleId admin)
90
- external
91
- restricted()
92
- returns(RoleId roleId)
93
- {
94
- bool isCustom = true;
95
- RoleId roleId = _getNextCustomRoleId();
96
- _validateRoleParameters(roleId, name, isCustom);
97
- _createRole(roleId, name, isCustom);
98
- setRoleAdmin(roleId, admin);
55
+ function createRole(RoleId roleId, string memory name) external restricted() {
56
+ _createRole(roleId, name, true, true);
99
57
  }
100
58
 
101
- // TODO MUST always be restricted to ADMIN_ROLE? -> use onlyAdminRole or use similar _getAdminRestrictions()
102
- function setRoleAdmin(RoleId roleId, RoleId admin)
103
- public
104
- restricted()
105
- {
59
+ function setRoleLocked(RoleId roleId, bool locked) external restricted() {
106
60
  if (!roleExists(roleId)) {
107
61
  revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
108
62
  }
109
63
 
110
- if (!roleExists(admin)) {
111
- revert IAccess.ErrorIAccessRoleIdInvalid(admin);
112
- }
64
+ _role[roleId].isLocked = locked;
65
+ _role[roleId].updatedAt = TimestampLib.blockTimestamp();
66
+ }
113
67
 
114
- _roleInfo[roleId].admin = admin;
68
+ function roleExists(RoleId roleId) public view returns (bool exists) {
69
+ return _role[roleId].createdAt.gtz();
115
70
  }
116
71
 
117
- // TODO notify member?
118
- // TODO granting/revoking can be `attached` to nft transfer?
119
- function grantRole(RoleId roleId, address member)
120
- external
121
- restrictedToRoleAdmin(roleId)
122
- returns (bool granted)
123
- {
72
+ function grantRole(RoleId roleId, address member) external restricted() returns (bool granted) {
124
73
  if (!roleExists(roleId)) {
125
74
  revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
126
75
  }
127
76
 
128
- granted = EnumerableSet.add(_roleMembers[roleId], member);
129
- if(granted) {
77
+ if (_role[roleId].isLocked) {
78
+ revert IAccess.ErrorIAccessRoleIdNotActive(roleId);
79
+ }
80
+
81
+ if (!EnumerableSet.contains(_roleMembers[roleId], member)) {
130
82
  _accessManager.grantRole(roleId.toInt(), member, EXECUTION_DELAY);
131
-
132
- }
83
+ EnumerableSet.add(_roleMembers[roleId], member);
84
+ return true;
85
+ }
86
+
87
+ return false;
133
88
  }
134
89
 
135
- function revokeRole(RoleId roleId, address member)
136
- external
137
- restrictedToRoleAdmin(roleId)
138
- returns (bool)
139
- {
140
- return _revokeRole(roleId, member);
90
+ function revokeRole(RoleId roleId, address member) external restricted() returns (bool revoked) {
91
+ if (!roleExists(roleId)) {
92
+ revert IAccess.ErrorIAccessRevokeNonexstentRole(roleId);
93
+ }
94
+
95
+ if (EnumerableSet.contains(_roleMembers[roleId], member)) {
96
+ _accessManager.revokeRole(roleId.toInt(), member);
97
+ EnumerableSet.remove(_roleMembers[roleId], member);
98
+ return true;
99
+ }
100
+
101
+ return false;
141
102
  }
142
103
 
143
104
  /// @dev not restricted function by intention
144
- /// the restriction to role members is already enforced by the call to the access manager
145
- function renounceRole(RoleId roleId)
146
- external
147
- returns (bool)
148
- {
105
+ /// the restriction to role members is already enforced by the call to the access manger
106
+ function renounceRole(RoleId roleId) external returns (bool revoked) {
149
107
  address member = msg.sender;
150
- // cannot use accessManger.renounce as it directly checks against msg.sender
151
- return _revokeRole(roleId, member);
152
- }
153
108
 
154
- function roleExists(RoleId roleId) public view returns (bool exists) {
155
- return _roleInfo[roleId].createdAt.gtz();
156
- }
109
+ if (!roleExists(roleId)) {
110
+ revert IAccess.ErrorIAccessRenounceNonexstentRole(roleId);
111
+ }
157
112
 
158
- function getRoleAdmin(RoleId roleId) public view returns(RoleId admin) {
159
- return _roleInfo[roleId].admin;
160
- }
113
+ if (EnumerableSet.contains(_roleMembers[roleId], member)) {
114
+ // cannot use accessManger.renounce as it directly checks against msg.sender
115
+ _accessManager.revokeRole(roleId.toInt(), member);
116
+ EnumerableSet.remove(_roleMembers[roleId], member);
117
+ return true;
118
+ }
161
119
 
162
- function getRoleInfo(RoleId roleId) external view returns (IAccess.RoleInfo memory role) {
163
- return _roleInfo[roleId];
120
+ return false;
164
121
  }
165
122
 
166
- function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
167
- return EnumerableSet.length(_roleMembers[roleId]);
123
+ function roles() external view returns (uint256 numberOfRoles) {
124
+ return _roles.length;
168
125
  }
169
126
 
170
127
  function getRoleId(uint256 idx) external view returns (RoleId roleId) {
171
- return _roleIds[idx];
128
+ return _roles[idx];
172
129
  }
173
130
 
174
131
  function getRoleIdForName(string memory name) external view returns (RoleId roleId) {
175
- return _roleIdForName[ShortStrings.toShortString(name)];
132
+ return _roleForName[ShortStrings.toShortString(name)];
176
133
  }
177
134
 
178
- function roleMember(RoleId roleId, uint256 idx) external view returns (address roleMember) {
179
- return EnumerableSet.at(_roleMembers[roleId], idx);
135
+ function getRole(RoleId roleId) external view returns (IAccess.RoleInfo memory role) {
136
+ return _role[roleId];
180
137
  }
181
138
 
182
139
  function hasRole(RoleId roleId, address account) external view returns (bool accountHasRole) {
183
140
  (accountHasRole, ) = _accessManager.hasRole(roleId.toInt(), account);
184
141
  }
185
142
 
186
- function roles() external view returns (uint256 numberOfRoles) {
187
- return _roleIds.length;
143
+ function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
144
+ return EnumerableSet.length(_roleMembers[roleId]);
188
145
  }
189
146
 
190
- //--- Target ------------------------------------------------------//
191
- // INSTANCE_SERVICE_ROLE
192
- function createTarget(address target, string memory name) external restricted() {
193
- bool isCustom = false;
194
- _createTarget(target, name, isCustom);
147
+ function getRoleMember(RoleId roleId, uint256 idx) external view returns (address roleMember) {
148
+ return EnumerableSet.at(_roleMembers[roleId], idx);
195
149
  }
196
- // INSTANCE_OWNER_ROLE
197
- function createCustomTarget(address target, string memory name)
198
- external
199
- restricted()
200
- {
201
- // TODO custom targets can not be registered before this function, but possibly can after...
202
- if(_registry.isRegistered(target)) {
203
- revert IAccess.ErrorIAccessTargetIsRegistered(target);
204
- }
205
150
 
206
- bool isCustom = true;
207
- _createTarget(target, name, isCustom);
151
+ //--- Target ------------------------------------------------------//
152
+ function createGifTarget(address target, string memory name) external restricted() {
153
+ _createTarget(target, name, false, true);
208
154
  }
209
- // INSTANCE_SERVICE_ROLE
210
- function setTargetLocked(string memory targetName, bool locked)
211
- external
212
- restricted()
213
- {
214
- ShortString nameShort = ShortStrings.toShortString(targetName);
215
- address target = _targetAddressForName[nameShort];
216
-
217
- if (target == address(0)) {
218
- revert IAccess.ErrorIAccessTargetDoesNotExist(nameShort);
219
- }
220
155
 
221
- // TODO setLocked() for gif and custom targets but NEVER for core targets
222
- /*if(!_targetInfo[target].isCustom) {
223
- revert IAccess.ErrorIAccessSetLockedForNoncustomTarget(target);
224
- }*/
225
- // TODO isLocked is redundant but makes getTargetInfo() faster
226
- _targetInfo[target].isLocked = locked;
227
- _accessManager.setTargetClosed(target, locked);
156
+ function createTarget(address target, string memory name) external restricted() {
157
+ _createTarget(target, name, true, true);
228
158
  }
229
159
 
230
- // allowed combinations of roles and targets:
231
- //1) set core role for core target
232
- //2) set gif role for gif target
233
- //3) set custom role for gif target
234
- //4) set custom role for custom target
235
-
236
- // ADMIN_ROLE if used only during initialization, works with:
237
- // any roles for any targets
238
- // INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
239
- // core roles for core targets
240
- // gif roles for gif targets
241
- function setTargetFunctionRole(
242
- string memory targetName,
243
- bytes4[] calldata selectors,
244
- RoleId roleId
245
- )
246
- public
247
- virtual
248
- restricted()
249
- {
250
- ShortString nameShort = ShortStrings.toShortString(targetName);
251
- address target = _targetAddressForName[nameShort];
252
-
253
- if (target == address(0)) {
254
- revert IAccess.ErrorIAccessTargetDoesNotExist(nameShort);
255
- }
256
-
257
- if (!roleExists(roleId)) {
258
- revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
259
- }
260
-
261
- uint64 roleIdInt = RoleId.unwrap(roleId);
262
- _accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
263
- }
264
- // INSTANCE_OWNER_ROLE
265
- // custom role for gif target -> instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
266
- // custom role for custom target
267
- function setTargetFunctionCustomRole(
268
- string memory targetName,
269
- bytes4[] calldata selectors,
270
- RoleId roleId
271
- ) public virtual restricted() {
272
- ShortString nameShort = ShortStrings.toShortString(targetName);
273
- address target = _targetAddressForName[nameShort];
160
+ function setTargetLocked(string memory targetName, bool locked) external restricted() {
161
+ address target = _targetForName[ShortStrings.toShortString(targetName)];
162
+
274
163
  if (target == address(0)) {
275
- revert IAccess.ErrorIAccessTargetDoesNotExist(nameShort);
276
- }
277
-
278
- // TODO set for gif and custom targets but NEVER for core targets
279
- /*if(!_targetInfo[target].isCustom) {
280
- revert IAccess.ErrorIAccessSetForNoncustomTarget(target);
281
- }*/
282
-
283
- if (!roleExists(roleId)) {
284
- revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
164
+ revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
285
165
  }
286
166
 
287
- // TODO set for gif and custom roles
288
- /*if(!_roleInfo[roleId].isCustom) {
289
- revert IAccess.ErrorIAccessSetNoncustomRole(roleId);
290
- }*/
291
-
292
- uint64 roleIdInt = RoleId.unwrap(roleId);
293
- _accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
294
- }
295
-
296
- function isTargetLocked(address target) public view returns (bool locked) {
297
- return _accessManager.isTargetClosed(target);
167
+ _target[target].isLocked = locked;
168
+ _accessManager.setTargetClosed(target, locked);
298
169
  }
299
170
 
300
171
  function targetExists(address target) public view returns (bool exists) {
301
- return _targetInfo[target].createdAt.gtz();
302
- }
303
-
304
- function getTargetInfo(address target) public view returns (IAccess.TargetInfo memory) {
305
- return _targetInfo[target];
172
+ return _target[target].createdAt.gtz();
306
173
  }
307
174
 
308
175
  //--- internal view/pure functions --------------------------------------//
309
176
 
310
- function _createRole(RoleId roleId, string memory name, bool isCustom)
311
- internal
312
- {
177
+ function _createRole(RoleId roleId, string memory name, bool isCustom, bool validateParameters) internal {
178
+ if (validateParameters) {
179
+ _validateRoleParameters(roleId, name, isCustom);
180
+ }
181
+
313
182
  IAccess.RoleInfo memory role = IAccess.RoleInfo(
314
183
  ShortStrings.toShortString(name),
315
184
  isCustom,
316
- ADMIN_ROLE(),
185
+ false, // role un-locked,
317
186
  TimestampLib.blockTimestamp(),
318
187
  TimestampLib.blockTimestamp());
319
188
 
320
- _roleInfo[roleId] = role;
321
- _roleIdForName[role.name] = roleId;
322
- _roleIds.push(roleId);
189
+ _role[roleId] = role;
190
+ _roleForName[role.name] = roleId;
191
+ _roles.push(roleId);
323
192
  }
324
193
 
325
194
  function _validateRoleParameters(
@@ -331,11 +200,19 @@ contract InstanceAccessManager is
331
200
  view
332
201
  returns (IAccess.RoleInfo memory existingRole)
333
202
  {
334
- if(roleExists(roleId)) {
335
- revert IAccess.ErrorIAccessRoleIdAlreadyExists(roleId);
203
+ // check role id
204
+ uint64 roleIdInt = RoleId.unwrap(roleId);
205
+ if(roleIdInt == _accessManager.ADMIN_ROLE() || roleIdInt == _accessManager.PUBLIC_ROLE()) {
206
+ revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
207
+ }
208
+
209
+ // prevent changing isCustom for existing roles
210
+ existingRole = _role[roleId];
211
+
212
+ if (existingRole.createdAt.gtz() && isCustom != existingRole.isCustom) {
213
+ revert IAccess.ErrorIAccessRoleIsCustomIsImmutable(roleId, isCustom, existingRole.isCustom);
336
214
  }
337
215
 
338
- uint roleIdInt = roleId.toInt();
339
216
  if (isCustom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
340
217
  revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
341
218
  } else if (!isCustom && roleIdInt >= CUSTOM_ROLE_ID_MIN) {
@@ -348,31 +225,22 @@ contract InstanceAccessManager is
348
225
  revert IAccess.ErrorIAccessRoleNameEmpty(roleId);
349
226
  }
350
227
 
351
- if (_roleIdForName[nameShort].gtz()) {
352
- revert IAccess.ErrorIAccessRoleNameNotUnique(_roleIdForName[nameShort], nameShort);
228
+ if (_roleForName[nameShort] != RoleIdLib.zero() && _roleForName[nameShort] != roleId) {
229
+ revert IAccess.ErrorIAccessRoleNameNotUnique(_roleForName[nameShort], nameShort);
353
230
  }
354
231
  }
355
232
 
356
- function _revokeRole(RoleId roleId, address member)
357
- internal
358
- returns(bool revoked)
359
- {
360
- if (!roleExists(roleId)) {
361
- revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
233
+ function _createTarget(address target, string memory name, bool isCustom, bool validateParameters) internal {
234
+ if (validateParameters) {
235
+ _validateTargetParameters(target, name, isCustom);
362
236
  }
363
237
 
364
- revoked = EnumerableSet.remove(_roleMembers[roleId], member);
365
- if(revoked) {
366
- _accessManager.revokeRole(roleId.toInt(), member);
238
+ if (_target[target].createdAt.gtz()) {
239
+ revert IAccess.ErrorIAccessTargetExists(target, _target[target].name);
240
+ }
241
+ if (_targetForName[ShortStrings.toShortString(name)] != address(0)) {
242
+ revert IAccess.ErrorIAccessTargetNameExists(target, _targetForName[ShortStrings.toShortString(name)], ShortStrings.toShortString(name));
367
243
  }
368
- }
369
-
370
- function _getNextCustomRoleId() internal returns(RoleId) {
371
- return RoleIdLib.toRoleId(_idNext++);
372
- }
373
-
374
- function _createTarget(address target, string memory name, bool isCustom) internal {
375
- _validateTargetParameters(target, name, isCustom);
376
244
 
377
245
  IAccess.TargetInfo memory info = IAccess.TargetInfo(
378
246
  ShortStrings.toShortString(name),
@@ -381,27 +249,42 @@ contract InstanceAccessManager is
381
249
  TimestampLib.blockTimestamp(),
382
250
  TimestampLib.blockTimestamp());
383
251
 
384
- _targetInfo[target] = info;
385
- _targetAddressForName[info.name] = target;
252
+ _target[target] = info;
253
+ _targetForName[info.name] = target;
386
254
  _targets.push(target);
387
255
  }
388
256
 
389
257
  function _validateTargetParameters(address target, string memory name, bool isCustom) internal view {
390
- if (_targetInfo[target].createdAt.gtz()) {
391
- revert IAccess.ErrorIAccessTargetAlreadyExists(target, _targetInfo[target].name);
392
- }
258
+ // TODO: implement
259
+ }
393
260
 
394
- ShortString nameShort = ShortStrings.toShortString(name);
395
- if (ShortStrings.byteLength(nameShort) == 0) {
396
- revert IAccess.ErrorIAccessTargetNameEmpty(target);
261
+ function setTargetFunctionRole(
262
+ string memory targetName,
263
+ bytes4[] calldata selectors,
264
+ RoleId roleId
265
+ ) public virtual restricted() {
266
+ address target = _targetForName[ShortStrings.toShortString(targetName)];
267
+
268
+ if (target == address(0)) {
269
+ revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
270
+ }
271
+ if (! roleExists(roleId)) {
272
+ revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
397
273
  }
274
+ uint64 roleIdInt = RoleId.unwrap(roleId);
275
+ _accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
276
+ }
398
277
 
399
- if (_targetAddressForName[nameShort] != address(0)) {
400
- revert IAccess.ErrorIAccessTargetNameExists(
401
- target,
402
- _targetAddressForName[nameShort],
403
- nameShort);
278
+ function setTargetClosed(string memory targetName, bool closed) public restricted() {
279
+ address target = _targetForName[ShortStrings.toShortString(targetName)];
280
+ if (target == address(0)) {
281
+ revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
404
282
  }
283
+ _accessManager.setTargetClosed(target, closed);
284
+ }
285
+
286
+ function isTargetLocked(address target) public view returns (bool locked) {
287
+ return _accessManager.isTargetClosed(target);
405
288
  }
406
289
 
407
290
  function canCall(