@etherisc/gif-next 0.0.2-9141c0d → 0.0.2-9b97b55
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.
- package/README.md +95 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +179 -0
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +35 -0
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +179 -0
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +192 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/components/Pool.sol/Pool.json +213 -0
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/components/Product.sol/Product.json +231 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +105 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +105 -0
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +4 -0
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +128 -0
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +4 -0
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +42 -0
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +4 -0
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +76 -0
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +4 -0
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +89 -0
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +4 -0
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +128 -0
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +4 -0
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +37 -0
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +4 -0
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +50 -0
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +4 -0
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +63 -0
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +4 -0
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +10 -0
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +4 -0
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +10 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +892 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +4 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1067 -0
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +400 -0
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +4 -0
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +35 -0
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +4 -0
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +50 -0
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +336 -0
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +327 -0
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +147 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.json +10 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +4 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +179 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +245 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +94 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +24 -0
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.json +10 -0
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +231 -0
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +231 -0
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +4 -0
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.json +10 -0
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +149 -0
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +162 -0
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +4 -0
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +75 -0
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +114 -0
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +4 -0
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +75 -0
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +167 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +534 -0
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +4 -0
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +452 -0
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +24 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +166 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +279 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +49 -0
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/registry/Registry.sol/Registerable.json +166 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +4 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.json +347 -0
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +60 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +10 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +92 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +174 -0
- package/contracts/components/Component.sol +62 -0
- package/contracts/components/IPool.sol +9 -0
- package/contracts/components/IProduct.sol +12 -0
- package/contracts/components/Pool.sol +29 -0
- package/contracts/components/Product.sol +66 -0
- package/contracts/experiment/errors/Require.sol +33 -0
- package/contracts/experiment/errors/Revert.sol +39 -0
- package/contracts/experiment/inheritance/A.sol +56 -0
- package/contracts/experiment/inheritance/B.sol +23 -0
- package/contracts/experiment/inheritance/C.sol +28 -0
- package/contracts/experiment/inheritance/IA.sol +18 -0
- package/contracts/experiment/inheritance/IB.sol +9 -0
- package/contracts/experiment/inheritance/IC.sol +11 -0
- package/contracts/experiment/types/TypeA.sol +42 -0
- package/contracts/experiment/types/TypeB.sol +24 -0
- package/contracts/instance/IInstance.sol +20 -0
- package/contracts/instance/Instance.sol +64 -0
- package/contracts/instance/access/Access.sol +218 -0
- package/contracts/instance/access/IAccess.sol +83 -0
- package/contracts/instance/component/ComponentModule.sol +248 -0
- package/contracts/instance/component/IComponent.sol +95 -0
- package/contracts/instance/policy/IPolicy.sol +66 -0
- package/contracts/instance/policy/PolicyModule.sol +107 -0
- package/contracts/instance/pool/IPoolModule.sol +41 -0
- package/contracts/instance/pool/PoolModule.sol +86 -0
- package/contracts/instance/product/IProductService.sol +46 -0
- package/contracts/instance/product/ProductService.sol +108 -0
- package/contracts/registry/ChainNft.sol +173 -0
- package/contracts/registry/IChainNft.sol +18 -0
- package/contracts/registry/IRegistry.sol +70 -0
- package/contracts/registry/Registry.sol +182 -0
- package/contracts/types/Blocknumber.sol +60 -0
- package/contracts/types/ChainId.sol +30 -0
- package/contracts/types/NftId.sol +35 -0
- package/contracts/types/Timestamp.sol +55 -0
- package/package.json +7 -6
- package/artifacts/contracts/Dip.sol/DIP.dbg.json +0 -4
- package/artifacts/contracts/Dip.sol/DIP.json +0 -338
- package/artifacts/contracts/Lock.sol/Lock.dbg.json +0 -4
- package/artifacts/contracts/Lock.sol/Lock.json +0 -74
- package/contracts/Dip.sol +0 -26
- package/contracts/Lock.sol +0 -34
@@ -0,0 +1,92 @@
|
|
1
|
+
{
|
2
|
+
"_format": "hh-sol-artifact-1",
|
3
|
+
"contractName": "NftIdLib",
|
4
|
+
"sourceName": "contracts/types/NftId.sol",
|
5
|
+
"abi": [
|
6
|
+
{
|
7
|
+
"inputs": [
|
8
|
+
{
|
9
|
+
"internalType": "NftId",
|
10
|
+
"name": "a",
|
11
|
+
"type": "uint96"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"internalType": "NftId",
|
15
|
+
"name": "b",
|
16
|
+
"type": "uint96"
|
17
|
+
}
|
18
|
+
],
|
19
|
+
"name": "eq",
|
20
|
+
"outputs": [
|
21
|
+
{
|
22
|
+
"internalType": "bool",
|
23
|
+
"name": "isSame",
|
24
|
+
"type": "bool"
|
25
|
+
}
|
26
|
+
],
|
27
|
+
"stateMutability": "pure",
|
28
|
+
"type": "function"
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"inputs": [
|
32
|
+
{
|
33
|
+
"internalType": "NftId",
|
34
|
+
"name": "a",
|
35
|
+
"type": "uint96"
|
36
|
+
}
|
37
|
+
],
|
38
|
+
"name": "eqz",
|
39
|
+
"outputs": [
|
40
|
+
{
|
41
|
+
"internalType": "bool",
|
42
|
+
"name": "",
|
43
|
+
"type": "bool"
|
44
|
+
}
|
45
|
+
],
|
46
|
+
"stateMutability": "pure",
|
47
|
+
"type": "function"
|
48
|
+
},
|
49
|
+
{
|
50
|
+
"inputs": [
|
51
|
+
{
|
52
|
+
"internalType": "NftId",
|
53
|
+
"name": "a",
|
54
|
+
"type": "uint96"
|
55
|
+
}
|
56
|
+
],
|
57
|
+
"name": "gtz",
|
58
|
+
"outputs": [
|
59
|
+
{
|
60
|
+
"internalType": "bool",
|
61
|
+
"name": "",
|
62
|
+
"type": "bool"
|
63
|
+
}
|
64
|
+
],
|
65
|
+
"stateMutability": "pure",
|
66
|
+
"type": "function"
|
67
|
+
},
|
68
|
+
{
|
69
|
+
"inputs": [
|
70
|
+
{
|
71
|
+
"internalType": "NftId",
|
72
|
+
"name": "nftId",
|
73
|
+
"type": "uint96"
|
74
|
+
}
|
75
|
+
],
|
76
|
+
"name": "toInt",
|
77
|
+
"outputs": [
|
78
|
+
{
|
79
|
+
"internalType": "uint96",
|
80
|
+
"name": "",
|
81
|
+
"type": "uint96"
|
82
|
+
}
|
83
|
+
],
|
84
|
+
"stateMutability": "pure",
|
85
|
+
"type": "function"
|
86
|
+
}
|
87
|
+
],
|
88
|
+
"bytecode": "0x6102e2610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c806308dc895e1461005b57806330b8415f1461008b57806352694ee8146100bb578063c4cade9d146100eb575b600080fd5b610075600480360381019061007091906101df565b61011b565b604051610082919061021b565b60405180910390f35b6100a560048036038101906100a091906101df565b610125565b6040516100b29190610251565b60405180910390f35b6100d560048036038101906100d091906101df565b61013f565b6040516100e29190610251565b60405180910390f35b6101056004803603810190610100919061026c565b610159565b6040516101129190610251565b60405180910390f35b6000819050919050565b600080826bffffffffffffffffffffffff16119050919050565b600080826bffffffffffffffffffffffff16149050919050565b6000610165838361016d565b905092915050565b6000816bffffffffffffffffffffffff16836bffffffffffffffffffffffff1614905092915050565b600080fd5b60006bffffffffffffffffffffffff82169050919050565b6101bc8161019b565b81146101c757600080fd5b50565b6000813590506101d9816101b3565b92915050565b6000602082840312156101f5576101f4610196565b5b6000610203848285016101ca565b91505092915050565b6102158161019b565b82525050565b6000602082019050610230600083018461020c565b92915050565b60008115159050919050565b61024b81610236565b82525050565b60006020820190506102666000830184610242565b92915050565b6000806040838503121561028357610282610196565b5b6000610291858286016101ca565b92505060206102a2858286016101ca565b915050925092905056fea264697066735822122055c506374fbe6d33aafb031778f35f7d28d6e6f8afcfb93598673c7f2a4e119a64736f6c63430008140033",
|
89
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c806308dc895e1461005b57806330b8415f1461008b57806352694ee8146100bb578063c4cade9d146100eb575b600080fd5b610075600480360381019061007091906101df565b61011b565b604051610082919061021b565b60405180910390f35b6100a560048036038101906100a091906101df565b610125565b6040516100b29190610251565b60405180910390f35b6100d560048036038101906100d091906101df565b61013f565b6040516100e29190610251565b60405180910390f35b6101056004803603810190610100919061026c565b610159565b6040516101129190610251565b60405180910390f35b6000819050919050565b600080826bffffffffffffffffffffffff16119050919050565b600080826bffffffffffffffffffffffff16149050919050565b6000610165838361016d565b905092915050565b6000816bffffffffffffffffffffffff16836bffffffffffffffffffffffff1614905092915050565b600080fd5b60006bffffffffffffffffffffffff82169050919050565b6101bc8161019b565b81146101c757600080fd5b50565b6000813590506101d9816101b3565b92915050565b6000602082840312156101f5576101f4610196565b5b6000610203848285016101ca565b91505092915050565b6102158161019b565b82525050565b6000602082019050610230600083018461020c565b92915050565b60008115159050919050565b61024b81610236565b82525050565b60006020820190506102666000830184610242565b92915050565b6000806040838503121561028357610282610196565b5b6000610291858286016101ca565b92505060206102a2858286016101ca565b915050925092905056fea264697066735822122055c506374fbe6d33aafb031778f35f7d28d6e6f8afcfb93598673c7f2a4e119a64736f6c63430008140033",
|
90
|
+
"linkReferences": {},
|
91
|
+
"deployedLinkReferences": {}
|
92
|
+
}
|
@@ -0,0 +1,174 @@
|
|
1
|
+
{
|
2
|
+
"_format": "hh-sol-artifact-1",
|
3
|
+
"contractName": "TimestampLib",
|
4
|
+
"sourceName": "contracts/types/Timestamp.sol",
|
5
|
+
"abi": [
|
6
|
+
{
|
7
|
+
"inputs": [
|
8
|
+
{
|
9
|
+
"internalType": "Timestamp",
|
10
|
+
"name": "a",
|
11
|
+
"type": "uint40"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"internalType": "Timestamp",
|
15
|
+
"name": "b",
|
16
|
+
"type": "uint40"
|
17
|
+
}
|
18
|
+
],
|
19
|
+
"name": "eq",
|
20
|
+
"outputs": [
|
21
|
+
{
|
22
|
+
"internalType": "bool",
|
23
|
+
"name": "isSame",
|
24
|
+
"type": "bool"
|
25
|
+
}
|
26
|
+
],
|
27
|
+
"stateMutability": "pure",
|
28
|
+
"type": "function"
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"inputs": [
|
32
|
+
{
|
33
|
+
"internalType": "Timestamp",
|
34
|
+
"name": "a",
|
35
|
+
"type": "uint40"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"internalType": "Timestamp",
|
39
|
+
"name": "b",
|
40
|
+
"type": "uint40"
|
41
|
+
}
|
42
|
+
],
|
43
|
+
"name": "gt",
|
44
|
+
"outputs": [
|
45
|
+
{
|
46
|
+
"internalType": "bool",
|
47
|
+
"name": "isAfter",
|
48
|
+
"type": "bool"
|
49
|
+
}
|
50
|
+
],
|
51
|
+
"stateMutability": "pure",
|
52
|
+
"type": "function"
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"inputs": [
|
56
|
+
{
|
57
|
+
"internalType": "Timestamp",
|
58
|
+
"name": "a",
|
59
|
+
"type": "uint40"
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"internalType": "Timestamp",
|
63
|
+
"name": "b",
|
64
|
+
"type": "uint40"
|
65
|
+
}
|
66
|
+
],
|
67
|
+
"name": "gte",
|
68
|
+
"outputs": [
|
69
|
+
{
|
70
|
+
"internalType": "bool",
|
71
|
+
"name": "isAfterOrSame",
|
72
|
+
"type": "bool"
|
73
|
+
}
|
74
|
+
],
|
75
|
+
"stateMutability": "pure",
|
76
|
+
"type": "function"
|
77
|
+
},
|
78
|
+
{
|
79
|
+
"inputs": [
|
80
|
+
{
|
81
|
+
"internalType": "Timestamp",
|
82
|
+
"name": "a",
|
83
|
+
"type": "uint40"
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"internalType": "Timestamp",
|
87
|
+
"name": "b",
|
88
|
+
"type": "uint40"
|
89
|
+
}
|
90
|
+
],
|
91
|
+
"name": "lt",
|
92
|
+
"outputs": [
|
93
|
+
{
|
94
|
+
"internalType": "bool",
|
95
|
+
"name": "isBefore",
|
96
|
+
"type": "bool"
|
97
|
+
}
|
98
|
+
],
|
99
|
+
"stateMutability": "pure",
|
100
|
+
"type": "function"
|
101
|
+
},
|
102
|
+
{
|
103
|
+
"inputs": [
|
104
|
+
{
|
105
|
+
"internalType": "Timestamp",
|
106
|
+
"name": "a",
|
107
|
+
"type": "uint40"
|
108
|
+
},
|
109
|
+
{
|
110
|
+
"internalType": "Timestamp",
|
111
|
+
"name": "b",
|
112
|
+
"type": "uint40"
|
113
|
+
}
|
114
|
+
],
|
115
|
+
"name": "lte",
|
116
|
+
"outputs": [
|
117
|
+
{
|
118
|
+
"internalType": "bool",
|
119
|
+
"name": "isBeforeOrSame",
|
120
|
+
"type": "bool"
|
121
|
+
}
|
122
|
+
],
|
123
|
+
"stateMutability": "pure",
|
124
|
+
"type": "function"
|
125
|
+
},
|
126
|
+
{
|
127
|
+
"inputs": [
|
128
|
+
{
|
129
|
+
"internalType": "Timestamp",
|
130
|
+
"name": "a",
|
131
|
+
"type": "uint40"
|
132
|
+
},
|
133
|
+
{
|
134
|
+
"internalType": "Timestamp",
|
135
|
+
"name": "b",
|
136
|
+
"type": "uint40"
|
137
|
+
}
|
138
|
+
],
|
139
|
+
"name": "ne",
|
140
|
+
"outputs": [
|
141
|
+
{
|
142
|
+
"internalType": "bool",
|
143
|
+
"name": "isDifferent",
|
144
|
+
"type": "bool"
|
145
|
+
}
|
146
|
+
],
|
147
|
+
"stateMutability": "pure",
|
148
|
+
"type": "function"
|
149
|
+
},
|
150
|
+
{
|
151
|
+
"inputs": [
|
152
|
+
{
|
153
|
+
"internalType": "Timestamp",
|
154
|
+
"name": "timestamp",
|
155
|
+
"type": "uint40"
|
156
|
+
}
|
157
|
+
],
|
158
|
+
"name": "toInt",
|
159
|
+
"outputs": [
|
160
|
+
{
|
161
|
+
"internalType": "uint256",
|
162
|
+
"name": "",
|
163
|
+
"type": "uint256"
|
164
|
+
}
|
165
|
+
],
|
166
|
+
"stateMutability": "pure",
|
167
|
+
"type": "function"
|
168
|
+
}
|
169
|
+
],
|
170
|
+
"bytecode": "0x610459610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c8063add9ce9911610065578063add9ce991461011c578063c24922ce1461014c578063da09d4841461017c578063ddf3d631146101ac57610087565b806383ffcdef1461008c57806394335b1a146100bc5780639df87639146100ec575b600080fd5b6100a660048036038101906100a1919061034c565b6101dc565b6040516100b391906103a7565b60405180910390f35b6100d660048036038101906100d1919061034c565b6101f0565b6040516100e391906103a7565b60405180910390f35b6101066004803603810190610101919061034c565b610204565b60405161011391906103a7565b60405180910390f35b6101366004803603810190610131919061034c565b610218565b60405161014391906103a7565b60405180910390f35b6101666004803603810190610161919061034c565b61022c565b60405161017391906103a7565b60405180910390f35b610196600480360381019061019191906103c2565b610240565b6040516101a39190610408565b60405180910390f35b6101c660048036038101906101c1919061034c565b610251565b6040516101d391906103a7565b60405180910390f35b60006101e88383610265565b905092915050565b60006101fc8383610280565b905092915050565b6000610210838361029c565b905092915050565b600061022483836102b7565b905092915050565b600061023883836102d2565b905092915050565b60008164ffffffffff169050919050565b600061025d83836102ee565b905092915050565b60008164ffffffffff168364ffffffffff1611905092915050565b60008164ffffffffff168364ffffffffff161115905092915050565b60008164ffffffffff168364ffffffffff1614905092915050565b60008164ffffffffff168364ffffffffff1610905092915050565b60008164ffffffffff168364ffffffffff161015905092915050565b60008164ffffffffff168364ffffffffff161415905092915050565b600080fd5b600064ffffffffff82169050919050565b6103298161030f565b811461033457600080fd5b50565b60008135905061034681610320565b92915050565b600080604083850312156103635761036261030a565b5b600061037185828601610337565b925050602061038285828601610337565b9150509250929050565b60008115159050919050565b6103a18161038c565b82525050565b60006020820190506103bc6000830184610398565b92915050565b6000602082840312156103d8576103d761030a565b5b60006103e684828501610337565b91505092915050565b6000819050919050565b610402816103ef565b82525050565b600060208201905061041d60008301846103f9565b9291505056fea264697066735822122048c2371eab33467f3c6be4635fa8f7e413187dc1dcdc45d51411cb1ef4238d1964736f6c63430008140033",
|
171
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c8063add9ce9911610065578063add9ce991461011c578063c24922ce1461014c578063da09d4841461017c578063ddf3d631146101ac57610087565b806383ffcdef1461008c57806394335b1a146100bc5780639df87639146100ec575b600080fd5b6100a660048036038101906100a1919061034c565b6101dc565b6040516100b391906103a7565b60405180910390f35b6100d660048036038101906100d1919061034c565b6101f0565b6040516100e391906103a7565b60405180910390f35b6101066004803603810190610101919061034c565b610204565b60405161011391906103a7565b60405180910390f35b6101366004803603810190610131919061034c565b610218565b60405161014391906103a7565b60405180910390f35b6101666004803603810190610161919061034c565b61022c565b60405161017391906103a7565b60405180910390f35b610196600480360381019061019191906103c2565b610240565b6040516101a39190610408565b60405180910390f35b6101c660048036038101906101c1919061034c565b610251565b6040516101d391906103a7565b60405180910390f35b60006101e88383610265565b905092915050565b60006101fc8383610280565b905092915050565b6000610210838361029c565b905092915050565b600061022483836102b7565b905092915050565b600061023883836102d2565b905092915050565b60008164ffffffffff169050919050565b600061025d83836102ee565b905092915050565b60008164ffffffffff168364ffffffffff1611905092915050565b60008164ffffffffff168364ffffffffff161115905092915050565b60008164ffffffffff168364ffffffffff1614905092915050565b60008164ffffffffff168364ffffffffff1610905092915050565b60008164ffffffffff168364ffffffffff161015905092915050565b60008164ffffffffff168364ffffffffff161415905092915050565b600080fd5b600064ffffffffff82169050919050565b6103298161030f565b811461033457600080fd5b50565b60008135905061034681610320565b92915050565b600080604083850312156103635761036261030a565b5b600061037185828601610337565b925050602061038285828601610337565b9150509250929050565b60008115159050919050565b6103a18161038c565b82525050565b60006020820190506103bc6000830184610398565b92915050565b6000602082840312156103d8576103d761030a565b5b60006103e684828501610337565b91505092915050565b6000819050919050565b610402816103ef565b82525050565b600060208201905061041d60008301846103f9565b9291505056fea264697066735822122048c2371eab33467f3c6be4635fa8f7e413187dc1dcdc45d51411cb1ef4238d1964736f6c63430008140033",
|
172
|
+
"linkReferences": {},
|
173
|
+
"deployedLinkReferences": {}
|
174
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry, IRegisterable, IRegistryLinked} from "../registry/IRegistry.sol";
|
5
|
+
import {Registerable} from "../registry/Registry.sol";
|
6
|
+
import {IInstance} from "../instance/IInstance.sol";
|
7
|
+
|
8
|
+
import {IInstanceLinked, IComponent, IComponentContract, IComponentModule, IComponentOwnerService} from "../instance/component/IComponent.sol";
|
9
|
+
import {NftId} from "../types/NftId.sol";
|
10
|
+
|
11
|
+
contract InstanceLinked is
|
12
|
+
IInstanceLinked
|
13
|
+
{
|
14
|
+
IInstance internal _instance;
|
15
|
+
|
16
|
+
constructor(address instance) {
|
17
|
+
_instance = IInstance(instance);
|
18
|
+
}
|
19
|
+
|
20
|
+
// function setInstance(address instance) public override {
|
21
|
+
// require(address(_instance) == address(0), "ERROR:RGL-001:INSTANCE_ALREADY_SET");
|
22
|
+
// _instance = IInstance(instance);
|
23
|
+
// }
|
24
|
+
|
25
|
+
function getInstance() public view override returns(IInstance instance) {
|
26
|
+
return _instance;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
|
31
|
+
abstract contract Component is
|
32
|
+
Registerable,
|
33
|
+
InstanceLinked,
|
34
|
+
IComponentContract
|
35
|
+
{
|
36
|
+
|
37
|
+
address private _deployer;
|
38
|
+
|
39
|
+
constructor(address registry, address instance)
|
40
|
+
Registerable(registry)
|
41
|
+
InstanceLinked(instance)
|
42
|
+
{ }
|
43
|
+
|
44
|
+
// from registerable
|
45
|
+
function register()
|
46
|
+
public
|
47
|
+
override
|
48
|
+
returns(NftId componentId)
|
49
|
+
{
|
50
|
+
require(msg.sender == getInitialOwner(), "");
|
51
|
+
require(address(_registry) != address(0), "ERROR:PRD-001:REGISTRY_ZERO");
|
52
|
+
require(_registry.isRegistered(address(_instance)), "ERROR:PRD-002:INSTANCE_NOT_REGISTERED");
|
53
|
+
|
54
|
+
IComponentOwnerService cos = _instance.getComponentOwnerService();
|
55
|
+
componentId = cos.register(this);
|
56
|
+
}
|
57
|
+
|
58
|
+
// from registerable
|
59
|
+
function getParentNftId() public view override returns(NftId) {
|
60
|
+
return getInstance().getNftId();
|
61
|
+
}
|
62
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IComponentContract} from "../instance/component/IComponent.sol";
|
5
|
+
import {NftId} from "../types/NftId.sol";
|
6
|
+
|
7
|
+
interface IProductComponent is
|
8
|
+
IComponentContract
|
9
|
+
{
|
10
|
+
|
11
|
+
function getPoolNftId() external view returns(NftId poolNftId);
|
12
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IPoolComponent} from "./IPool.sol";
|
5
|
+
import {Component} from "./Component.sol";
|
6
|
+
|
7
|
+
|
8
|
+
contract Pool is
|
9
|
+
Component,
|
10
|
+
IPoolComponent
|
11
|
+
{
|
12
|
+
|
13
|
+
constructor(
|
14
|
+
address registry,
|
15
|
+
address instance
|
16
|
+
)
|
17
|
+
Component(registry, instance)
|
18
|
+
{ }
|
19
|
+
|
20
|
+
// from registerable
|
21
|
+
function getType() public view override returns(uint256) {
|
22
|
+
return _registry.POOL();
|
23
|
+
}
|
24
|
+
|
25
|
+
// from registerable
|
26
|
+
function getData() external view override returns(bytes memory data) {
|
27
|
+
return bytes(abi.encode(getInstance().getNftId()));
|
28
|
+
}
|
29
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IProductService} from "../instance/product/IProductService.sol";
|
5
|
+
import {Component} from "./Component.sol";
|
6
|
+
import {IProductComponent} from "./IProduct.sol";
|
7
|
+
import {NftId} from "../types/NftId.sol";
|
8
|
+
|
9
|
+
|
10
|
+
contract Product is
|
11
|
+
Component,
|
12
|
+
IProductComponent
|
13
|
+
{
|
14
|
+
IProductService private _productService;
|
15
|
+
address private _pool;
|
16
|
+
|
17
|
+
constructor(
|
18
|
+
address registry,
|
19
|
+
address instance,
|
20
|
+
address pool
|
21
|
+
)
|
22
|
+
Component(registry, instance)
|
23
|
+
{
|
24
|
+
_productService = _instance.getProductService();
|
25
|
+
_pool = pool;
|
26
|
+
}
|
27
|
+
|
28
|
+
function _createApplication(
|
29
|
+
address applicationOwner,
|
30
|
+
uint256 sumInsuredAmount,
|
31
|
+
uint256 premiumAmount,
|
32
|
+
uint256 lifetime,
|
33
|
+
NftId bundleNftId
|
34
|
+
)
|
35
|
+
internal
|
36
|
+
returns(NftId nftId)
|
37
|
+
{
|
38
|
+
nftId = _productService.createApplication(
|
39
|
+
applicationOwner,
|
40
|
+
sumInsuredAmount,
|
41
|
+
premiumAmount,
|
42
|
+
lifetime,
|
43
|
+
bundleNftId
|
44
|
+
);
|
45
|
+
}
|
46
|
+
|
47
|
+
function _underwrite(NftId nftId)
|
48
|
+
internal
|
49
|
+
{
|
50
|
+
_productService.underwrite(nftId);
|
51
|
+
}
|
52
|
+
|
53
|
+
function getPoolNftId() external view override returns(NftId poolNftId) {
|
54
|
+
return _registry.getNftId(_pool);
|
55
|
+
}
|
56
|
+
|
57
|
+
// from registerable
|
58
|
+
function getType() public view override returns(uint256) {
|
59
|
+
return _registry.PRODUCT();
|
60
|
+
}
|
61
|
+
|
62
|
+
// from registerable
|
63
|
+
function getData() external view override returns(bytes memory data) {
|
64
|
+
return bytes(abi.encode(getInstance().getNftId()));
|
65
|
+
}
|
66
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
contract Require {
|
5
|
+
|
6
|
+
error AsmallerThanB_S();
|
7
|
+
error AsmallerThanB_M(uint a);
|
8
|
+
error AsmallerThanB_L(uint a, uint b);
|
9
|
+
|
10
|
+
uint256 private _b;
|
11
|
+
|
12
|
+
constructor() {
|
13
|
+
_b = 42;
|
14
|
+
}
|
15
|
+
|
16
|
+
function isAlargerThanBRequire_S(uint a) external view returns(bool isLarger) {
|
17
|
+
require(a > _b, "ERROR:ABC-001");
|
18
|
+
|
19
|
+
return true;
|
20
|
+
}
|
21
|
+
|
22
|
+
function isAlargerThanBRequire_M(uint a) external view returns(bool isLarger) {
|
23
|
+
require(a > _b, "ERROR:ABC-002:A_IS_SMALLER");
|
24
|
+
|
25
|
+
return true;
|
26
|
+
}
|
27
|
+
|
28
|
+
function isAlargerThanBRequire_L(uint a) external view returns(bool isLarger) {
|
29
|
+
require(a > _b, "ERROR:ABC-003:A_IS_SMALLER_THAN_B");
|
30
|
+
|
31
|
+
return true;
|
32
|
+
}
|
33
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
contract Revert {
|
5
|
+
|
6
|
+
error AsmallerThanB_S();
|
7
|
+
error AsmallerThanB_M(uint a);
|
8
|
+
error AsmallerThanB_L(uint a, uint b);
|
9
|
+
|
10
|
+
uint256 private _b;
|
11
|
+
|
12
|
+
constructor() {
|
13
|
+
_b = 42;
|
14
|
+
}
|
15
|
+
|
16
|
+
function isAlargerThanBRevert_S(uint a) external view returns(bool isLarger) {
|
17
|
+
if(a <= _b) {
|
18
|
+
revert AsmallerThanB_S();
|
19
|
+
}
|
20
|
+
|
21
|
+
return true;
|
22
|
+
}
|
23
|
+
|
24
|
+
function isAlargerThanBRevert_M(uint a) external view returns(bool isLarger) {
|
25
|
+
if(a <= _b) {
|
26
|
+
revert AsmallerThanB_M(a);
|
27
|
+
}
|
28
|
+
|
29
|
+
return true;
|
30
|
+
}
|
31
|
+
|
32
|
+
function isAlargerThanBRevert_L(uint a) external view returns(bool isLarger) {
|
33
|
+
if(a <= _b) {
|
34
|
+
revert AsmallerThanB_L(a, _b);
|
35
|
+
}
|
36
|
+
|
37
|
+
return true;
|
38
|
+
}
|
39
|
+
}
|
@@ -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
|
+
}
|