@etherisc/gif-next 0.0.2-743affe-003 → 0.0.2-7878646-744

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 (233) hide show
  1. package/README.md +11 -0
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +90 -2
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +118 -6
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +80 -3
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -166
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -166
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -166
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +120 -6
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +118 -6
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  40. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +54 -286
  43. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
  44. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  45. package/artifacts/contracts/instance/Instance.sol/Instance.json +154 -399
  46. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +90 -2
  48. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/IService.sol/IService.json +80 -3
  53. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +90 -2
  55. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +1 -1
  58. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +90 -2
  60. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +2 -2
  68. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -13
  73. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -13
  75. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +2 -2
  82. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
  86. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +177 -40
  89. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +120 -16
  91. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +80 -3
  93. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +80 -3
  95. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +80 -3
  97. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -3
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +122 -18
  101. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +146 -42
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  105. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +40 -167
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  109. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +214 -10
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +66 -188
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +415 -31
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +496 -0
  117. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  118. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  119. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  120. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  121. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  122. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  123. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +80 -3
  125. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  127. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  128. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +121 -82
  130. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
  132. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  133. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  134. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  135. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +1 -1
  136. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +118 -6
  137. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  138. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  139. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
  140. package/artifacts/contracts/test/TestPool.sol/TestPool.json +120 -6
  141. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
  142. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +120 -8
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +120 -6
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  147. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestService.sol/TestService.json +126 -14
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  151. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  154. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  155. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  156. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  157. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  161. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  162. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  164. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  169. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  172. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  173. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  175. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  177. package/contracts/components/BaseComponent.sol +1 -1
  178. package/contracts/components/IBaseComponent.sol +1 -1
  179. package/contracts/components/IDistributionComponent.sol +1 -2
  180. package/contracts/components/IPoolComponent.sol +1 -2
  181. package/contracts/components/IProductComponent.sol +1 -3
  182. package/contracts/components/Product.sol +4 -4
  183. package/contracts/experiment/cloning/Cloner.sol +47 -0
  184. package/contracts/instance/IInstance.sol +5 -7
  185. package/contracts/instance/Instance.sol +4 -6
  186. package/contracts/instance/base/ServiceBase.sol +1 -0
  187. package/contracts/instance/module/component/ComponentModule.sol +1 -1
  188. package/contracts/instance/module/component/IComponent.sol +1 -1
  189. package/contracts/instance/module/policy/IPolicy.sol +1 -1
  190. package/contracts/instance/module/treasury/ITreasury.sol +1 -1
  191. package/contracts/instance/module/treasury/TokenHandler.sol +1 -1
  192. package/contracts/instance/module/treasury/TreasuryModule.sol +4 -4
  193. package/contracts/instance/service/ComponentOwnerService.sol +73 -30
  194. package/contracts/instance/service/ProductService.sol +7 -6
  195. package/contracts/registry/ChainNft.sol +2 -2
  196. package/contracts/registry/IChainNft.sol +1 -1
  197. package/contracts/registry/IRegistry.sol +7 -25
  198. package/contracts/registry/IRegistryService.sol +9 -3
  199. package/contracts/registry/Registry.sol +78 -157
  200. package/contracts/registry/RegistryService.sol +179 -121
  201. package/contracts/registry/RegistryServiceManager.sol +64 -0
  202. package/contracts/shared/ContractDeployerLib.sol +72 -0
  203. package/contracts/shared/ERC165.sol +1 -1
  204. package/contracts/shared/INftOwnable.sol +22 -0
  205. package/contracts/shared/IRegisterable.sol +3 -8
  206. package/contracts/shared/NftOwnable.sol +136 -0
  207. package/contracts/shared/ProxyManager.sol +16 -37
  208. package/contracts/shared/Registerable.sol +14 -42
  209. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  210. package/contracts/shared/Versionable.sol +1 -1
  211. package/contracts/test/TestFee.sol +2 -2
  212. package/contracts/types/Fee.sol +3 -3
  213. package/contracts/types/RoleId.sol +7 -0
  214. package/contracts/types/UFixed.sol +128 -12
  215. package/package.json +4 -3
  216. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  217. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  218. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  219. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  220. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  221. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  222. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  223. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  224. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.dbg.json +0 -4
  225. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.json +0 -344
  226. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  227. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  228. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  229. package/contracts/instance/module/access/Access.sol +0 -149
  230. package/contracts/instance/module/access/IAccess.sol +0 -53
  231. package/contracts/registry/IRegistryLinked.sol +0 -8
  232. package/contracts/registry/RegistryInstaller.sol +0 -100
  233. package/contracts/shared/IOwnable.sol +0 -6
