@etherisc/gif-next 0.0.2-fc8b370-882 → 0.0.2-fe34d97-357
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 +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
|
}
|