@etherisc/gif-next 0.0.2-d250c72 → 0.0.2-e5ea33d

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. package/README.md +24 -0
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +1 -1
  4. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +2 -2
  5. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  8. package/artifacts/contracts/components/Pool.sol/Pool.json +2 -2
  9. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  10. package/artifacts/contracts/components/Product.sol/Product.json +2 -2
  11. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  12. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  13. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  14. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  15. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  16. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  17. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  19. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  27. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  29. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  30. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  31. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  32. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +1 -1
  33. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +1 -1
  34. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +1 -1
  35. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +1 -1
  36. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +1 -1
  37. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  38. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +1 -1
  39. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +2 -2
  40. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +1 -1
  41. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +1 -1
  42. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  43. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +1 -1
  44. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +1 -1
  45. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
  46. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  47. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  48. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  49. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  50. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  51. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +1 -1
  52. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +1 -1
  54. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +1 -1
  55. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +2 -2
  56. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  57. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  58. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  59. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +1 -1
  60. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +1 -1
  61. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  62. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +1 -1
  63. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +1 -1
  64. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  65. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  66. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +1 -1
  67. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +2 -2
  68. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  69. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
  70. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  71. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  72. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  73. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  74. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
  75. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +174 -0
  76. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +4 -0
  77. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +453 -0
  78. package/contracts/components/Component.sol +16 -18
  79. package/contracts/components/IPool.sol +3 -3
  80. package/contracts/components/IProduct.sol +3 -6
  81. package/contracts/components/Pool.sol +6 -13
  82. package/contracts/components/Product.sol +10 -21
  83. package/contracts/experiment/errors/Require.sol +10 -5
  84. package/contracts/experiment/errors/Revert.sol +13 -8
  85. package/contracts/experiment/inheritance/A.sol +8 -11
  86. package/contracts/experiment/inheritance/B.sol +10 -5
  87. package/contracts/experiment/inheritance/C.sol +11 -5
  88. package/contracts/experiment/inheritance/IA.sol +2 -7
  89. package/contracts/experiment/inheritance/IB.sol +3 -2
  90. package/contracts/experiment/inheritance/IC.sol +4 -3
  91. package/contracts/experiment/types/TypeA.sol +14 -9
  92. package/contracts/experiment/types/TypeB.sol +14 -9
  93. package/contracts/instance/IInstance.sol +1 -3
  94. package/contracts/instance/Instance.sol +13 -13
  95. package/contracts/instance/access/Access.sol +63 -116
  96. package/contracts/instance/access/IAccess.sol +28 -48
  97. package/contracts/instance/component/ComponentModule.sol +63 -98
  98. package/contracts/instance/component/IComponent.sol +30 -52
  99. package/contracts/instance/policy/IPolicy.sol +9 -24
  100. package/contracts/instance/policy/PolicyModule.sol +19 -35
  101. package/contracts/instance/pool/IPoolModule.sol +7 -19
  102. package/contracts/instance/pool/PoolModule.sol +22 -35
  103. package/contracts/instance/product/IProductService.sol +5 -15
  104. package/contracts/instance/product/ProductService.sol +43 -39
  105. package/contracts/registry/ChainNft.sol +23 -61
  106. package/contracts/registry/IChainNft.sol +10 -7
  107. package/contracts/registry/IRegistry.sol +46 -36
  108. package/contracts/registry/Registry.sol +80 -53
  109. package/contracts/types/Blocknumber.sol +118 -0
  110. package/contracts/types/ChainId.sol +24 -10
  111. package/contracts/types/NftId.sol +29 -13
  112. package/contracts/types/Timestamp.sol +102 -0
  113. package/contracts/types/UFixed.sol +205 -0
  114. package/package.json +9 -4
