@etherisc/gif-next 0.0.2-d3ee0cc-268 → 0.0.2-d408403-475
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 +38 -11
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +405 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +340 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +131 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +109 -18
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +194 -3
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +160 -21
- 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 +592 -451
- 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 +735 -506
- 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 +50 -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 +50 -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 +55 -54
- 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 +56 -55
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +22 -93
- 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 +22 -93
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensation.json → distribution/IDistribution.sol/IDistribution.json} +2 -2
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensationModule.json → distribution/IDistribution.sol/IDistributionModule.json} +2 -2
- 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 +61 -38
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +61 -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 +104 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +126 -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 +209 -231
- 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 +209 -231
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +55 -15
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +420 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +325 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +64 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +160 -7
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +84 -12
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +216 -31
- 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/TestDistribution.sol/TestDistribution.dbg.json +4 -0
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +405 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +194 -3
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +209 -27
- 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/TestRoleId.sol/TestRoleId.json +38 -4
- 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/Fee.sol/FeeLib.json +50 -11
- 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/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
- 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 +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
- 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/Distribution.sol +132 -0
- package/contracts/components/IDistributionComponent.sol +48 -0
- package/contracts/components/IPoolComponent.sol +14 -0
- package/contracts/components/IProductComponent.sol +24 -5
- package/contracts/components/Pool.sol +64 -3
- package/contracts/components/Product.sol +123 -13
- package/contracts/instance/IInstance.sol +7 -6
- package/contracts/instance/Instance.sol +12 -6
- package/contracts/instance/base/IInstanceBase.sol +8 -0
- package/contracts/instance/base/IKeyValueStore.sol +4 -3
- package/contracts/instance/base/InstanceBase.sol +13 -2
- package/contracts/instance/base/KeyValueStore.sol +12 -7
- package/contracts/instance/base/Lifecycle.sol +15 -10
- package/contracts/instance/base/ModuleBase.sol +22 -17
- package/contracts/instance/module/access/Access.sol +6 -6
- package/contracts/instance/module/bundle/BundleModule.sol +10 -12
- package/contracts/instance/module/bundle/IBundle.sol +6 -11
- package/contracts/instance/module/component/ComponentModule.sol +29 -54
- package/contracts/instance/module/component/IComponent.sol +5 -30
- package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
- package/contracts/instance/module/distribution/IDistribution.sol +10 -0
- package/contracts/instance/module/policy/IPolicy.sol +12 -9
- package/contracts/instance/module/policy/PolicyModule.sol +35 -20
- 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 +18 -2
- package/contracts/instance/module/risk/RiskModule.sol +56 -2
- package/contracts/instance/module/treasury/ITreasury.sol +29 -50
- package/contracts/instance/module/treasury/TreasuryModule.sol +71 -85
- package/contracts/instance/service/ComponentOwnerService.sol +29 -42
- package/contracts/instance/service/DistributionService.sol +59 -0
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPoolService.sol +7 -0
- package/contracts/instance/service/IProductService.sol +56 -7
- package/contracts/instance/service/PoolService.sol +30 -4
- package/contracts/instance/service/ProductService.sol +230 -75
- package/contracts/registry/Registry.sol +3 -2
- package/contracts/test/TestDistribution.sol +21 -0
- package/contracts/test/TestPool.sol +5 -2
- package/contracts/test/TestProduct.sol +35 -7
- package/contracts/test/TestRoleId.sol +2 -2
- package/contracts/types/Fee.sol +8 -3
- package/contracts/types/ObjectType.sol +24 -8
- package/contracts/types/ReferralId.sol +48 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +12 -10
- package/package.json +1 -1
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
@@ -0,0 +1,17 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IDistributionModule} from "./IDistribution.sol";
|
5
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
6
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
7
|
+
|
8
|
+
contract DistributionModule is
|
9
|
+
ModuleBase,
|
10
|
+
IDistributionModule
|
11
|
+
{
|
12
|
+
|
13
|
+
function initializeDistributionModule(IKeyValueStore keyValueStore) internal {
|
14
|
+
_initialize(keyValueStore);
|
15
|
+
}
|
16
|
+
|
17
|
+
}
|
@@ -5,42 +5,45 @@ import {IRegistry} from "../../../registry/IRegistry.sol";
|
|
5
5
|
import {IInstance} from "../../IInstance.sol";
|
6
6
|
import {IProductService} from "../../service/IProductService.sol";
|
7
7
|
import {NftId} from "../../../types/NftId.sol";
|
8
|
+
import {ReferralId} from "../../../types/ReferralId.sol";
|
9
|
+
import {RiskId} from "../../../types/RiskId.sol";
|
8
10
|
import {StateId} from "../../../types/StateId.sol";
|
9
11
|
import {Timestamp} from "../../../types/Timestamp.sol";
|
10
|
-
import {Blocknumber} from "../../../types/Blocknumber.sol";
|
11
12
|
|
12
13
|
// TODO check if there is value to introuce IContract and let IPolicy derive from IContract
|
13
14
|
interface IPolicy {
|
14
15
|
struct PolicyInfo {
|
15
|
-
NftId nftId;
|
16
16
|
NftId productNftId;
|
17
17
|
NftId bundleNftId;
|
18
|
+
ReferralId referralId;
|
18
19
|
address beneficiary;
|
19
|
-
|
20
|
+
RiskId riskId;
|
20
21
|
uint256 sumInsuredAmount;
|
21
22
|
uint256 premiumAmount;
|
22
23
|
uint256 premiumPaidAmount;
|
23
24
|
uint256 lifetime;
|
24
|
-
bytes
|
25
|
-
|
25
|
+
bytes applicationData;
|
26
|
+
bytes policyData;
|
26
27
|
Timestamp activatedAt; // time of underwriting
|
27
28
|
Timestamp expiredAt; // no new claims (activatedAt + lifetime)
|
28
29
|
Timestamp closedAt; // no locked capital
|
29
|
-
Blocknumber updatedIn; // write log entries in a way to support backtracking of all state changes
|
30
30
|
}
|
31
31
|
}
|
32
32
|
|
33
33
|
interface IPolicyModule is IPolicy {
|
34
|
-
function
|
35
|
-
NftId productNftId,
|
34
|
+
function createPolicyInfo(
|
36
35
|
NftId policyNftId,
|
36
|
+
NftId productNftId,
|
37
|
+
ReferralId referralId,
|
38
|
+
RiskId riskId,
|
37
39
|
uint256 sumInsuredAmount,
|
38
40
|
uint256 premiumAmount,
|
39
41
|
uint256 lifetime,
|
40
42
|
NftId bundleNftId
|
41
43
|
) external;
|
42
44
|
|
43
|
-
function setPolicyInfo(PolicyInfo memory
|
45
|
+
function setPolicyInfo(NftId policyNftId, PolicyInfo memory info) external;
|
46
|
+
function updatePolicyState(NftId nftId, StateId state) external;
|
44
47
|
|
45
48
|
// function underwrite(NftId nftId) external;
|
46
49
|
|
@@ -6,15 +6,19 @@ import {IRegistry} from "../../../registry/IRegistry.sol";
|
|
6
6
|
import {IProductService} from "../../service/IProductService.sol";
|
7
7
|
import {IPolicy, IPolicyModule} from "./IPolicy.sol";
|
8
8
|
import {ObjectType, POLICY} from "../../../types/ObjectType.sol";
|
9
|
-
import {APPLIED, ACTIVE, UNDERWRITTEN} from "../../../types/StateId.sol";
|
10
9
|
import {NftId, NftIdLib} from "../../../types/NftId.sol";
|
10
|
+
import {ReferralId} from "../../../types/ReferralId.sol";
|
11
|
+
import {RiskId} from "../../../types/RiskId.sol";
|
12
|
+
import {StateId} from "../../../types/StateId.sol";
|
11
13
|
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
|
12
|
-
import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
|
13
14
|
|
14
|
-
|
15
|
-
|
15
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
16
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
16
17
|
|
17
|
-
|
18
|
+
abstract contract PolicyModule is
|
19
|
+
ModuleBase,
|
20
|
+
IPolicyModule
|
21
|
+
{
|
18
22
|
|
19
23
|
// TODO find a better place to avoid dupliation
|
20
24
|
modifier onlyProductService2() {
|
@@ -25,9 +29,15 @@ abstract contract PolicyModule is IPolicyModule {
|
|
25
29
|
_;
|
26
30
|
}
|
27
31
|
|
28
|
-
function
|
29
|
-
|
32
|
+
function initializePolicyModule(IKeyValueStore keyValueStore) internal {
|
33
|
+
_initialize(keyValueStore);
|
34
|
+
}
|
35
|
+
|
36
|
+
function createPolicyInfo(
|
30
37
|
NftId policyNftId,
|
38
|
+
NftId productNftId,
|
39
|
+
ReferralId referralId,
|
40
|
+
RiskId riskId,
|
31
41
|
uint256 sumInsuredAmount,
|
32
42
|
uint256 premiumAmount,
|
33
43
|
uint256 lifetime,
|
@@ -37,40 +47,45 @@ abstract contract PolicyModule is IPolicyModule {
|
|
37
47
|
onlyProductService2
|
38
48
|
override
|
39
49
|
{
|
40
|
-
|
41
|
-
policyNftId,
|
50
|
+
PolicyInfo memory info = PolicyInfo(
|
42
51
|
productNftId,
|
43
52
|
bundleNftId,
|
53
|
+
referralId,
|
44
54
|
address(0), // beneficiary = policy nft holder
|
45
|
-
|
46
|
-
APPLIED(),
|
55
|
+
riskId,
|
47
56
|
sumInsuredAmount,
|
48
57
|
premiumAmount,
|
49
58
|
0, // premium paid amount
|
50
59
|
lifetime,
|
51
|
-
"", //
|
52
|
-
|
60
|
+
"", // applicationData
|
61
|
+
"", // policyData
|
53
62
|
zeroTimestamp(), // activatedAt
|
54
63
|
zeroTimestamp(), // expiredAt
|
55
|
-
zeroTimestamp()
|
56
|
-
blockNumber() // updatedIn
|
64
|
+
zeroTimestamp() // closedAt
|
57
65
|
);
|
58
66
|
|
59
|
-
|
67
|
+
_create(POLICY(), policyNftId, abi.encode(info));
|
60
68
|
}
|
61
69
|
|
62
|
-
function setPolicyInfo(PolicyInfo memory
|
70
|
+
function setPolicyInfo(NftId policyNftId, PolicyInfo memory info)
|
63
71
|
external
|
64
72
|
override
|
65
73
|
onlyProductService2
|
66
74
|
{
|
67
|
-
|
75
|
+
_updateData(POLICY(), policyNftId, abi.encode(info));
|
76
|
+
}
|
77
|
+
|
78
|
+
function updatePolicyState(NftId bundleNftId, StateId state)
|
79
|
+
external
|
80
|
+
override
|
81
|
+
onlyProductService2
|
82
|
+
{
|
83
|
+
_updateState(POLICY(), bundleNftId, state);
|
68
84
|
}
|
69
85
|
|
70
86
|
function getPolicyInfo(
|
71
87
|
NftId nftId
|
72
88
|
) external view returns (PolicyInfo memory info) {
|
73
|
-
return
|
89
|
+
return abi.decode(_getData(POLICY(), nftId), (PolicyInfo));
|
74
90
|
}
|
75
|
-
|
76
91
|
}
|
@@ -8,18 +8,22 @@ import {IPolicy, IPolicyModule} from "../../module/policy/IPolicy.sol";
|
|
8
8
|
import {ITreasuryModule} from "../../module/treasury/ITreasury.sol";
|
9
9
|
|
10
10
|
import {NftId} from "../../../types/NftId.sol";
|
11
|
+
import {POOL} from "../../../types/ObjectType.sol";
|
11
12
|
import {LibNftIdSet} from "../../../types/NftIdSet.sol";
|
12
13
|
import {StateId, APPLIED} from "../../../types/StateId.sol";
|
13
14
|
import {UFixed} from "../../../types/UFixed.sol";
|
14
15
|
|
16
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
15
17
|
import {IPoolModule} from "./IPoolModule.sol";
|
18
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
16
19
|
|
17
20
|
abstract contract PoolModule is
|
21
|
+
ModuleBase,
|
18
22
|
IPoolModule
|
19
23
|
{
|
20
24
|
using LibNftIdSet for LibNftIdSet.Set;
|
21
25
|
|
22
|
-
mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
|
26
|
+
// mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
|
23
27
|
mapping(NftId poolNftId => LibNftIdSet.Set bundles) private _bundlesForPool;
|
24
28
|
|
25
29
|
modifier poolServiceCallingPool() {
|
@@ -30,6 +34,10 @@ abstract contract PoolModule is
|
|
30
34
|
_;
|
31
35
|
}
|
32
36
|
|
37
|
+
function initializePoolModule(IKeyValueStore keyValueStore) internal {
|
38
|
+
_initialize(keyValueStore);
|
39
|
+
}
|
40
|
+
|
33
41
|
function registerPool(
|
34
42
|
NftId nftId,
|
35
43
|
bool isVerifying,
|
@@ -38,17 +46,12 @@ abstract contract PoolModule is
|
|
38
46
|
public
|
39
47
|
override
|
40
48
|
{
|
41
|
-
|
42
|
-
_poolInfo[nftId].nftId.eqz(),
|
43
|
-
"ERROR:PL-010:ALREADY_CREATED");
|
44
|
-
|
45
|
-
_poolInfo[nftId] = PoolInfo(
|
46
|
-
nftId,
|
49
|
+
PoolInfo memory info = PoolInfo(
|
47
50
|
isVerifying,
|
48
51
|
collateralizationRate
|
49
52
|
);
|
50
53
|
|
51
|
-
|
54
|
+
_create(POOL(), nftId, abi.encode(info));
|
52
55
|
}
|
53
56
|
|
54
57
|
function addBundleToPool(
|
@@ -71,7 +74,7 @@ abstract contract PoolModule is
|
|
71
74
|
function getPoolInfo(
|
72
75
|
NftId nftId
|
73
76
|
) external view override returns (PoolInfo memory info) {
|
74
|
-
|
77
|
+
return abi.decode(_getData(POOL(), nftId), (PoolInfo));
|
75
78
|
}
|
76
79
|
|
77
80
|
|
@@ -1,10 +1,26 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
|
4
|
+
import {NftId} from "../../../types/NftId.sol";
|
5
|
+
import {RiskId} from "../../../types/RiskId.sol";
|
6
|
+
import {StateId} from "../../../types/StateId.sol";
|
5
7
|
|
8
|
+
interface IRisk {
|
9
|
+
struct RiskInfo {
|
10
|
+
NftId productNftId;
|
11
|
+
bytes data;
|
12
|
+
}
|
6
13
|
}
|
7
14
|
|
8
15
|
interface IRiskModule is IRisk {
|
9
|
-
|
16
|
+
function createRisk(
|
17
|
+
RiskId riskId,
|
18
|
+
NftId productNftId,
|
19
|
+
bytes memory data
|
20
|
+
) external;
|
21
|
+
|
22
|
+
function setRiskInfo(RiskId riskId, RiskInfo memory info) external;
|
23
|
+
function updateRiskState(RiskId riskId, StateId state) external;
|
24
|
+
|
25
|
+
function getRiskInfo(RiskId riskId) external view returns (RiskInfo memory info);
|
10
26
|
}
|
@@ -1,8 +1,62 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {NftId} from "../../../types/NftId.sol";
|
5
|
+
import {RISK} from "../../../types/ObjectType.sol";
|
6
|
+
import {RiskId} from "../../../types/RiskId.sol";
|
7
|
+
import {StateId} from "../../../types/StateId.sol";
|
8
|
+
|
9
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
4
10
|
import {IRiskModule} from "./IRisk.sol";
|
11
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
12
|
+
|
13
|
+
contract RiskModule is
|
14
|
+
ModuleBase,
|
15
|
+
IRiskModule
|
16
|
+
{
|
17
|
+
function initializeRiskModule(IKeyValueStore keyValueStore) internal {
|
18
|
+
_initialize(keyValueStore);
|
19
|
+
}
|
20
|
+
|
21
|
+
function createRisk(
|
22
|
+
RiskId riskId,
|
23
|
+
NftId productNftId,
|
24
|
+
bytes memory data
|
25
|
+
) external override {
|
26
|
+
RiskInfo memory info = RiskInfo(
|
27
|
+
productNftId,
|
28
|
+
data
|
29
|
+
);
|
30
|
+
|
31
|
+
_create(RISK(), riskId.toKey32(), abi.encode(info));
|
32
|
+
}
|
33
|
+
|
34
|
+
function setRiskInfo(
|
35
|
+
RiskId riskId,
|
36
|
+
RiskInfo memory info
|
37
|
+
)
|
38
|
+
external
|
39
|
+
override
|
40
|
+
{
|
41
|
+
|
42
|
+
}
|
43
|
+
|
44
|
+
function updateRiskState(
|
45
|
+
RiskId riskId,
|
46
|
+
StateId state
|
47
|
+
)
|
48
|
+
external
|
49
|
+
override
|
50
|
+
{
|
51
|
+
|
52
|
+
}
|
53
|
+
|
54
|
+
function getRiskInfo(RiskId riskId)
|
55
|
+
external
|
56
|
+
view
|
57
|
+
override
|
58
|
+
returns (RiskInfo memory info)
|
59
|
+
{
|
5
60
|
|
6
|
-
|
7
|
-
|
61
|
+
}
|
8
62
|
}
|
@@ -2,6 +2,9 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
|
6
|
+
import {IPoolComponent} from "../../../components/IPoolComponent.sol";
|
7
|
+
import {IProductComponent} from "../../../components/IProductComponent.sol";
|
5
8
|
|
6
9
|
import {NftId} from "../../../types/NftId.sol";
|
7
10
|
import {UFixed} from "../../../types/UFixed.sol";
|
@@ -13,73 +16,49 @@ interface ITreasury {
|
|
13
16
|
// TODO add events
|
14
17
|
// TODO add errors
|
15
18
|
|
16
|
-
|
17
|
-
|
18
|
-
NftId distributorNftId;
|
19
|
+
// treasury info is linked to product nft id
|
20
|
+
struct TreasuryInfo {
|
19
21
|
NftId poolNftId;
|
22
|
+
NftId distributionNftId;
|
20
23
|
IERC20Metadata token;
|
21
|
-
|
22
|
-
Fee
|
23
|
-
Fee
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
NftId distributorNftId;
|
28
|
-
address wallet;
|
29
|
-
Fee commissionFee;
|
30
|
-
}
|
31
|
-
|
32
|
-
struct PoolSetup {
|
33
|
-
NftId poolNftId;
|
34
|
-
address wallet;
|
35
|
-
Fee stakingFee;
|
36
|
-
Fee performanceFee;
|
24
|
+
Fee productFee; // product fee on net premium
|
25
|
+
Fee processingFee; // product fee on payout amounts
|
26
|
+
Fee poolFee; // pool fee on net premium
|
27
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
28
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
29
|
+
Fee distributionFee; // default distribution fee (no referral id)
|
37
30
|
}
|
38
31
|
}
|
39
32
|
|
40
33
|
interface ITreasuryModule is ITreasury {
|
41
34
|
|
42
|
-
function
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
IERC20Metadata token,
|
47
|
-
address wallet,
|
48
|
-
Fee memory policyFee,
|
49
|
-
Fee memory processingFee
|
35
|
+
function registerProductSetup(
|
36
|
+
IProductComponent product,
|
37
|
+
IPoolComponent pool,
|
38
|
+
IDistributionComponent distribution
|
50
39
|
) external;
|
51
40
|
|
52
|
-
function
|
41
|
+
function setTreasuryInfo(
|
53
42
|
NftId productNftId,
|
54
|
-
|
55
|
-
Fee memory processingFee
|
43
|
+
TreasuryInfo memory info
|
56
44
|
) external;
|
57
45
|
|
58
|
-
function
|
59
|
-
NftId
|
60
|
-
|
61
|
-
Fee memory stakingFee,
|
62
|
-
Fee memory performanceFee
|
63
|
-
) external;
|
46
|
+
function hasTreasuryInfo(
|
47
|
+
NftId productNftId
|
48
|
+
) external view returns (bool hasInfo);
|
64
49
|
|
65
|
-
function
|
66
|
-
NftId
|
67
|
-
|
68
|
-
|
69
|
-
|
50
|
+
function getTreasuryInfo(
|
51
|
+
NftId productNftId
|
52
|
+
) external view returns (TreasuryInfo memory info);
|
53
|
+
|
54
|
+
function getProductNftId(
|
55
|
+
NftId componentNftId
|
56
|
+
) external view returns (NftId productNftId);
|
70
57
|
|
71
58
|
function getTokenHandler(
|
72
59
|
NftId componentNftId
|
73
60
|
) external view returns (TokenHandler tokenHandler);
|
74
61
|
|
75
|
-
function getProductSetup(
|
76
|
-
NftId productNftId
|
77
|
-
) external view returns (ProductSetup memory setup);
|
78
|
-
|
79
|
-
function getPoolSetup(
|
80
|
-
NftId poolNftId
|
81
|
-
) external view returns (PoolSetup memory setup);
|
82
|
-
|
83
62
|
function calculateFeeAmount(
|
84
63
|
uint256 amount,
|
85
64
|
Fee memory fee
|
@@ -90,7 +69,7 @@ interface ITreasuryModule is ITreasury {
|
|
90
69
|
uint256 fixedFee
|
91
70
|
) external pure returns (Fee memory fee);
|
92
71
|
|
93
|
-
function getZeroFee() external
|
72
|
+
function getZeroFee() external view returns (Fee memory fee);
|
94
73
|
|
95
74
|
function getUFixed(
|
96
75
|
uint256 a
|
@@ -2,102 +2,88 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
|
6
|
+
import {IPoolComponent} from "../../../components/IPoolComponent.sol";
|
7
|
+
import {IProductComponent} from "../../../components/IProductComponent.sol";
|
5
8
|
|
6
9
|
import {NftId} from "../../../types/NftId.sol";
|
10
|
+
import {TREASURY} from "../../../types/ObjectType.sol";
|
7
11
|
import {Fee, FeeLib} from "../../../types/Fee.sol";
|
8
12
|
import {UFixed, UFixedMathLib} from "../../../types/UFixed.sol";
|
9
13
|
import {TokenHandler} from "./TokenHandler.sol";
|
14
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
10
15
|
import {ITreasuryModule} from "./ITreasury.sol";
|
16
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
17
|
+
|
18
|
+
abstract contract TreasuryModule is
|
19
|
+
ModuleBase,
|
20
|
+
ITreasuryModule
|
21
|
+
{
|
22
|
+
// relation of distributor and pool nft map to product nft
|
23
|
+
mapping(NftId componentNftId => NftId productNftId) internal _productNft;
|
24
|
+
// relation of component nft to token hanlder
|
25
|
+
mapping(NftId componentNftId => TokenHandler tokenHandler) internal _tokenHandler;
|
26
|
+
Fee internal _zeroFee;
|
27
|
+
|
28
|
+
|
29
|
+
function initializeTreasuryModule(IKeyValueStore keyValueStore) internal {
|
30
|
+
_initialize(keyValueStore);
|
31
|
+
_zeroFee = FeeLib.zeroFee();
|
32
|
+
}
|
11
33
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
mapping(NftId poolNftId => PoolSetup setup) private _poolSetup;
|
17
|
-
mapping(NftId componentNftId => TokenHandler tokenHanlder) _tokenHandler;
|
18
|
-
|
19
|
-
function registerProduct(
|
20
|
-
NftId productNftId,
|
21
|
-
NftId distributorNftId,
|
22
|
-
NftId poolNftId,
|
23
|
-
IERC20Metadata token,
|
24
|
-
address wallet,
|
25
|
-
Fee memory policyFee,
|
26
|
-
Fee memory processingFee
|
34
|
+
function registerProductSetup(
|
35
|
+
IProductComponent product,
|
36
|
+
IPoolComponent pool,
|
37
|
+
IDistributionComponent distribution
|
27
38
|
) external override // TODO add authz (only component module)
|
28
39
|
{
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
40
|
+
NftId productNftId = product.getNftId();
|
41
|
+
NftId poolNftId = pool.getNftId();
|
42
|
+
NftId distributionNftId = distribution.getNftId();
|
43
|
+
|
44
|
+
require(productNftId.gtz(), "ERROR:TRS-010:PRODUCT_UNDEFINED");
|
45
|
+
require(poolNftId.gtz(), "ERROR:TRS-011:POOL_UNDEFINED");
|
46
|
+
|
47
|
+
require(address(_tokenHandler[productNftId]) == address(0), "ERROR:TRS-012:TOKEN_HANDLER_ALREADY_REGISTERED");
|
48
|
+
require(_productNft[poolNftId].eqz(), "ERROR:TRS-013:POOL_ALREADY_LINKED");
|
49
|
+
require(_productNft[distributionNftId].eqz(), "ERROR:TRS-014:COMPENSATION_ALREADY_LINKED");
|
33
50
|
|
34
51
|
// deploy product specific handler contract
|
35
|
-
|
36
|
-
_tokenHandler[productNftId] =
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
_productSetup[productNftId] = ProductSetup(
|
42
|
-
productNftId,
|
43
|
-
distributorNftId,
|
52
|
+
IERC20Metadata token = product.getToken();
|
53
|
+
_tokenHandler[productNftId] = new TokenHandler(productNftId, address(token));
|
54
|
+
_productNft[distributionNftId] = productNftId;
|
55
|
+
_productNft[poolNftId] = productNftId;
|
56
|
+
|
57
|
+
TreasuryInfo memory info = TreasuryInfo(
|
44
58
|
poolNftId,
|
59
|
+
distributionNftId,
|
45
60
|
token,
|
46
|
-
|
47
|
-
|
48
|
-
|
61
|
+
product.getProductFee(),
|
62
|
+
product.getProcessingFee(),
|
63
|
+
pool.getPoolFee(),
|
64
|
+
pool.getStakingFee(),
|
65
|
+
pool.getPerformanceFee(),
|
66
|
+
distribution.getDistributionFee()
|
49
67
|
);
|
50
68
|
|
51
|
-
|
69
|
+
_create(TREASURY(), productNftId, abi.encode(info));
|
52
70
|
}
|
53
71
|
|
54
|
-
function
|
72
|
+
function setTreasuryInfo(
|
55
73
|
NftId productNftId,
|
56
|
-
|
57
|
-
|
58
|
-
|
74
|
+
TreasuryInfo memory info
|
75
|
+
)
|
76
|
+
external
|
77
|
+
// TODO add authz (only component module)
|
78
|
+
override
|
59
79
|
{
|
60
|
-
|
61
|
-
|
62
|
-
ProductSetup storage setup = _productSetup[productNftId];
|
63
|
-
setup.policyFee = policyFee;
|
64
|
-
setup.processingFee = processingFee;
|
65
|
-
|
66
|
-
// TODO add logging
|
80
|
+
_updateData(TREASURY(), productNftId, abi.encode(info));
|
67
81
|
}
|
68
82
|
|
69
|
-
function
|
70
|
-
NftId
|
71
|
-
|
72
|
-
|
73
|
-
Fee memory performanceFee
|
74
|
-
) external override // TODO add authz (only component module)
|
75
|
-
{
|
76
|
-
// TODO add validation
|
77
|
-
|
78
|
-
_poolSetup[poolNftId] = PoolSetup(
|
79
|
-
poolNftId,
|
80
|
-
wallet,
|
81
|
-
stakingFee,
|
82
|
-
performanceFee
|
83
|
-
);
|
84
|
-
|
85
|
-
// TODO add logging
|
86
|
-
}
|
87
|
-
|
88
|
-
function setPoolFees(
|
89
|
-
NftId poolNftId,
|
90
|
-
Fee memory stakingFee,
|
91
|
-
Fee memory performanceFee
|
92
|
-
) external override // TODO add authz (only component owner service)
|
93
|
-
{
|
94
|
-
// TODO add validation
|
95
|
-
|
96
|
-
PoolSetup storage setup = _poolSetup[poolNftId];
|
97
|
-
setup.stakingFee = stakingFee;
|
98
|
-
setup.performanceFee = performanceFee;
|
99
|
-
|
100
|
-
// TODO add logging
|
83
|
+
function getProductNftId(
|
84
|
+
NftId componentNftId
|
85
|
+
) external view returns (NftId productNftId) {
|
86
|
+
return _productNft[componentNftId];
|
101
87
|
}
|
102
88
|
|
103
89
|
function getTokenHandler(
|
@@ -106,23 +92,23 @@ abstract contract TreasuryModule is ITreasuryModule {
|
|
106
92
|
return _tokenHandler[componentNftId];
|
107
93
|
}
|
108
94
|
|
109
|
-
function
|
95
|
+
function hasTreasuryInfo(
|
110
96
|
NftId productNftId
|
111
|
-
)
|
112
|
-
return
|
97
|
+
) public view override returns (bool hasInfo) {
|
98
|
+
return _exists(TREASURY(), productNftId);
|
113
99
|
}
|
114
100
|
|
115
|
-
function
|
116
|
-
NftId
|
117
|
-
)
|
118
|
-
return
|
101
|
+
function getTreasuryInfo(
|
102
|
+
NftId productNftId
|
103
|
+
) public view override returns (TreasuryInfo memory info) {
|
104
|
+
return abi.decode(_getData(TREASURY(), productNftId), (TreasuryInfo));
|
119
105
|
}
|
120
106
|
|
121
107
|
function calculateFeeAmount(
|
122
108
|
uint256 amount,
|
123
109
|
Fee memory fee
|
124
110
|
) public pure override returns (uint256 feeAmount, uint256 netAmount) {
|
125
|
-
return FeeLib.calculateFee(
|
111
|
+
return FeeLib.calculateFee(fee, amount);
|
126
112
|
}
|
127
113
|
|
128
114
|
function getFee(
|
@@ -132,8 +118,8 @@ abstract contract TreasuryModule is ITreasuryModule {
|
|
132
118
|
return FeeLib.toFee(fractionalFee, fixedFee);
|
133
119
|
}
|
134
120
|
|
135
|
-
function getZeroFee() external
|
136
|
-
return
|
121
|
+
function getZeroFee() external view override returns (Fee memory fee) {
|
122
|
+
return _zeroFee;
|
137
123
|
}
|
138
124
|
|
139
125
|
function getUFixed(
|