@@ -1,149 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // role admin handling of oz doesn't fit nft ownability
5
- // import {AccessControlEnumerable} from "@openzeppelin/contracts/access/AccessControlEnumerable.sol";
6
- import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
7
-
8
- import {RoleId, RoleIdLib} from "../../../types/RoleId.sol";
9
- import {DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../../../types/RoleId.sol";
10
- import {DISTRIBUTION_OWNER_ROLE_NAME, ORACLE_OWNER_ROLE_NAME, POOL_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE_NAME} from "../../../types/RoleId.sol";
11
- import {IAccessModule} from "./IAccess.sol";
12
-
13
- abstract contract AccessModule is IAccessModule {
14
-
15
- using EnumerableSet for EnumerableSet.AddressSet;
16
-
17
- mapping(RoleId role => RoleInfo info) private _info;
18
- RoleId[] private _roles;
19
-
20
- mapping(RoleId role => mapping(address member => bool isMember))
21
- private _isRoleMember;
22
- mapping(RoleId role => EnumerableSet.AddressSet members) private _roleMembers;
23
-
24
- modifier onlyAccessOwner() {
25
- require(
26
- msg.sender == this.getOwner(),
27
- "ERROR:ACS-001:NOT_OWNER");
28
- _;
29
- }
30
-
31
- modifier onlyExistingRole(RoleId role) {
32
- require(
33
- _info[role].id == role,
34
- "ERROR:ACS-002:ROLE_NOT_EXISTING");
35
- _;
36
- }
37
-
38
- constructor() {
39
- _createRole(DISTRIBUTION_OWNER_ROLE(), DISTRIBUTION_OWNER_ROLE_NAME());
40
- _createRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME());
41
- _createRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME());
42
- _createRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME());
43
- }
44
-
45
- function createRole(
46
- string memory roleName
47
- ) public override onlyAccessOwner returns (RoleId role) {
48
- role = RoleIdLib.toRoleId(roleName);
49
- require(
50
- !roleExists(role),
51
- "ERROR:ACS-010:ROLE_ALREADY_EXISTS");
52
-
53
- _createRole(role, roleName);
54
- }
55
-
56
- function setRoleState(RoleId role, bool active) external override onlyExistingRole(role) onlyAccessOwner {
57
- RoleInfo memory info = _info[role];
58
- info.isActive = active;
59
- _setRoleInfo(info);
60
-
61
- emit LogAccessRoleStateSet(role, active);
62
- }
63
-
64
- function grantRole(
65
- RoleId role,
66
- address member
67
- ) external override onlyExistingRole(role) onlyAccessOwner {
68
- require(_info[role].isActive, "ERROR:ACS-040:ROLE_NOT_ACTIVE");
69
-
70
- _isRoleMember[role][member] = true;
71
- _roleMembers[role].add(member);
72
-
73
- emit LogAccessRoleGranted(role, member, _isRoleMember[role][member]);
74
- }
75
-
76
- function revokeRole(
77
- RoleId role,
78
- address member
79
- ) external override onlyExistingRole(role) onlyAccessOwner {
80
- delete _isRoleMember[role][member];
81
- _roleMembers[role].remove(member);
82
-
83
- emit LogAccessRoleGranted(role, member, false);
84
- }
85
-
86
- function roleExists(RoleId role) public view virtual override returns (bool) {
87
- return _info[role].id == role;
88
- }
89
-
90
- function hasRole(
91
- RoleId role,
92
- address member
93
- ) public view virtual override returns (bool) {
94
- return _isRoleMember[role][member];
95
- }
96
-
97
- function getRoleId(string memory roleName) external pure override returns (RoleId role) {
98
- return RoleIdLib.toRoleId(roleName);
99
- }
100
-
101
- function getRoleInfo(
102
- RoleId role
103
- ) external view override returns (RoleInfo memory info) {
104
- return _info[role];
105
- }
106
-
107
- function getRole(
108
- uint256 idx
109
- ) external view override returns (RoleId role) {
110
- return _roles[idx];
111
- }
112
-
113
- function getRoleCount() external view override returns (uint256 roles) {
114
- return _roles.length;
115
- }
116
-
117
- function getRoleMemberCount(
118
- RoleId role
119
- ) public view override returns (uint256 roleMembers) {
120
- return _roleMembers[role].length();
121
- }
122
-
123
- function getRoleMember(
124
- RoleId role,
125
- uint256 idx
126
- ) public view override returns (address roleMembers) {
127
- return _roleMembers[role].at(idx);
128
- }
129
-
130
- function _createRole(
131
- RoleId role,
132
- string memory roleName
133
- ) internal {
134
- RoleInfo memory info = RoleInfo(role, roleName, true);
135
- _setRoleInfo(info);
136
-
137
- emit LogAccessRoleCreated(role, roleName);
138
- }
139
-
140
- function _setRoleInfo(
141
- RoleInfo memory info
142
- ) internal {
143
- RoleId role = info.id;
144
- _info[role] = info;
145
- if(!roleExists(role)) {
146
- _roles.push(role);
147
- }
148
- }
149
- }
@@ -1,53 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {RoleId} from "../../../types/RoleId.sol";
5
-
6
- interface IAccess {
7
- struct RoleInfo {
8
- RoleId id;
9
- string name;
10
- bool isActive;
11
- }
12
- }
13
-
14
- interface IAccessModule is
15
- IAccess
16
- {
17
- event LogAccessRoleCreated(RoleId role, string roleName);
18
- event LogAccessRoleStateSet(RoleId role, bool active);
19
- event LogAccessRoleGranted(RoleId role, address member, bool isMember);
20
-
21
- function createRole(string memory roleName) external returns (RoleId role);
22
-
23
- function setRoleState(RoleId role, bool active) external;
24
-
25
- function grantRole(RoleId role, address member) external;
26
-
27
- function revokeRole(RoleId role, address member) external;
28
-
29
- function roleExists(RoleId role) external view returns (bool);
30
-
31
- function hasRole(RoleId role, address member) external view returns (bool);
32
-
33
- function getRoleCount() external view returns (uint256 roles);
34
-
35
- function getRole(uint256 idx) external view returns (RoleId role);
36
-
37
- function getRoleId(string memory roleName) external pure returns (RoleId role);
38
-
39
- function getRoleInfo(
40
- RoleId role
41
- ) external view returns (RoleInfo memory info);
42
-
43
- function getRoleMemberCount(
44
- RoleId role
45
- ) external view returns (uint256 roleMembers);
46
-
47
- function getRoleMember(
48
- RoleId role,
49
- uint256 idx
50
- ) external view returns (address roleMember);
51
-
52
- function getOwner() external view returns (address owner);
53
- }
@@ -1,8 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
-
6
- interface IRegistryLinked {
7
- function getRegistry() external view returns (IRegistry registry);
8
- }
@@ -1,100 +0,0 @@
1
- // SPDX-License-Identifier: UNLICENSED
2
- pragma solidity ^0.8.20;
3
-
4
- import {IERC721Receiver} from "@openzeppelin5/contracts/token/ERC721/IERC721Receiver.sol";
5
- import {Ownable} from "@openzeppelin5/contracts/access/Ownable.sol";
6
-
7
- import {IChainNft} from "./IChainNft.sol";
8
- import {IRegistry} from "./IRegistry.sol";
9
- import {IVersionable} from "../shared/IVersionable.sol";
10
- import {NftId} from "../types/NftId.sol";
11
- import {ProxyManager} from "../shared/ProxyManager.sol";
12
- import {Registry} from "./Registry.sol";
13
- import {RegistryService} from "./RegistryService.sol";
14
-
15
-
16
- contract RegistryInstaller is
17
- Ownable,
18
- IERC721Receiver
19
- {
20
- error ErrorProxyManagerWithZeroAddress();
21
- error ErrorRegistryServiceWithZeroAddress();
22
- error ErrorProxyManagerUnexpectedOwner(address expectedOwner, address actualOwner);
23
- error ErrorInstallerNotProxyManagerOwner(address installer, address actualOwner);
24
-
25
- ProxyManager private _proxyManager;
26
- address private _implementation;
27
- RegistryService private _registryService;
28
- IRegistry private _registry;
29
- IChainNft private _chainNft;
30
-
31
- /// @dev initializes proxy manager with registry service implementation and deploys registry
32
- constructor(
33
- address proxyManagerAddress,
34
- address registryServiceImplementationAddress
35
- )
36
- Ownable(msg.sender)
37
- {
38
- if (proxyManagerAddress == address(0)) { revert ErrorProxyManagerWithZeroAddress(); }
39
- if (registryServiceImplementationAddress == address(0)) { revert ErrorRegistryServiceWithZeroAddress(); }
40
-
41
- _proxyManager = ProxyManager(proxyManagerAddress);
42
- // check proxy manager owner is owner of installer
43
- if (_proxyManager.owner() != owner()) { revert ErrorProxyManagerUnexpectedOwner(_proxyManager.owner(), owner()); }
44
-
45
- _implementation = registryServiceImplementationAddress;
46
- }
47
-
48
- function installRegistryServiceWithRegistry()
49
- external
50
- onlyOwner()
51
- {
52
- // check that this contract is now proxy manager owner
53
- if (_proxyManager.owner() != address(this)) { revert ErrorInstallerNotProxyManagerOwner(address(this), _proxyManager.owner()); }
54
-
55
- IVersionable versionable = _proxyManager.deploy(_implementation, type(Registry).creationCode);
56
- _registryService = RegistryService(address(versionable));
57
- _registry = _registryService.getRegistry();
58
- _chainNft = _registry.getChainNft();
59
-
60
- // transfer registry ownership back to owner
61
- NftId registryNftId = _registry.getNftId(address(_registry));
62
- _chainNft.safeTransferFrom(
63
- address(this),
64
- owner(),
65
- registryNftId.toInt(),
66
- "");
67
-
68
- // transfer proxy manager back to owner
69
- _proxyManager.transferOwnership(owner());
70
- }
71
-
72
- function getRegistryService()
73
- external
74
- view
75
- returns (RegistryService registryService)
76
- {
77
- return _registryService;
78
- }
79
-
80
- function getRegistry()
81
- external
82
- view
83
- returns (RegistryService registryService)
84
- {
85
- return _registryService;
86
- }
87
-
88
- //--- IERC721Receiver -----------------------------------//
89
- function onERC721Received(
90
- address operator,
91
- address from,
92
- uint256 tokenId,
93
- bytes calldata data
94
- )
95
- external
96
- returns (bytes4)
97
- {
98
- return IERC721Receiver.onERC721Received.selector;
99
- }
100
- }
@@ -1,6 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- interface IOwnable {
5
- function getOwner() external view returns (address owner);
6
- }