@etherisc/gif-next 0.0.2-f9bc4c7-556 → 0.0.2-fe34d97-357
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +36 -0
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +72 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +46 -3
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +540 -401
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +640 -469
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +18 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +18 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +41 -23
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +17 -48
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +18 -49
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +2 -2
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +1 -1
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +36 -88
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +36 -88
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +65 -38
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +65 -38
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -5
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -5
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +123 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +145 -5
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +166 -168
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +167 -169
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +21 -21
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +71 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +6 -6
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +97 -26
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +72 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +90 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +2 -2
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/BaseComponent.sol +7 -1
- package/contracts/components/Pool.sol +20 -3
- package/contracts/components/Product.sol +69 -5
- package/contracts/instance/IInstance.sol +3 -4
- package/contracts/instance/Instance.sol +7 -4
- package/contracts/instance/base/IInstanceBase.sol +5 -0
- package/contracts/instance/base/IKeyValueStore.sol +4 -3
- package/contracts/instance/base/InstanceBase.sol +6 -2
- package/contracts/instance/base/KeyValueStore.sol +12 -7
- package/contracts/instance/base/Lifecycle.sol +15 -10
- package/contracts/instance/base/ModuleBase.sol +18 -17
- package/contracts/instance/module/bundle/BundleModule.sol +10 -11
- package/contracts/instance/module/bundle/IBundle.sol +4 -11
- package/contracts/instance/module/compensation/CompensationModule.sol +11 -2
- package/contracts/instance/module/component/ComponentModule.sol +39 -53
- package/contracts/instance/module/component/IComponent.sol +6 -30
- package/contracts/instance/module/policy/IPolicy.sol +11 -9
- package/contracts/instance/module/policy/PolicyModule.sol +35 -19
- package/contracts/instance/module/pool/IPoolModule.sol +0 -1
- package/contracts/instance/module/pool/PoolModule.sol +12 -9
- package/contracts/instance/module/risk/IRisk.sol +19 -2
- package/contracts/instance/module/risk/RiskModule.sol +64 -2
- package/contracts/instance/module/treasury/ITreasury.sol +35 -42
- package/contracts/instance/module/treasury/TreasuryModule.sol +96 -77
- package/contracts/instance/service/ComponentOwnerService.sol +19 -34
- package/contracts/instance/service/IProductService.sol +21 -1
- package/contracts/instance/service/PoolService.sol +10 -4
- package/contracts/instance/service/ProductService.sol +120 -68
- package/contracts/registry/Registry.sol +2 -2
- package/contracts/test/TestPool.sol +4 -2
- package/contracts/test/TestProduct.sol +25 -3
- package/contracts/types/ObjectType.sol +20 -8
- package/contracts/types/RiskId.sol +43 -0
- package/package.json +1 -1
@@ -0,0 +1,86 @@
|
|
1
|
+
{
|
2
|
+
"_format": "hh-sol-artifact-1",
|
3
|
+
"contractName": "RiskIdLib",
|
4
|
+
"sourceName": "contracts/types/RiskId.sol",
|
5
|
+
"abi": [
|
6
|
+
{
|
7
|
+
"inputs": [
|
8
|
+
{
|
9
|
+
"internalType": "RiskId",
|
10
|
+
"name": "id",
|
11
|
+
"type": "bytes8"
|
12
|
+
}
|
13
|
+
],
|
14
|
+
"name": "toKey32",
|
15
|
+
"outputs": [
|
16
|
+
{
|
17
|
+
"internalType": "Key32",
|
18
|
+
"name": "key",
|
19
|
+
"type": "bytes32"
|
20
|
+
}
|
21
|
+
],
|
22
|
+
"stateMutability": "pure",
|
23
|
+
"type": "function"
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"inputs": [
|
27
|
+
{
|
28
|
+
"internalType": "RiskId",
|
29
|
+
"name": "id",
|
30
|
+
"type": "bytes8"
|
31
|
+
}
|
32
|
+
],
|
33
|
+
"name": "toKeyId",
|
34
|
+
"outputs": [
|
35
|
+
{
|
36
|
+
"internalType": "KeyId",
|
37
|
+
"name": "keyId",
|
38
|
+
"type": "bytes31"
|
39
|
+
}
|
40
|
+
],
|
41
|
+
"stateMutability": "pure",
|
42
|
+
"type": "function"
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"inputs": [
|
46
|
+
{
|
47
|
+
"internalType": "string",
|
48
|
+
"name": "risk",
|
49
|
+
"type": "string"
|
50
|
+
}
|
51
|
+
],
|
52
|
+
"name": "toRiskId",
|
53
|
+
"outputs": [
|
54
|
+
{
|
55
|
+
"internalType": "RiskId",
|
56
|
+
"name": "",
|
57
|
+
"type": "bytes8"
|
58
|
+
}
|
59
|
+
],
|
60
|
+
"stateMutability": "pure",
|
61
|
+
"type": "function"
|
62
|
+
}
|
63
|
+
],
|
64
|
+
"bytecode": "0x61032f61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c80632cf96bf9146100505780634a7485ba1461008357806355ee6275146100af575b600080fd5b61006b61005e36600461019a565b6001600160c01b03191690565b60405160ff1990911681526020015b60405180910390f35b6100966100913660046101e1565b6100d0565b6040516001600160c01b0319909116815260200161007a565b6100c26100bd36600461019a565b610100565b60405190815260200161007a565b6000816040516020016100e39190610292565b604051602081830303815290604052805190602001209050919050565b600073__$c8f743efd2b4f0c9300f2558c784479d3e$__63f48016ce60c86001600160c01b031985166040516001600160e01b031960e085901b16815260ff909216600483015260ff19166024820152604401602060405180830381865af4158015610170573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019491906102e0565b92915050565b6000602082840312156101ac57600080fd5b81356001600160c01b0319811681146101c457600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156101f357600080fd5b813567ffffffffffffffff8082111561020b57600080fd5b818401915084601f83011261021f57600080fd5b813581811115610231576102316101cb565b604051601f8201601f19908116603f01168101908382118183101715610259576102596101cb565b8160405282815287602084870101111561027257600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b818110156102bf578581018301518582016040015282016102a3565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156102f257600080fd5b505191905056fea264697066735822122069f4e6edc9ea69a4eaafc3119fcaaf2bfb13257d0e2b18f8c55816c118a572a664736f6c63430008140033",
|
65
|
+
"deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c80632cf96bf9146100505780634a7485ba1461008357806355ee6275146100af575b600080fd5b61006b61005e36600461019a565b6001600160c01b03191690565b60405160ff1990911681526020015b60405180910390f35b6100966100913660046101e1565b6100d0565b6040516001600160c01b0319909116815260200161007a565b6100c26100bd36600461019a565b610100565b60405190815260200161007a565b6000816040516020016100e39190610292565b604051602081830303815290604052805190602001209050919050565b600073__$c8f743efd2b4f0c9300f2558c784479d3e$__63f48016ce60c86001600160c01b031985166040516001600160e01b031960e085901b16815260ff909216600483015260ff19166024820152604401602060405180830381865af4158015610170573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019491906102e0565b92915050565b6000602082840312156101ac57600080fd5b81356001600160c01b0319811681146101c457600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156101f357600080fd5b813567ffffffffffffffff8082111561020b57600080fd5b818401915084601f83011261021f57600080fd5b813581811115610231576102316101cb565b604051601f8201601f19908116603f01168101908382118183101715610259576102596101cb565b8160405282815287602084870101111561027257600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b818110156102bf578581018301518582016040015282016102a3565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156102f257600080fd5b505191905056fea264697066735822122069f4e6edc9ea69a4eaafc3119fcaaf2bfb13257d0e2b18f8c55816c118a572a664736f6c63430008140033",
|
66
|
+
"linkReferences": {
|
67
|
+
"contracts/types/Key32.sol": {
|
68
|
+
"Key32Lib": [
|
69
|
+
{
|
70
|
+
"length": 20,
|
71
|
+
"start": 318
|
72
|
+
}
|
73
|
+
]
|
74
|
+
}
|
75
|
+
},
|
76
|
+
"deployedLinkReferences": {
|
77
|
+
"contracts/types/Key32.sol": {
|
78
|
+
"Key32Lib": [
|
79
|
+
{
|
80
|
+
"length": 20,
|
81
|
+
"start": 260
|
82
|
+
}
|
83
|
+
]
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
@@ -13,6 +13,7 @@ import {IInstance} from "../instance/IInstance.sol";
|
|
13
13
|
import {IComponent, IComponentModule} from "../instance/module/component/IComponent.sol";
|
14
14
|
import {IComponentOwnerService} from "../instance/service/IComponentOwnerService.sol";
|
15
15
|
import {IBaseComponent} from "./IBaseComponent.sol";
|
16
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
16
17
|
import {NftId} from "../types/NftId.sol";
|
17
18
|
|
18
19
|
abstract contract BaseComponent is
|
@@ -25,6 +26,8 @@ abstract contract BaseComponent is
|
|
25
26
|
address internal _wallet;
|
26
27
|
IERC20Metadata internal _token;
|
27
28
|
IInstance internal _instance;
|
29
|
+
bool internal _isRegistered;
|
30
|
+
Fee internal _zeroFee;
|
28
31
|
|
29
32
|
constructor(
|
30
33
|
address registry,
|
@@ -43,6 +46,8 @@ abstract contract BaseComponent is
|
|
43
46
|
_componentOwnerService = _instance.getComponentOwnerService();
|
44
47
|
_wallet = address(this);
|
45
48
|
_token = IERC20Metadata(token);
|
49
|
+
_isRegistered = false;
|
50
|
+
_zeroFee = FeeLib.zeroFee();
|
46
51
|
}
|
47
52
|
|
48
53
|
// from registerable
|
@@ -57,7 +62,8 @@ abstract contract BaseComponent is
|
|
57
62
|
"ERROR:COB:INSTANCE_NOT_REGISTERED"
|
58
63
|
);
|
59
64
|
|
60
|
-
|
65
|
+
_isRegistered = true;
|
66
|
+
return _componentOwnerService.register(this);
|
61
67
|
}
|
62
68
|
|
63
69
|
// from component contract
|
@@ -15,6 +15,9 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
15
15
|
bool internal _isVerifying;
|
16
16
|
UFixed internal _collateralizationLevel;
|
17
17
|
|
18
|
+
Fee internal _initialStakingFee;
|
19
|
+
Fee internal _initialPerformanceFee;
|
20
|
+
|
18
21
|
// may be used to interact with instance by derived contracts
|
19
22
|
IPoolService internal _poolService;
|
20
23
|
|
@@ -41,13 +44,17 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
41
44
|
// TODO refactor into tokenNftId
|
42
45
|
address token,
|
43
46
|
bool verifying,
|
44
|
-
UFixed collateralizationLevel
|
47
|
+
UFixed collateralizationLevel,
|
48
|
+
Fee memory stakingFee,
|
49
|
+
Fee memory performanceFee
|
45
50
|
)
|
46
51
|
BaseComponent(registry, instanceNftId, token)
|
47
52
|
{
|
48
53
|
_isVerifying = verifying;
|
49
54
|
// TODO add validation
|
50
55
|
_collateralizationLevel = collateralizationLevel;
|
56
|
+
_initialStakingFee = stakingFee;
|
57
|
+
_initialPerformanceFee = performanceFee;
|
51
58
|
|
52
59
|
_poolService = _instance.getPoolService();
|
53
60
|
_productService = _instance.getProductService();
|
@@ -155,7 +162,12 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
155
162
|
override
|
156
163
|
returns (Fee memory stakingFee)
|
157
164
|
{
|
158
|
-
|
165
|
+
NftId productNftId = _instance.getProductNftId(getNftId());
|
166
|
+
if (productNftId.gtz()) {
|
167
|
+
return _instance.getTreasuryInfo(productNftId).stakingFee;
|
168
|
+
} else {
|
169
|
+
return _initialStakingFee;
|
170
|
+
}
|
159
171
|
}
|
160
172
|
|
161
173
|
function getPerformanceFee()
|
@@ -164,7 +176,12 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
164
176
|
override
|
165
177
|
returns (Fee memory performanceFee)
|
166
178
|
{
|
167
|
-
|
179
|
+
NftId productNftId = _instance.getProductNftId(getNftId());
|
180
|
+
if (productNftId.gtz()) {
|
181
|
+
return _instance.getTreasuryInfo(productNftId).performanceFee;
|
182
|
+
} else {
|
183
|
+
return _initialPerformanceFee;
|
184
|
+
}
|
168
185
|
}
|
169
186
|
|
170
187
|
// from registerable
|
@@ -1,31 +1,84 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {IRisk} from "../instance/module/risk/IRisk.sol";
|
5
|
+
import {ITreasury} from "../instance/module/treasury/ITreasury.sol";
|
4
6
|
import {IProductService} from "../instance/service/IProductService.sol";
|
5
7
|
import {IProductComponent} from "./IProductComponent.sol";
|
6
8
|
import {NftId} from "../types/NftId.sol";
|
7
9
|
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
10
|
+
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
11
|
+
import {StateId} from "../types/StateId.sol";
|
8
12
|
import {Timestamp} from "../types/Timestamp.sol";
|
9
13
|
import {Fee} from "../types/Fee.sol";
|
10
14
|
import {BaseComponent} from "./BaseComponent.sol";
|
11
15
|
|
12
16
|
contract Product is BaseComponent, IProductComponent {
|
13
|
-
IProductService
|
14
|
-
address
|
17
|
+
IProductService internal _productService;
|
18
|
+
address internal _pool;
|
19
|
+
Fee internal _initialPolicyFee;
|
20
|
+
Fee internal _initialProcessingFee;
|
15
21
|
|
16
22
|
constructor(
|
17
23
|
address registry,
|
18
24
|
NftId instanceNftid,
|
19
25
|
address token,
|
20
|
-
address pool
|
26
|
+
address pool,
|
27
|
+
Fee memory policyFee,
|
28
|
+
Fee memory processingFee
|
21
29
|
) BaseComponent(registry, instanceNftid, token) {
|
22
30
|
// TODO add validation
|
23
31
|
_productService = _instance.getProductService();
|
24
32
|
_pool = pool;
|
33
|
+
_initialPolicyFee = policyFee;
|
34
|
+
_initialProcessingFee = processingFee;
|
35
|
+
}
|
36
|
+
|
37
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
38
|
+
return RiskIdLib.toRiskId(riskName);
|
39
|
+
}
|
40
|
+
|
41
|
+
function _createRisk(
|
42
|
+
RiskId id,
|
43
|
+
bytes memory data
|
44
|
+
) internal {
|
45
|
+
_productService.createRisk(
|
46
|
+
id,
|
47
|
+
data
|
48
|
+
);
|
49
|
+
}
|
50
|
+
|
51
|
+
function _setRiskInfo(
|
52
|
+
RiskId id,
|
53
|
+
IRisk.RiskInfo memory info
|
54
|
+
) internal {
|
55
|
+
_productService.setRiskInfo(
|
56
|
+
id,
|
57
|
+
info
|
58
|
+
);
|
59
|
+
}
|
60
|
+
|
61
|
+
function _updateRiskState(
|
62
|
+
RiskId id,
|
63
|
+
StateId state
|
64
|
+
) internal {
|
65
|
+
_productService.updateRiskState(
|
66
|
+
id,
|
67
|
+
state
|
68
|
+
);
|
69
|
+
}
|
70
|
+
|
71
|
+
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
72
|
+
return _instance.getRiskInfo(id);
|
73
|
+
}
|
74
|
+
|
75
|
+
function _getRiskState(RiskId id) internal view returns (StateId state) {
|
76
|
+
return _instance.getRiskState(id);
|
25
77
|
}
|
26
78
|
|
27
79
|
function _createApplication(
|
28
80
|
address applicationOwner,
|
81
|
+
RiskId riskId,
|
29
82
|
uint256 sumInsuredAmount,
|
30
83
|
uint256 premiumAmount,
|
31
84
|
uint256 lifetime,
|
@@ -33,6 +86,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
33
86
|
) internal returns (NftId nftId) {
|
34
87
|
nftId = _productService.createApplication(
|
35
88
|
applicationOwner,
|
89
|
+
riskId,
|
36
90
|
sumInsuredAmount,
|
37
91
|
premiumAmount,
|
38
92
|
lifetime,
|
@@ -98,7 +152,12 @@ contract Product is BaseComponent, IProductComponent {
|
|
98
152
|
override
|
99
153
|
returns (Fee memory policyFee)
|
100
154
|
{
|
101
|
-
|
155
|
+
NftId productNftId = getNftId();
|
156
|
+
if (address(_instance.getTokenHandler(productNftId)) != address(0)) {
|
157
|
+
return _instance.getTreasuryInfo(productNftId).policyFee;
|
158
|
+
} else {
|
159
|
+
return _initialPolicyFee;
|
160
|
+
}
|
102
161
|
}
|
103
162
|
|
104
163
|
function getProcessingFee()
|
@@ -107,7 +166,12 @@ contract Product is BaseComponent, IProductComponent {
|
|
107
166
|
override
|
108
167
|
returns (Fee memory processingFee)
|
109
168
|
{
|
110
|
-
|
169
|
+
NftId productNftId = getNftId();
|
170
|
+
if (address(_instance.getTokenHandler(productNftId)) != address(0)) {
|
171
|
+
return _instance.getTreasuryInfo(productNftId).processingFee;
|
172
|
+
} else {
|
173
|
+
return _initialProcessingFee;
|
174
|
+
}
|
111
175
|
}
|
112
176
|
|
113
177
|
// from registerable
|
@@ -33,18 +33,17 @@ interface IInstance is
|
|
33
33
|
IAccessModule,
|
34
34
|
IPolicyModule,
|
35
35
|
IPoolModule,
|
36
|
+
IRiskModule,
|
36
37
|
IBundleModule,
|
37
38
|
IComponentModule,
|
38
39
|
ITreasuryModule,
|
39
40
|
ICompensationModule,
|
40
41
|
IInstanceBase
|
41
42
|
{
|
42
|
-
function getRegistry() external view override (
|
43
|
+
function getRegistry() external view override (IPolicyModule, IRegisterable) returns (IRegistry registry);
|
43
44
|
function getOwner() external view override (IOwnable, IAccessModule) returns(address owner);
|
44
45
|
|
45
|
-
function
|
46
|
-
|
47
|
-
function getKeyValueStore() external view override (IBundleModule, IInstanceBase) returns (IKeyValueStore keyValueStore);
|
46
|
+
function getKeyValueStore() external view override (IInstanceBase) returns (IKeyValueStore keyValueStore);
|
48
47
|
function getComponentOwnerService() external view override (IInstanceBase, IComponentModule) returns(IComponentOwnerService);
|
49
48
|
function getProductService() external view override (IInstanceBase, IBundleModule, IPolicyModule) returns(IProductService);
|
50
49
|
function getPoolService() external view override (IInstanceBase, IBundleModule, IPoolModule) returns(IPoolService);
|
@@ -53,12 +53,15 @@ contract Instance is
|
|
53
53
|
TreasuryModule()
|
54
54
|
{
|
55
55
|
initializeBundleModule(_keyValueStore);
|
56
|
+
initializeCompensationModule(_keyValueStore);
|
57
|
+
initializeComponentModule(_keyValueStore);
|
58
|
+
initializePolicyModule(_keyValueStore);
|
59
|
+
initializePoolModule(_keyValueStore);
|
60
|
+
initializeRiskModule(_keyValueStore);
|
56
61
|
}
|
57
62
|
|
58
|
-
function getRegistry() public view override (Registerable,
|
59
|
-
function getKeyValueStore() public view override (InstanceBase
|
60
|
-
|
61
|
-
function hasRole(RoleId role, address member) public view override (AccessModule, IComponentModule) returns (bool) { return super.hasRole(role, member); }
|
63
|
+
function getRegistry() public view override (Registerable, IPolicyModule) returns (IRegistry registry) { return super.getRegistry(); }
|
64
|
+
function getKeyValueStore() public view override (InstanceBase) returns (IKeyValueStore keyValueStore) { return super.getKeyValueStore(); }
|
62
65
|
|
63
66
|
function getComponentOwnerService() external view override (IComponentModule, IInstanceBase) returns(IComponentOwnerService service) { return _componentOwnerService; }
|
64
67
|
function getProductService() external view override (IBundleModule, IPolicyModule, IInstanceBase) returns(IProductService service) { return _productService; }
|
@@ -1,6 +1,9 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {Key32} from "../../types/Key32.sol";
|
5
|
+
import {StateId} from "../../types/StateId.sol";
|
6
|
+
|
4
7
|
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
5
8
|
import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
|
6
9
|
import {IProductService} from "../service/IProductService.sol";
|
@@ -8,6 +11,8 @@ import {IPoolService} from "../service/IPoolService.sol";
|
|
8
11
|
|
9
12
|
interface IInstanceBase {
|
10
13
|
function getKeyValueStore() external view returns (IKeyValueStore keyValueStore);
|
14
|
+
function updateState(Key32 key, StateId state) external;
|
15
|
+
|
11
16
|
function getComponentOwnerService() external view returns(IComponentOwnerService service);
|
12
17
|
function getProductService() external view returns(IProductService service);
|
13
18
|
function getPoolService() external view returns(IPoolService service);
|
@@ -29,9 +29,9 @@ interface IKeyValueStore is ILifecycle {
|
|
29
29
|
Blocknumber createdIn;
|
30
30
|
}
|
31
31
|
|
32
|
-
event LogInfoCreated(Key key, StateId state, address createdBy);
|
33
|
-
event LogInfoUpdated(Key key, StateId state, address updatedBy, Blocknumber lastUpdatedIn);
|
34
|
-
event LogStateUpdated(Key key, StateId stateOld, StateId stateNew, address updatedBy, Blocknumber lastUpdatedIn);
|
32
|
+
event LogInfoCreated(Key key, StateId state, address createdBy, address txOrigin);
|
33
|
+
event LogInfoUpdated(Key key, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
|
34
|
+
event LogStateUpdated(Key key, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
|
35
35
|
|
36
36
|
// generic state changing functions
|
37
37
|
function create(Key32 key, ObjectType objectType, bytes memory data) external;
|
@@ -46,4 +46,5 @@ interface IKeyValueStore is ILifecycle {
|
|
46
46
|
function getState(Key32 key) external view returns (StateId state);
|
47
47
|
|
48
48
|
function toKey32(ObjectType objectType, KeyId id) external pure returns(Key32);
|
49
|
+
function toKey(Key32 key32) external pure returns(Key memory key);
|
49
50
|
}
|
@@ -3,11 +3,11 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {Versionable} from "../../shared/Versionable.sol";
|
5
5
|
import {Registerable} from "../../shared/Registerable.sol";
|
6
|
-
// import {IRegistry} from "../registry/IRegistry.sol";
|
7
6
|
|
8
|
-
// import {IInstance} from "./IInstance.sol";
|
9
7
|
import {ObjectType, INSTANCE} from "../../types/ObjectType.sol";
|
8
|
+
import {Key32} from "../../types/Key32.sol";
|
10
9
|
import {NftId} from "../../types/NftId.sol";
|
10
|
+
import {StateId} from "../../types/StateId.sol";
|
11
11
|
import {Version, VersionPart, VersionLib} from "../../types/Version.sol";
|
12
12
|
|
13
13
|
import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
|
@@ -46,6 +46,10 @@ abstract contract InstanceBase is
|
|
46
46
|
|
47
47
|
function getKeyValueStore() public view virtual override returns (IKeyValueStore keyValueStore) { return _keyValueStore; }
|
48
48
|
|
49
|
+
function updateState(Key32 key, StateId state) external override {
|
50
|
+
_keyValueStore.updateState(key, state);
|
51
|
+
}
|
52
|
+
|
49
53
|
// from versionable
|
50
54
|
function getVersion()
|
51
55
|
public
|
@@ -54,7 +54,8 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
|
|
54
54
|
// set data
|
55
55
|
_value[key32].data = data;
|
56
56
|
|
57
|
-
|
57
|
+
// solhint-disable-next-line avoid-tx-origin
|
58
|
+
emit LogInfoCreated(toKey(key32), initialState, createdBy, tx.origin);
|
58
59
|
}
|
59
60
|
|
60
61
|
function update(Key32 key32, StateId state, bytes memory data)
|
@@ -78,8 +79,10 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
|
|
78
79
|
|
79
80
|
// create log entries
|
80
81
|
Key memory key = toKey(key32);
|
81
|
-
|
82
|
-
emit
|
82
|
+
// solhint-disable-next-line avoid-tx-origin
|
83
|
+
emit LogStateUpdated(key, state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
|
84
|
+
// solhint-disable-next-line avoid-tx-origin
|
85
|
+
emit LogInfoUpdated(key, state, updatedBy, tx.origin, lastUpdatedIn);
|
83
86
|
}
|
84
87
|
|
85
88
|
function updateData(Key32 key32, bytes memory data)
|
@@ -101,7 +104,8 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
|
|
101
104
|
|
102
105
|
// create log entry
|
103
106
|
Key memory key = toKey(key32);
|
104
|
-
|
107
|
+
// solhint-disable-next-line avoid-tx-origin
|
108
|
+
emit LogInfoUpdated(key, state, updatedBy, tx.origin, lastUpdatedIn);
|
105
109
|
}
|
106
110
|
|
107
111
|
function updateState(Key32 key32, StateId state)
|
@@ -122,7 +126,8 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
|
|
122
126
|
|
123
127
|
// create log entry
|
124
128
|
Key memory key = toKey(key32);
|
125
|
-
|
129
|
+
// solhint-disable-next-line avoid-tx-origin
|
130
|
+
emit LogStateUpdated(key, state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
|
126
131
|
}
|
127
132
|
|
128
133
|
function exists(Key32 key32) public view returns (bool) {
|
@@ -145,11 +150,11 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
|
|
145
150
|
return _value[key32].metadata.state;
|
146
151
|
}
|
147
152
|
|
148
|
-
function toKey32(ObjectType objectType, KeyId id) external pure returns(Key32) {
|
153
|
+
function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
|
149
154
|
return Key32Lib.toKey32(objectType, id);
|
150
155
|
}
|
151
156
|
|
152
|
-
function toKey(Key32 key32) public pure returns (Key memory key) {
|
157
|
+
function toKey(Key32 key32) public pure override returns (Key memory key) {
|
153
158
|
(ObjectType objectType, KeyId id) = key32.toKey();
|
154
159
|
return Key(objectType, id);
|
155
160
|
}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {NftId} from "../../types/NftId.sol";
|
5
|
-
import {ObjectType,
|
5
|
+
import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK} from "../../types/ObjectType.sol";
|
6
6
|
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
|
7
7
|
import {ILifecycle} from "./ILifecycle.sol";
|
8
8
|
|
@@ -14,12 +14,10 @@ contract Lifecycle is ILifecycle {
|
|
14
14
|
private _isValidTransition;
|
15
15
|
|
16
16
|
constructor() {
|
17
|
-
_setupComponentLifecycle(PRODUCT());
|
18
|
-
_setupComponentLifecycle(ORACLE());
|
19
|
-
_setupComponentLifecycle(POOL());
|
20
|
-
|
21
17
|
_setupBundleLifecycle();
|
18
|
+
_setupComponentLifecycle();
|
22
19
|
_setupPolicyLifecycle();
|
20
|
+
_setupRiskLifecycle();
|
23
21
|
}
|
24
22
|
|
25
23
|
function hasLifecycle(
|
@@ -70,11 +68,11 @@ contract Lifecycle is ILifecycle {
|
|
70
68
|
return _isValidTransition[objectType][fromId][toId];
|
71
69
|
}
|
72
70
|
|
73
|
-
function _setupComponentLifecycle(
|
74
|
-
_initialState[
|
75
|
-
_isValidTransition[
|
76
|
-
_isValidTransition[
|
77
|
-
_isValidTransition[
|
71
|
+
function _setupComponentLifecycle() internal {
|
72
|
+
_initialState[COMPONENT()] = ACTIVE();
|
73
|
+
_isValidTransition[COMPONENT()][ACTIVE()][PAUSED()] = true;
|
74
|
+
_isValidTransition[COMPONENT()][PAUSED()][ACTIVE()] = true;
|
75
|
+
_isValidTransition[COMPONENT()][PAUSED()][ARCHIVED()] = true;
|
78
76
|
}
|
79
77
|
|
80
78
|
function _setupBundleLifecycle() internal {
|
@@ -92,4 +90,11 @@ contract Lifecycle is ILifecycle {
|
|
92
90
|
_isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
|
93
91
|
_isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
|
94
92
|
}
|
93
|
+
|
94
|
+
function _setupRiskLifecycle() internal {
|
95
|
+
_initialState[RISK()] = ACTIVE();
|
96
|
+
_isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
|
97
|
+
_isValidTransition[RISK()][PAUSED()][ACTIVE()] = true;
|
98
|
+
_isValidTransition[RISK()][PAUSED()][ARCHIVED()] = true;
|
99
|
+
}
|
95
100
|
}
|
@@ -16,37 +16,38 @@ import {IKeyValueStore} from "./IKeyValueStore.sol";
|
|
16
16
|
abstract contract ModuleBase {
|
17
17
|
|
18
18
|
IKeyValueStore private _store;
|
19
|
-
ObjectType private _type;
|
20
19
|
|
21
|
-
function _initialize(IKeyValueStore keyValueStore
|
20
|
+
function _initialize(IKeyValueStore keyValueStore) internal {
|
22
21
|
_store = keyValueStore;
|
23
|
-
_type = objectType;
|
24
22
|
}
|
25
23
|
|
26
|
-
function _create(
|
24
|
+
function _create(ObjectType objectType, Key32 key, bytes memory data) internal {
|
27
25
|
_store.create(
|
28
|
-
|
29
|
-
|
26
|
+
key,
|
27
|
+
objectType,
|
30
28
|
data);
|
31
29
|
}
|
32
30
|
|
33
|
-
function
|
34
|
-
_store.
|
31
|
+
function _create(ObjectType objectType, NftId nftId, bytes memory data) internal {
|
32
|
+
_store.create(
|
33
|
+
nftId.toKey32(objectType),
|
34
|
+
objectType,
|
35
|
+
data);
|
35
36
|
}
|
36
37
|
|
37
|
-
function
|
38
|
-
_store.
|
38
|
+
function _updateData(ObjectType objectType, NftId nftId, bytes memory data) internal {
|
39
|
+
_store.updateData(nftId.toKey32(objectType), data);
|
39
40
|
}
|
40
41
|
|
41
|
-
function
|
42
|
-
|
42
|
+
function _updateState(ObjectType objectType, NftId nftId, StateId state) internal {
|
43
|
+
_store.updateState(nftId.toKey32(objectType), state);
|
43
44
|
}
|
44
45
|
|
45
|
-
function
|
46
|
-
return _store.
|
46
|
+
function _getData(ObjectType objectType, NftId nftId) internal view returns(bytes memory data) {
|
47
|
+
return _store.getData(nftId.toKey32(objectType));
|
47
48
|
}
|
48
49
|
|
49
|
-
function
|
50
|
-
return nftId.toKey32(
|
51
|
-
}
|
50
|
+
function _getState(ObjectType objectType, NftId nftId) internal view returns(StateId) {
|
51
|
+
return _store.getState(nftId.toKey32(objectType));
|
52
|
+
}
|
52
53
|
}
|