@etherisc/gif-next 0.0.2-b9b3e89 → 0.0.2-f9905e1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  2. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +1 -1
  3. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +1 -1
  4. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +1 -1
  5. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  6. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  7. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +4 -0
  8. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +128 -0
  9. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +4 -0
  10. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +42 -0
  11. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +4 -0
  12. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +76 -0
  13. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +4 -0
  14. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +89 -0
  15. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +4 -0
  16. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +128 -0
  17. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +4 -0
  18. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +37 -0
  19. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +4 -0
  20. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +50 -0
  21. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +4 -0
  22. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +63 -0
  23. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +4 -0
  24. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +10 -0
  25. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +4 -0
  26. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +10 -0
  27. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +1 -1
  30. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +1 -1
  31. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +1 -1
  32. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +1 -1
  33. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +1 -1
  34. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  35. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +1 -1
  36. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +1 -1
  37. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +1 -1
  38. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  39. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +1 -1
  40. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +1 -1
  41. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
  42. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  43. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  44. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  45. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  46. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  47. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +1 -1
  48. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +1 -1
  50. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +1 -1
  51. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +1 -1
  52. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +1 -1
  53. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  54. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +1 -1
  55. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +1 -1
  56. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  57. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +1 -1
  58. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +4 -0
  59. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +10 -0
  60. package/contracts/experiment/inheritance/A.sol +56 -0
  61. package/contracts/experiment/inheritance/B.sol +23 -0
  62. package/contracts/experiment/inheritance/C.sol +28 -0
  63. package/contracts/experiment/inheritance/IA.sol +18 -0
  64. package/contracts/experiment/inheritance/IB.sol +9 -0
  65. package/contracts/experiment/inheritance/IC.sol +11 -0
  66. package/contracts/experiment/types/TypeA.sol +42 -0
  67. package/contracts/experiment/types/TypeB.sol +24 -0
  68. package/contracts/types/ChainId.sol +24 -0
  69. package/package.json +1 -1