@@ -2,7 +2,6 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  contract Require {
5
-
6
5
  error AsmallerThanB_S();
7
6
  error AsmallerThanB_M(uint a);
8
7
  error AsmallerThanB_L(uint a, uint b);
@@ -13,21 +12,27 @@ contract Require {
13
12
  _b = 42;
14
13
  }
15
14
 
16
- function isAlargerThanBRequire_S(uint a) external view returns(bool isLarger) {
15
+ function isAlargerThanBRequire_S(
16
+ uint a
17
+ ) external view returns (bool isLarger) {
17
18
  require(a > _b, "ERROR:ABC-001");
18
19
 
19
20
  return true;
20
21
  }
21
22
 
22
- function isAlargerThanBRequire_M(uint a) external view returns(bool isLarger) {
23
+ function isAlargerThanBRequire_M(
24
+ uint a
25
+ ) external view returns (bool isLarger) {
23
26
  require(a > _b, "ERROR:ABC-002:A_IS_SMALLER");
24
27
 
25
28
  return true;
26
29
  }
27
30
 
28
- function isAlargerThanBRequire_L(uint a) external view returns(bool isLarger) {
31
+ function isAlargerThanBRequire_L(
32
+ uint a
33
+ ) external view returns (bool isLarger) {
29
34
  require(a > _b, "ERROR:ABC-003:A_IS_SMALLER_THAN_B");
30
35
 
31
36
  return true;
32
37
  }
33
- }
38
+ }
@@ -2,7 +2,6 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  contract Revert {
5
-
6
5
  error AsmallerThanB_S();
7
6
  error AsmallerThanB_M(uint a);
8
7
  error AsmallerThanB_L(uint a, uint b);
@@ -13,27 +12,33 @@ contract Revert {
13
12
  _b = 42;
14
13
  }
15
14
 
16
- function isAlargerThanBRevert_S(uint a) external view returns(bool isLarger) {
17
- if(a <= _b) {
15
+ function isAlargerThanBRevert_S(
16
+ uint a
17
+ ) external view returns (bool isLarger) {
18
+ if (a <= _b) {
18
19
  revert AsmallerThanB_S();
19
20
  }
20
21
 
21
22
  return true;
22
23
  }
23
24
 
24
- function isAlargerThanBRevert_M(uint a) external view returns(bool isLarger) {
25
- if(a <= _b) {
25
+ function isAlargerThanBRevert_M(
26
+ uint a
27
+ ) external view returns (bool isLarger) {
28
+ if (a <= _b) {
26
29
  revert AsmallerThanB_M(a);
27
30
  }
28
31
 
29
32
  return true;
30
33
  }
31
34
 
32
- function isAlargerThanBRevert_L(uint a) external view returns(bool isLarger) {
33
- if(a <= _b) {
35
+ function isAlargerThanBRevert_L(
36
+ uint a
37
+ ) external view returns (bool isLarger) {
38
+ if (a <= _b) {
34
39
  revert AsmallerThanB_L(a, _b);
35
40
  }
36
41
 
37
42
  return true;
38
43
  }
39
- }
44
+ }
@@ -35,22 +35,19 @@ a.setC(20);
35
35
  */
36
36
 
37
37
  contract AShared is ISharedA {
38
-
39
38
  uint256 private _x;
40
39
 
41
40
  constructor() {
42
41
  _x = 42;
43
42
  }
44
43
 
45
- function getA() external view override returns(uint256) { return _x; }
46
- function setA(uint256 newA) external override { _x = newA; }
47
- }
48
-
49
- contract A is
50
- AShared,
51
- B,
52
- C,
53
- IA
54
- {
44
+ function getA() external view override returns (uint256) {
45
+ return _x;
46
+ }
55
47
 
48
+ function setA(uint256 newA) external override {
49
+ _x = newA;
50
+ }
56
51
  }
52
+
53
+ contract A is AShared, B, C, IA {}
@@ -5,7 +5,6 @@ import {ISharedA} from "./IA.sol";
5
5
  import {IB} from "./IB.sol";
6
6
 
7
7
  abstract contract B is ISharedA, IB {
8
-
9
8
  // names of private variables can be re-used in inheritance
10
9
  uint256 private _x;
11
10
 
@@ -14,10 +13,16 @@ abstract contract B is ISharedA, IB {
14
13
  }
15
14
 
16
15
  // access own state
17
- function getB() external view override returns(uint256) { return _x; }
18
- function setB(uint256 newB) external override { _x = newB; }
16
+ function getB() external view override returns (uint256) {
17
+ return _x;
18
+ }
19
19
 
20
- // access state from parent contract A
21
- function getAfromB() external view override returns(uint256) { return this.getA(); }
20
+ function setB(uint256 newB) external override {
21
+ _x = newB;
22
+ }
22
23
 
24
+ // access state from parent contract A
25
+ function getAfromB() external view override returns (uint256) {
26
+ return this.getA();
27
+ }
23
28
  }
@@ -6,7 +6,6 @@ import {IB} from "./IB.sol";
6
6
  import {IC} from "./IC.sol";
7
7
 
8
8
  abstract contract C is ISharedA, IC {
9
-
10
9
  uint256 private _x;
11
10
 
12
11
  constructor() {
@@ -14,14 +13,21 @@ abstract contract C is ISharedA, IC {
14
13
  }
15
14
 
16
15
  // access own state
17
- function getC() external view override returns(uint256) { return _x; }
18
- function setC(uint256 newC) external override { _x = newC; }
16
+ function getC() external view override returns (uint256) {
17
+ return _x;
18
+ }
19
+
20
+ function setC(uint256 newC) external override {
21
+ _x = newC;
22
+ }
19
23
 
20
24
  // access state from parent contract A
21
- function getAfromC() external view override returns(uint256) { return this.getA(); }
25
+ function getAfromC() external view override returns (uint256) {
26
+ return this.getA();
27
+ }
22
28
 
23
29
  // access state from other module B
24
- function getBfromC() external view override returns(uint256) {
30
+ function getBfromC() external view override returns (uint256) {
25
31
  IB b = IB(address(this));
26
32
  return b.getB();
27
33
  }
@@ -5,14 +5,9 @@ import {IB} from "./IB.sol";
5
5
  import {IC} from "./IC.sol";
6
6
 
7
7
  interface ISharedA {
8
+ function getA() external view returns (uint256);
8
9
 
9
- function getA() external view returns(uint256);
10
10
  function setA(uint256 newA) external;
11
11
  }
12
12
 
13
- interface IA is
14
- ISharedA,
15
- IB,
16
- IC
17
- {
18
- }
13
+ interface IA is ISharedA, IB, IC {}
@@ -2,8 +2,9 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  interface IB {
5
+ function getAfromB() external view returns (uint256);
6
+
7
+ function getB() external view returns (uint256);
5
8
 
6
- function getAfromB() external view returns(uint256);
7
- function getB() external view returns(uint256);
8
9
  function setB(uint256 newA) external;
9
10
  }
@@ -2,10 +2,11 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  interface IC {
5
+ function getAfromC() external view returns (uint256);
5
6
 
6
- function getAfromC() external view returns(uint256);
7
- function getBfromC() external view returns(uint256);
7
+ function getBfromC() external view returns (uint256);
8
+
9
+ function getC() external view returns (uint256);
8
10
 
9
- function getC() external view returns(uint256);
10
11
  function setC(uint256 newA) external;
11
12
  }
@@ -23,20 +23,25 @@ a.toInt() == x.toInt() // -> no error
23
23
  type TypeA is uint248;
24
24
 
25
25
  // type bindings
26
- using {
27
- eqTypeA as ==,
28
- neTypeA as !=,
29
- TypeALib.toInt
30
- } for TypeA global;
26
+ using {eqTypeA as ==, neTypeA as !=, TypeALib.toInt} for TypeA global;
31
27
 
32
28
  // general pure free functions
33
- function toTypeA(uint256 typeA) pure returns(TypeA) { return TypeA.wrap(uint248(typeA)); }
29
+ function toTypeA(uint256 typeA) pure returns (TypeA) {
30
+ return TypeA.wrap(uint248(typeA));
31
+ }
34
32
 
35
33
  // pure free functions for operators
36
- function eqTypeA(TypeA a, TypeA b) pure returns(bool isSame) { return TypeA.unwrap(a) == TypeA.unwrap(b); }
37
- function neTypeA(TypeA a, TypeA b) pure returns(bool isDifferent) { return TypeA.unwrap(a) != TypeA.unwrap(b); }
34
+ function eqTypeA(TypeA a, TypeA b) pure returns (bool isSame) {
35
+ return TypeA.unwrap(a) == TypeA.unwrap(b);
36
+ }
37
+
38
+ function neTypeA(TypeA a, TypeA b) pure returns (bool isDifferent) {
39
+ return TypeA.unwrap(a) != TypeA.unwrap(b);
40
+ }
38
41
 
39
42
  // library functions that operate on user defined type
40
43
  library TypeALib {
41
- function toInt(TypeA typeA) internal pure returns(uint256) { return uint256(TypeA.unwrap(typeA)); }
44
+ function toInt(TypeA typeA) internal pure returns (uint256) {
45
+ return uint256(TypeA.unwrap(typeA));
46
+ }
42
47
  }
@@ -5,20 +5,25 @@ pragma solidity ^0.8.19;
5
5
  type TypeB is uint248;
6
6
 
7
7
  // type bindings
8
- using {
9
- eqTypeB as ==,
10
- addTypeB as +,
11
- TypeBLib.toInt
12
- } for TypeB global;
8
+ using {eqTypeB as ==, addTypeB as +, TypeBLib.toInt} for TypeB global;
13
9
 
14
10
  // general pure free functions
15
- function toTypeB(uint256 x) pure returns(TypeB) { return TypeB.wrap(uint248(x)); }
11
+ function toTypeB(uint256 x) pure returns (TypeB) {
12
+ return TypeB.wrap(uint248(x));
13
+ }
16
14
 
17
15
  // pure free functions for operators
18
- function eqTypeB(TypeB a, TypeB b) pure returns(bool isSame) { return TypeB.unwrap(a) == TypeB.unwrap(b); }
19
- function addTypeB(TypeB a, TypeB b) pure returns(TypeB sum) { return TypeB.wrap(TypeB.unwrap(a) + TypeB.unwrap(b)); }
16
+ function eqTypeB(TypeB a, TypeB b) pure returns (bool isSame) {
17
+ return TypeB.unwrap(a) == TypeB.unwrap(b);
18
+ }
19
+
20
+ function addTypeB(TypeB a, TypeB b) pure returns (TypeB sum) {
21
+ return TypeB.wrap(TypeB.unwrap(a) + TypeB.unwrap(b));
22
+ }
20
23
 
21
24
  // library functions that operate on user defined type
22
25
  library TypeBLib {
23
- function toInt(TypeB b) internal pure returns(uint256) { return uint256(TypeB.unwrap(b)); }
26
+ function toInt(TypeB b) internal pure returns (uint256) {
27
+ return uint256(TypeB.unwrap(b));
28
+ }
24
29
  }
@@ -8,7 +8,6 @@ import {IProductModule} from "./product/IProductService.sol";
8
8
  import {IPolicyModule} from "./policy/IPolicy.sol";
9
9
  import {IPoolModule} from "./pool/IPoolModule.sol";
10
10
 
11
-
12
11
  interface IInstance is
13
12
  IRegisterable,
14
13
  IAccessModule,
@@ -16,5 +15,4 @@ interface IInstance is
16
15
  IPoolModule,
17
16
  IComponentModule,
18
17
  IProductModule
19
- { }
20
-
18
+ {}
@@ -16,13 +16,12 @@ import {NftId, toNftId} from "../types/NftId.sol";
16
16
  contract Instance is
17
17
  Registerable,
18
18
  AccessModule,
19
- ComponentModule,
20
- PolicyModule,
19
+ ComponentModule,
20
+ PolicyModule,
21
21
  PoolModule,
22
- ProductModule,
22
+ ProductModule,
23
23
  IInstance
24
24
  {
25
-
26
25
  constructor(
27
26
  address registry,
28
27
  address componentOwnerService,
@@ -34,31 +33,32 @@ contract Instance is
34
33
  PolicyModule(productService)
35
34
  ProductModule(productService)
36
35
  PoolModule(productService)
37
- { }
36
+ {}
38
37
 
39
38
  // from registerable
40
- function register() external override returns(NftId nftId) {
41
- require(address(_registry) != address(0), "ERROR:PRD-001:REGISTRY_ZERO");
39
+ function register() external override returns (NftId nftId) {
40
+ require(
41
+ address(_registry) != address(0),
42
+ "ERROR:PRD-001:REGISTRY_ZERO"
43
+ );
42
44
  return _registry.register(address(this));
43
45
  }
44
46
 
45
47
  // from registerable
46
- function getParentNftId() public view override returns(NftId) {
48
+ function getParentNftId() public view override returns (NftId) {
47
49
  // TODO add self registry and exchange 0 for_registry.getNftId();
48
50
  // define parent tree for all registerables
49
- // eg 0 <- chain(mainnet) <- global registry <- chain registry <- instance <- component <- policy/bundle
51
+ // eg 0 <- chain(mainnet) <- global registry <- chain registry <- instance <- component <- policy/bundle
50
52
  return toNftId(0);
51
53
  }
52
54
 
53
55
  // from registerable
54
- function getType() external view override returns(uint256 objectType) {
56
+ function getType() external view override returns (uint256 objectType) {
55
57
  return _registry.INSTANCE();
56
58
  }
57
59
 
58
60
  // from registerable
59
- function getData() external view override returns(bytes memory data) {
61
+ function getData() external view override returns (bytes memory data) {
60
62
  return bytes(abi.encode(0));
61
63
  }
62
-
63
-
64
64
  }
@@ -7,26 +7,24 @@ import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
7
7
 
8
8
  import {IAccessModule} from "./IAccess.sol";
9
9
 
10
-
11
- abstract contract AccessModule is
12
- IAccessModule
13
- {
14
- string constant public PRODUCT_OWNER = "ProductOwner";
15
- string constant public ORACLE_OWNER = "OracleOwner";
16
- string constant public POOL_OWNER = "PoolOwner";
10
+ abstract contract AccessModule is IAccessModule {
11
+ string public constant PRODUCT_OWNER = "ProductOwner";
12
+ string public constant ORACLE_OWNER = "OracleOwner";
13
+ string public constant POOL_OWNER = "PoolOwner";
17
14
 
18
15
  using EnumerableSet for EnumerableSet.AddressSet;
19
16
 
20
17
  event LogAccessRoleGranted(bytes32 role, address member, bool isMember);
21
18
 
22
19
  mapping(bytes32 role => RoleInfo info) private _info;
23
- bytes32 [] private _roles;
20
+ bytes32[] private _roles;
24
21
 
25
22
  bytes32 private immutable _productOwnerRole;
26
23
  bytes32 private immutable _oracleOwnerRole;
27
24
  bytes32 private immutable _poolOwnerRole;
28
25
 
29
- mapping(bytes32 role => mapping(address member => bool isMember)) private _isRoleMember;
26
+ mapping(bytes32 role => mapping(address member => bool isMember))
27
+ private _isRoleMember;
30
28
  mapping(bytes32 role => EnumerableSet.AddressSet) private _roleMembers;
31
29
 
32
30
  modifier onlyOwner() {
@@ -40,70 +38,54 @@ abstract contract AccessModule is
40
38
  _poolOwnerRole = _createRole(POOL_OWNER);
41
39
  }
42
40
 
43
- function PRODUCT_OWNER_ROLE() public view override returns(bytes32 role) { return _productOwnerRole; }
44
- function ORACLE_OWNER_ROLE() public view override returns(bytes32 role) { return _oracleOwnerRole; }
45
- function POOL_OWNER_ROLE() public view override returns(bytes32 role) { return _poolOwnerRole; }
41
+ function PRODUCT_OWNER_ROLE() public view override returns (bytes32 role) {
42
+ return _productOwnerRole;
43
+ }
44
+
45
+ function ORACLE_OWNER_ROLE() public view override returns (bytes32 role) {
46
+ return _oracleOwnerRole;
47
+ }
46
48
 
49
+ function POOL_OWNER_ROLE() public view override returns (bytes32 role) {
50
+ return _poolOwnerRole;
51
+ }
47
52
 
48
- function createRole(string memory roleName)
49
- external
50
- override
51
- onlyOwner
52
- returns(bytes32 role)
53
- {
53
+ function createRole(
54
+ string memory roleName
55
+ ) external override onlyOwner returns (bytes32 role) {
54
56
  return _createRole(roleName);
55
57
  }
56
58
 
57
- function _createRole(string memory roleName)
58
- internal
59
- returns(bytes32 role)
60
- {
61
- RoleInfo memory info = RoleInfo(
62
- 0,
63
- roleName,
64
- true
65
- );
59
+ function _createRole(
60
+ string memory roleName
61
+ ) internal returns (bytes32 role) {
62
+ RoleInfo memory info = RoleInfo(0, roleName, true);
66
63
 
67
64
  role = _setRoleInfo(info);
68
-
69
-
70
65
  }
71
66
 
72
67
  // TODO move to module
73
- function disableRole(bytes32 role)
74
- external
75
- override
76
- onlyOwner
77
- {
68
+ function disableRole(bytes32 role) external override onlyOwner {
78
69
  RoleInfo memory info = _info[role];
79
70
  require(info.id == role, "ERROR:AOS-001:ROLE_DOES_NOT_EXIST");
80
71
 
81
72
  info.isActive = false;
82
73
  _setRoleInfo(info);
83
-
84
-
85
- }
74
+ }
86
75
 
87
76
  // TODO move to module
88
- function enableRole(bytes32 role)
89
- external
90
- override
91
- onlyOwner
92
- {
77
+ function enableRole(bytes32 role) external override onlyOwner {
93
78
  RoleInfo memory info = _info[role];
94
79
  require(info.id == role, "ERROR:AOS-002:ROLE_DOES_NOT_EXIST");
95
80
 
96
81
  info.isActive = true;
97
82
  _setRoleInfo(info);
83
+ }
98
84
 
99
-
100
- }
101
-
102
- function grantRole(bytes32 role, address member)
103
- external
104
- override
105
- onlyOwner
106
- {
85
+ function grantRole(
86
+ bytes32 role,
87
+ address member
88
+ ) external override onlyOwner {
107
89
  require(_info[role].id == role, "ERROR:ACM-010:ROLE_NOT_EXISTING");
108
90
  require(_info[role].isActive, "ERROR:ACM-011:ROLE_NOT_ACTIVE");
109
91
 
@@ -113,106 +95,71 @@ abstract contract AccessModule is
113
95
  emit LogAccessRoleGranted(role, member, _isRoleMember[role][member]);
114
96
  }
115
97
 
116
-
117
- function revokeRole(bytes32 role, address member)
118
- external
119
- override
120
- onlyOwner
121
- {
98
+ function revokeRole(
99
+ bytes32 role,
100
+ address member
101
+ ) external override onlyOwner {
122
102
  require(_info[role].id == role, "ERROR:ACM-020:ROLE_NOT_EXISTING");
123
103
 
124
104
  _isRoleMember[role][member] = false;
125
105
  _roleMembers[role].remove(member);
126
-
127
-
128
106
  }
129
107
 
130
-
131
- function hasRole(bytes32 role, address member)
132
- external
133
- view
134
- override
135
- returns(bool)
136
- {
108
+ function hasRole(
109
+ bytes32 role,
110
+ address member
111
+ ) external view override returns (bool) {
137
112
  return _isRoleMember[role][member];
138
113
  }
139
114
 
140
-
141
- function getRoleInfo(bytes32 role)
142
- external
143
- override
144
- view
145
- returns(RoleInfo memory info)
146
- {
115
+ function getRoleInfo(
116
+ bytes32 role
117
+ ) external view override returns (RoleInfo memory info) {
147
118
  return _info[role];
148
119
  }
149
120
 
150
-
151
- function getRole(uint256 idx)
152
- external
153
- override
154
- view
155
- returns(bytes32 role)
156
- {
121
+ function getRole(
122
+ uint256 idx
123
+ ) external view override returns (bytes32 role) {
157
124
  return _roles[idx];
158
125
  }
159
126
 
160
-
161
- function getRoleCount()
162
- external
163
- override
164
- view
165
- returns(uint256 roles)
166
- {
127
+ function getRoleCount() external view override returns (uint256 roles) {
167
128
  return _roles.length;
168
- }
169
-
170
- function getRoleMemberCount(bytes32 role)
171
- public
172
- override
173
- view
174
- returns(uint256 roleMembers)
175
- {
129
+ }
130
+
131
+ function getRoleMemberCount(
132
+ bytes32 role
133
+ ) public view override returns (uint256 roleMembers) {
176
134
  return _roleMembers[role].length();
177
135
  }
178
136
 
179
- function getRoleMember(bytes32 role, uint256 idx)
180
- public
181
- override
182
- view
183
- returns(address roleMembers)
184
- {
137
+ function getRoleMember(
138
+ bytes32 role,
139
+ uint256 idx
140
+ ) public view override returns (address roleMembers) {
185
141
  return _roleMembers[role].at(idx);
186
142
  }
187
143
 
188
- function getRoleForName(string memory roleName)
189
- public
190
- override
191
- pure
192
- returns(bytes32 role)
193
- {
144
+ function getRoleForName(
145
+ string memory roleName
146
+ ) public pure override returns (bytes32 role) {
194
147
  return keccak256(abi.encode(roleName));
195
148
  }
196
149
 
197
-
198
- function _setRoleInfo(RoleInfo memory info)
199
- internal
200
- returns(bytes32 role)
201
- {
150
+ function _setRoleInfo(
151
+ RoleInfo memory info
152
+ ) internal returns (bytes32 role) {
202
153
  role = info.id;
203
154
 
204
- if(role == bytes32(0)) {
155
+ if (role == bytes32(0)) {
205
156
  role = getRoleForName(info.name);
206
157
  // TODO check that this is a new role id
207
158
 
208
159
  info.id = role;
209
160
  _roles.push(role);
210
-
211
-
212
161
  }
213
162
 
214
163
  _info[role] = info;
215
-
216
-
217
164
  }
218
165
  }