@@ -0,0 +1,63 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "IC",
4
+ "sourceName": "contracts/experiment/inheritance/IC.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "getAfromC",
9
+ "outputs": [
10
+ {
11
+ "internalType": "uint256",
12
+ "name": "",
13
+ "type": "uint256"
14
+ }
15
+ ],
16
+ "stateMutability": "view",
17
+ "type": "function"
18
+ },
19
+ {
20
+ "inputs": [],
21
+ "name": "getBfromC",
22
+ "outputs": [
23
+ {
24
+ "internalType": "uint256",
25
+ "name": "",
26
+ "type": "uint256"
27
+ }
28
+ ],
29
+ "stateMutability": "view",
30
+ "type": "function"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "getC",
35
+ "outputs": [
36
+ {
37
+ "internalType": "uint256",
38
+ "name": "",
39
+ "type": "uint256"
40
+ }
41
+ ],
42
+ "stateMutability": "view",
43
+ "type": "function"
44
+ },
45
+ {
46
+ "inputs": [
47
+ {
48
+ "internalType": "uint256",
49
+ "name": "newA",
50
+ "type": "uint256"
51
+ }
52
+ ],
53
+ "name": "setC",
54
+ "outputs": [],
55
+ "stateMutability": "nonpayable",
56
+ "type": "function"
57
+ }
58
+ ],
59
+ "bytecode": "0x",
60
+ "deployedBytecode": "0x",
61
+ "linkReferences": {},
62
+ "deployedLinkReferences": {}
63
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TypeALib",
4
+ "sourceName": "contracts/experiment/types/TypeA.sol",
5
+ "abi": [],
6
+ "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220631fcbb9cdf05c22d0340bcc90e8220e3513b6efe9d2460153613f0ee92bc95b64736f6c63430008140033",
7
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220631fcbb9cdf05c22d0340bcc90e8220e3513b6efe9d2460153613f0ee92bc95b64736f6c63430008140033",
8
+ "linkReferences": {},
9
+ "deployedLinkReferences": {}
10
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TypeBLib",
4
+ "sourceName": "contracts/experiment/types/TypeB.sol",
5
+ "abi": [],
6
+ "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba12bbf5b38107a97ab834773cb7cc766833169e48de20a43a90102809418e7964736f6c63430008140033",
7
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba12bbf5b38107a97ab834773cb7cc766833169e48de20a43a90102809418e7964736f6c63430008140033",
8
+ "linkReferences": {},
9
+ "deployedLinkReferences": {}
10
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c2b99ddc284901467151c1af2e33d9be.json"
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
4
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/f211b802294e8958d4ab3ed8cbf2371f.json"
4
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ChainIdLib",
4
+ "sourceName": "contracts/types/ChainId.sol",
5
+ "abi": [],
6
+ "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220834afee6f90bd20143d82475fe6713238237b9c6714c9ef8e26d210a9190099a64736f6c63430008140033",
7
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220834afee6f90bd20143d82475fe6713238237b9c6714c9ef8e26d210a9190099a64736f6c63430008140033",
8
+ "linkReferences": {},
9
+ "deployedLinkReferences": {}
10
+ }
@@ -0,0 +1,56 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IA, ISharedA} from "./IA.sol";
5
+ import {B} from "./B.sol";
6
+ import {C} from "./C.sol";
7
+
8
+ /*
9
+
10
+ # dependency graph
11
+
12
+ B <...+
13
+ ^ |
14
+ | |
15
+ A --> C
16
+
17
+ - A is the main contract
18
+ - A provides functionality implemented by modules B and C
19
+ - B and C rely on functionality shared by A
20
+ - C accesses functionality of module B
21
+
22
+ # chisel session
23
+
24
+ import {A} from "./contracts/experiment/A.sol";
25
+ A a = new A();
26
+ uint(a.getA())
27
+ uint(a.getB()))
28
+ uint(a.getC())
29
+ uint(a.getAfromB())
30
+ uint(a.getAfromC())
31
+ uint(a.getBfromC())
32
+ a.setA(100);
33
+ a.setB(10);
34
+ a.setC(20);
35
+ */
36
+
37
+ contract AShared is ISharedA {
38
+
39
+ uint256 private _x;
40
+
41
+ constructor() {
42
+ _x = 42;
43
+ }
44
+
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
+ {
55
+
56
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {ISharedA} from "./IA.sol";
5
+ import {IB} from "./IB.sol";
6
+
7
+ abstract contract B is ISharedA, IB {
8
+
9
+ // names of private variables can be re-used in inheritance
10
+ uint256 private _x;
11
+
12
+ constructor() {
13
+ _x = 1;
14
+ }
15
+
16
+ // access own state
17
+ function getB() external view override returns(uint256) { return _x; }
18
+ function setB(uint256 newB) external override { _x = newB; }
19
+
20
+ // access state from parent contract A
21
+ function getAfromB() external view override returns(uint256) { return this.getA(); }
22
+
23
+ }
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {ISharedA} from "./IA.sol";
5
+ import {IB} from "./IB.sol";
6
+ import {IC} from "./IC.sol";
7
+
8
+ abstract contract C is ISharedA, IC {
9
+
10
+ uint256 private _x;
11
+
12
+ constructor() {
13
+ _x = 2;
14
+ }
15
+
16
+ // access own state
17
+ function getC() external view override returns(uint256) { return _x; }
18
+ function setC(uint256 newC) external override { _x = newC; }
19
+
20
+ // access state from parent contract A
21
+ function getAfromC() external view override returns(uint256) { return this.getA(); }
22
+
23
+ // access state from other module B
24
+ function getBfromC() external view override returns(uint256) {
25
+ IB b = IB(address(this));
26
+ return b.getB();
27
+ }
28
+ }
@@ -0,0 +1,18 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IB} from "./IB.sol";
5
+ import {IC} from "./IC.sol";
6
+
7
+ interface ISharedA {
8
+
9
+ function getA() external view returns(uint256);
10
+ function setA(uint256 newA) external;
11
+ }
12
+
13
+ interface IA is
14
+ ISharedA,
15
+ IB,
16
+ IC
17
+ {
18
+ }
@@ -0,0 +1,9 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ interface IB {
5
+
6
+ function getAfromB() external view returns(uint256);
7
+ function getB() external view returns(uint256);
8
+ function setB(uint256 newA) external;
9
+ }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ interface IC {
5
+
6
+ function getAfromC() external view returns(uint256);
7
+ function getBfromC() external view returns(uint256);
8
+
9
+ function getC() external view returns(uint256);
10
+ function setC(uint256 newA) external;
11
+ }
@@ -0,0 +1,42 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ /*
5
+ # chisel session for user defined types
6
+
7
+ import {TypeA, toTypeA} from "./contracts/experiment/types/TypeA.sol";
8
+ TypeA a = toTypeA(1);
9
+ TypeA b = toTypeA(2);
10
+ uint(a.toInt())
11
+ uint(b.toInt())
12
+ a == b
13
+ a != b
14
+
15
+ import {TypeB, toTypeB} from "./contracts/experiment/types/TypeB.sol";
16
+ TypeB x = toTypeB(33);
17
+ uint(x.toInt())
18
+ a == x; // -> error
19
+ a.toInt() == x.toInt() // -> no error
20
+ */
21
+
22
+ // bytes5 allows for chain ids up to 13 digits
23
+ type TypeA is uint248;
24
+
25
+ // type bindings
26
+ using {
27
+ eqTypeA as ==,
28
+ neTypeA as !=,
29
+ TypeALib.toInt
30
+ } for TypeA global;
31
+
32
+ // general pure free functions
33
+ function toTypeA(uint256 typeA) pure returns(TypeA) { return TypeA.wrap(uint248(typeA)); }
34
+
35
+ // 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); }
38
+
39
+ // library functions that operate on user defined type
40
+ library TypeALib {
41
+ function toInt(TypeA typeA) internal pure returns(uint256) { return uint256(TypeA.unwrap(typeA)); }
42
+ }
@@ -0,0 +1,24 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ // bytes5 allows for chain ids up to 13 digits
5
+ type TypeB is uint248;
6
+
7
+ // type bindings
8
+ using {
9
+ eqTypeB as ==,
10
+ addTypeB as +,
11
+ TypeBLib.toInt
12
+ } for TypeB global;
13
+
14
+ // general pure free functions
15
+ function toTypeB(uint256 x) pure returns(TypeB) { return TypeB.wrap(uint248(x)); }
16
+
17
+ // 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)); }
20
+
21
+ // library functions that operate on user defined type
22
+ library TypeBLib {
23
+ function toInt(TypeB b) internal pure returns(uint256) { return uint256(TypeB.unwrap(b)); }
24
+ }
@@ -0,0 +1,24 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ // bytes5 allows for chain ids up to 13 digits
5
+ type ChainId is bytes5;
6
+
7
+ // type bindings
8
+ using {
9
+ eqChainId as ==,
10
+ neChainId as !=,
11
+ ChainIdLib.toInt
12
+ } for ChainId global;
13
+
14
+ // general pure free functions
15
+ function toChainId(uint256 chainId) pure returns(ChainId) { return ChainId.wrap(bytes5(uint40(chainId))); }
16
+
17
+ // pure free functions for operators
18
+ function eqChainId(ChainId a, ChainId b) pure returns(bool isSame) { return ChainId.unwrap(a) == ChainId.unwrap(b); }
19
+ function neChainId(ChainId a, ChainId b) pure returns(bool isDifferent) { return ChainId.unwrap(a) != ChainId.unwrap(b); }
20
+
21
+ // library functions that operate on user defined type
22
+ library ChainIdLib {
23
+ function toInt(ChainId chainId) internal pure returns(uint256) { return uint256(uint40(ChainId.unwrap(chainId))); }
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etherisc/gif-next",
3
- "version": "0.0.2-b9b3e89",
3
+ "version": "0.0.2-f9905e1",
4
4
  "description": "This is the repository for the next version of the Generic Insurance Framework (GIF) smart contracts. ",
5
5
  "main": "index.js",
6
6
  "scripts": {