@etherisc/gif-next 0.0.2-f30e0eb-805 → 0.0.2-f398177-971
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 +6 -83
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +47 -6
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +70 -13
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +137 -6
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +144 -13
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +161 -20
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +151 -20
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +71 -20
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +62 -21
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +310 -2004
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +101 -52
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +425 -2757
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +95 -58
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +348 -58
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +153 -207
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +38 -83
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +113 -34
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +8 -8
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +6 -6
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +6 -6
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +186 -236
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +38 -55
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +377 -182
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -39
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +713 -83
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +147 -32
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +266 -442
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +82 -107
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +111 -174
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +233 -128
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +385 -51
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +109 -282
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +210 -99
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +682 -33
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +85 -27
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +420 -160
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +104 -53
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +880 -82
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +90 -39
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +144 -57
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +28 -37
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -37
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.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/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +22 -49
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -19
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +6 -19
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +91 -28
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.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/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -19
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +106 -39
- 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/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
- 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/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +74 -19
- 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/NumberId.sol/NumberIdLib.dbg.json +1 -1
- 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/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +17 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.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/Component.sol +25 -4
- package/contracts/components/Distribution.sol +11 -6
- package/contracts/components/IComponent.sol +19 -3
- package/contracts/components/IPoolComponent.sol +8 -7
- package/contracts/components/IProductComponent.sol +5 -4
- package/contracts/components/Pool.sol +17 -14
- package/contracts/components/Product.sol +144 -62
- package/contracts/instance/BundleManager.sol +3 -4
- package/contracts/instance/IInstance.sol +32 -53
- package/contracts/instance/IInstanceService.sol +15 -14
- package/contracts/instance/Instance.sol +107 -205
- package/contracts/instance/InstanceAccessManager.sol +44 -25
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +85 -7
- package/contracts/instance/InstanceService.sol +102 -289
- package/contracts/instance/InstanceStore.sol +212 -0
- package/contracts/instance/ObjectManager.sol +1 -1
- package/contracts/instance/base/ComponentService.sol +53 -39
- package/contracts/instance/base/KeyValueStore.sol +8 -34
- package/contracts/instance/base/Lifecycle.sol +15 -4
- package/contracts/instance/module/IAccess.sol +2 -2
- package/contracts/instance/module/IBundle.sol +6 -4
- package/contracts/instance/module/IComponents.sol +7 -1
- package/contracts/instance/module/IDistribution.sol +3 -2
- package/contracts/instance/module/IPolicy.sol +13 -8
- package/contracts/instance/service/ApplicationService.sol +62 -226
- package/contracts/instance/service/BundleService.sol +172 -126
- package/contracts/instance/service/ClaimService.sol +318 -32
- package/contracts/instance/service/DistributionService.sol +71 -190
- package/contracts/instance/service/IApplicationService.sol +8 -28
- package/contracts/instance/service/IBundleService.sol +82 -26
- package/contracts/instance/service/IClaimService.sol +52 -23
- package/contracts/instance/service/IDistributionService.sol +11 -22
- package/contracts/instance/service/IPolicyService.sol +24 -16
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/IPricingService.sol +37 -0
- package/contracts/instance/service/PolicyService.sol +152 -179
- package/contracts/instance/service/PoolService.sol +239 -56
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +27 -58
- package/contracts/registry/IRegistryService.sol +2 -3
- package/contracts/registry/RegistryService.sol +24 -21
- package/contracts/registry/ReleaseManager.sol +20 -18
- package/contracts/shared/IPolicyHolder.sol +23 -9
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +6 -6
- package/contracts/shared/NftOwnable.sol +0 -2
- package/contracts/shared/PolicyHolder.sol +30 -17
- package/contracts/shared/Registerable.sol +10 -9
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +21 -7
- package/contracts/shared/TokenHandler.sol +4 -2
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +109 -0
- package/contracts/types/ClaimId.sol +25 -2
- package/contracts/types/Fee.sol +16 -8
- package/contracts/types/ObjectType.sol +9 -5
- package/contracts/types/PayoutId.sol +33 -5
- package/contracts/types/StateId.sol +6 -2
- package/contracts/types/Timestamp.sol +5 -0
- package/package.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
@@ -14,24 +14,29 @@ import {ISetup} from "../module/ISetup.sol";
|
|
14
14
|
|
15
15
|
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
16
16
|
|
17
|
+
import {Amount, AmountLib} from "../../types/Amount.sol";
|
18
|
+
import {ClaimId, ClaimIdLib} from "../../types/ClaimId.sol";
|
17
19
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
18
20
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
19
|
-
import {ObjectType, APPLICATION, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
20
|
-
import {APPLIED,
|
21
|
+
import {ObjectType, APPLICATION, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../../types/ObjectType.sol";
|
22
|
+
import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../../types/StateId.sol";
|
21
23
|
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
24
|
+
import {PayoutId, PayoutIdLib} from "../../types/PayoutId.sol";
|
22
25
|
import {StateId} from "../../types/StateId.sol";
|
26
|
+
import {VersionPart} from "../../types/Version.sol";
|
23
27
|
|
24
28
|
import {ComponentService} from "../base/ComponentService.sol";
|
25
29
|
import {IApplicationService} from "./IApplicationService.sol";
|
26
30
|
import {IBundleService} from "./IBundleService.sol";
|
31
|
+
import {IClaimService} from "./IClaimService.sol";
|
27
32
|
import {IDistributionService} from "./IDistributionService.sol";
|
28
33
|
import {InstanceReader} from "../InstanceReader.sol";
|
29
34
|
import {IPolicyService} from "./IPolicyService.sol";
|
30
35
|
import {IPoolService} from "./IPoolService.sol";
|
36
|
+
import {IPricingService} from "./IPricingService.sol";
|
31
37
|
import {IService} from "../../shared/IService.sol";
|
32
38
|
import {Service} from "../../shared/Service.sol";
|
33
39
|
|
34
|
-
|
35
40
|
contract PolicyService is
|
36
41
|
ComponentService,
|
37
42
|
IPolicyService
|
@@ -39,10 +44,12 @@ contract PolicyService is
|
|
39
44
|
using NftIdLib for NftId;
|
40
45
|
using TimestampLib for Timestamp;
|
41
46
|
|
42
|
-
IPoolService internal _poolService;
|
43
|
-
IBundleService internal _bundleService;
|
44
47
|
IApplicationService internal _applicationService;
|
48
|
+
IBundleService internal _bundleService;
|
49
|
+
IClaimService internal _claimService;
|
45
50
|
IDistributionService internal _distributionService;
|
51
|
+
IPoolService internal _poolService;
|
52
|
+
IPricingService internal _pricingService;
|
46
53
|
|
47
54
|
event LogProductServiceSender(address sender);
|
48
55
|
|
@@ -58,59 +65,31 @@ contract PolicyService is
|
|
58
65
|
address initialOwner;
|
59
66
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
60
67
|
|
61
|
-
initializeService(registryAddress, owner);
|
68
|
+
initializeService(registryAddress, address(0), owner);
|
62
69
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
70
|
+
VersionPart majorVersion = getVersion().toMajorPart();
|
71
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
72
|
+
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
73
|
+
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
74
|
+
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
75
|
+
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
76
|
+
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
67
77
|
|
68
78
|
registerInterface(type(IPolicyService).interfaceId);
|
69
79
|
}
|
70
80
|
|
71
81
|
|
72
|
-
function getDomain() public pure override
|
82
|
+
function getDomain() public pure override returns(ObjectType) {
|
73
83
|
return POLICY();
|
74
84
|
}
|
75
85
|
|
76
86
|
|
77
87
|
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
78
88
|
IRegistry.ObjectInfo memory productInfo;
|
79
|
-
(productInfo,) =
|
89
|
+
(, productInfo,) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
80
90
|
product = Product(productInfo.objectAddress);
|
81
91
|
}
|
82
92
|
|
83
|
-
function _getAndVerifyUnderwritingSetup(
|
84
|
-
IInstance instance,
|
85
|
-
InstanceReader instanceReader,
|
86
|
-
IPolicy.PolicyInfo memory policyInfo,
|
87
|
-
ISetup.ProductSetupInfo memory productSetupInfo
|
88
|
-
)
|
89
|
-
internal
|
90
|
-
view
|
91
|
-
returns (
|
92
|
-
NftId poolNftId,
|
93
|
-
NftId bundleNftId,
|
94
|
-
IBundle.BundleInfo memory bundleInfo,
|
95
|
-
uint256 collateralAmount
|
96
|
-
)
|
97
|
-
{
|
98
|
-
// check match between policy and bundle (via pool)
|
99
|
-
poolNftId = productSetupInfo.poolNftId;
|
100
|
-
bundleNftId = policyInfo.bundleNftId;
|
101
|
-
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
102
|
-
require(bundleInfo.poolNftId == poolNftId, "POLICY_BUNDLE_MISMATCH");
|
103
|
-
|
104
|
-
// calculate required collateral
|
105
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
106
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(
|
107
|
-
componentInfo.data, (IComponents.PoolInfo));
|
108
|
-
|
109
|
-
// obtain remaining return values
|
110
|
-
// TODO required collateral amount should be calculated by pool service, not policy service
|
111
|
-
collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
|
112
|
-
}
|
113
|
-
|
114
93
|
|
115
94
|
function decline(
|
116
95
|
NftId policyNftId
|
@@ -118,12 +97,12 @@ contract PolicyService is
|
|
118
97
|
external
|
119
98
|
override
|
120
99
|
{
|
121
|
-
|
100
|
+
revert();
|
122
101
|
}
|
123
102
|
|
124
103
|
|
125
104
|
/// @dev underwites application which includes the locking of the required collateral from the pool.
|
126
|
-
function
|
105
|
+
function collateralize(
|
127
106
|
NftId applicationNftId, // = policyNftId
|
128
107
|
bool requirePremiumPayment,
|
129
108
|
Timestamp activateAt
|
@@ -132,126 +111,104 @@ contract PolicyService is
|
|
132
111
|
virtual override
|
133
112
|
{
|
134
113
|
// check caller is registered product
|
135
|
-
IInstance instance;
|
136
|
-
InstanceReader instanceReader;
|
137
|
-
NftId productNftId;
|
138
|
-
{
|
139
|
-
IRegistry.ObjectInfo memory productInfo;
|
140
|
-
(productInfo, instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
141
|
-
instanceReader = instance.getInstanceReader();
|
142
|
-
productNftId = productInfo.nftId;
|
143
|
-
}
|
114
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
115
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
144
116
|
|
145
117
|
// check policy matches with calling product
|
146
|
-
IPolicy.PolicyInfo memory
|
147
|
-
|
118
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
119
|
+
if(applicationInfo.productNftId != productNftId) {
|
120
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
121
|
+
applicationNftId,
|
122
|
+
applicationInfo.productNftId,
|
123
|
+
productNftId);
|
124
|
+
}
|
148
125
|
|
149
126
|
// check policy is in state applied
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
NftId poolNftId,
|
154
|
-
NftId bundleNftId,
|
155
|
-
IBundle.BundleInfo memory bundleInfo,
|
156
|
-
uint256 collateralAmount
|
157
|
-
) = _getAndVerifyUnderwritingSetup(
|
158
|
-
instance,
|
159
|
-
instanceReader,
|
160
|
-
policyInfo,
|
161
|
-
instanceReader.getProductSetupInfo(productNftId)
|
162
|
-
);
|
127
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
128
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
129
|
+
}
|
163
130
|
|
164
|
-
StateId newPolicyState =
|
131
|
+
StateId newPolicyState = COLLATERALIZED();
|
165
132
|
|
166
133
|
// optional activation of policy
|
167
134
|
if(activateAt > zeroTimestamp()) {
|
168
135
|
newPolicyState = ACTIVE();
|
169
|
-
|
170
|
-
|
136
|
+
applicationInfo.activatedAt = activateAt;
|
137
|
+
applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
|
171
138
|
}
|
172
139
|
|
173
140
|
// lock bundle collateral
|
174
|
-
|
141
|
+
Amount netPremiumAmount = AmountLib.zero(); // > 0 if immediate premium payment
|
175
142
|
|
176
143
|
// optional collection of premium
|
177
144
|
if(requirePremiumPayment) {
|
178
145
|
netPremiumAmount = _processPremiumByTreasury(
|
179
146
|
instance,
|
180
147
|
applicationNftId,
|
181
|
-
|
148
|
+
applicationInfo.premiumAmount);
|
182
149
|
|
183
|
-
|
150
|
+
applicationInfo.premiumPaidAmount = applicationInfo.premiumPaidAmount + applicationInfo.premiumAmount;
|
184
151
|
}
|
185
152
|
|
186
|
-
//
|
187
|
-
|
188
|
-
|
189
|
-
//
|
190
|
-
//
|
191
|
-
// retention level: fraction of sum insured that product will cover from pool funds directly
|
153
|
+
// store updated policy info
|
154
|
+
instance.getInstanceStore().updatePolicy(applicationNftId, applicationInfo, newPolicyState);
|
155
|
+
|
156
|
+
// lock collateral and update pool and bundle book keeping
|
157
|
+
// pool retention level: fraction of sum insured that product will cover from pool funds directly
|
192
158
|
// eg retention level 30%, payouts up to 30% of the sum insured will be made from the product's pool directly
|
193
159
|
// for the remaining 70% the pool owns a policy that will cover claims that exceed the 30% of the sum insured
|
194
|
-
//
|
195
|
-
|
196
|
-
// - when to buy such policies and for which amount? manual trigger or link to bundle creation and/or funding?
|
197
|
-
bundleInfo = _bundleService.lockCollateral(
|
160
|
+
// might also call pool component (for isVerifyingApplications pools)
|
161
|
+
_poolService.lockCollateral(
|
198
162
|
instance,
|
163
|
+
productNftId,
|
199
164
|
applicationNftId,
|
200
|
-
|
201
|
-
|
202
|
-
netPremiumAmount);
|
203
|
-
|
204
|
-
instance.updatePolicy(applicationNftId, policyInfo, newPolicyState);
|
205
|
-
|
206
|
-
// also verify/confirm application by pool if necessary
|
207
|
-
if(abi.decode(
|
208
|
-
instanceReader.getComponentInfo(poolNftId).data,
|
209
|
-
(IComponents.PoolInfo)
|
210
|
-
).isVerifyingApplications
|
211
|
-
)
|
212
|
-
{
|
213
|
-
IPoolComponent pool = IPoolComponent(
|
214
|
-
getRegistry().getObjectInfo(poolNftId).objectAddress);
|
215
|
-
|
216
|
-
pool.verifyApplication(
|
217
|
-
applicationNftId,
|
218
|
-
policyInfo.applicationData,
|
219
|
-
bundleNftId,
|
220
|
-
bundleInfo.filter,
|
221
|
-
collateralAmount);
|
222
|
-
}
|
165
|
+
applicationInfo,
|
166
|
+
netPremiumAmount); // for pool book keeping (fee + additional capital)
|
223
167
|
|
224
168
|
// TODO: add logging
|
225
169
|
}
|
226
170
|
|
227
171
|
|
228
|
-
function calculateRequiredCollateral(
|
229
|
-
UFixed
|
230
|
-
|
231
|
-
|
172
|
+
function calculateRequiredCollateral(
|
173
|
+
UFixed collateralizationLevel,
|
174
|
+
Amount sumInsuredAmount
|
175
|
+
)
|
176
|
+
public
|
177
|
+
pure
|
178
|
+
virtual
|
179
|
+
returns(Amount collateralAmount)
|
180
|
+
{
|
181
|
+
UFixed collateralUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
182
|
+
return AmountLib.toAmount(collateralUFixed.toInt());
|
232
183
|
}
|
233
184
|
|
234
|
-
function collectPremium(
|
185
|
+
function collectPremium(
|
186
|
+
NftId policyNftId,
|
187
|
+
Timestamp activateAt
|
188
|
+
)
|
189
|
+
external
|
190
|
+
virtual
|
191
|
+
{
|
235
192
|
// check caller is registered product
|
236
|
-
(
|
193
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
237
194
|
InstanceReader instanceReader = instance.getInstanceReader();
|
238
195
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
239
196
|
|
240
197
|
if (policyInfo.premiumPaidAmount == policyInfo.premiumAmount) {
|
241
|
-
revert
|
198
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
242
199
|
}
|
243
200
|
|
244
|
-
|
201
|
+
Amount unpaidPremiumAmount = policyInfo.premiumAmount - policyInfo.premiumPaidAmount;
|
245
202
|
|
246
|
-
|
203
|
+
Amount netPremiumAmount = _processPremiumByTreasury(
|
247
204
|
instance,
|
248
205
|
policyNftId,
|
249
206
|
unpaidPremiumAmount);
|
250
207
|
|
251
|
-
policyInfo.premiumPaidAmount
|
208
|
+
policyInfo.premiumPaidAmount = policyInfo.premiumPaidAmount + unpaidPremiumAmount;
|
252
209
|
|
253
210
|
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
254
|
-
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
211
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
255
212
|
|
256
213
|
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
257
214
|
activate(policyNftId, activateAt);
|
@@ -262,7 +219,7 @@ contract PolicyService is
|
|
262
219
|
|
263
220
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
264
221
|
// check caller is registered product
|
265
|
-
(
|
222
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
266
223
|
InstanceReader instanceReader = instance.getInstanceReader();
|
267
224
|
|
268
225
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -274,7 +231,7 @@ contract PolicyService is
|
|
274
231
|
policyInfo.activatedAt = activateAt;
|
275
232
|
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
276
233
|
|
277
|
-
instance.updatePolicy(policyNftId, policyInfo, ACTIVE());
|
234
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
|
278
235
|
|
279
236
|
// TODO: add logging
|
280
237
|
}
|
@@ -296,7 +253,7 @@ contract PolicyService is
|
|
296
253
|
external
|
297
254
|
override
|
298
255
|
{
|
299
|
-
(
|
256
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
300
257
|
InstanceReader instanceReader = instance.getInstanceReader();
|
301
258
|
|
302
259
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -314,90 +271,106 @@ contract PolicyService is
|
|
314
271
|
revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
|
315
272
|
}
|
316
273
|
|
317
|
-
|
318
|
-
|
274
|
+
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
275
|
+
if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
|
276
|
+
revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
319
277
|
}
|
320
278
|
|
321
279
|
if (policyInfo.openClaimsCount > 0) {
|
322
280
|
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
323
281
|
}
|
324
282
|
|
325
|
-
if (TimestampLib.blockTimestamp().lte(policyInfo.expiredAt) && (policyInfo.payoutAmount < policyInfo.sumInsuredAmount)) {
|
326
|
-
revert ErrorIPolicyServicePolicyHasNotExpired(policyNftId, policyInfo.expiredAt);
|
327
|
-
}
|
328
|
-
|
329
283
|
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
330
284
|
|
331
|
-
|
332
|
-
|
333
|
-
|
285
|
+
_poolService.releaseCollateral(
|
286
|
+
instance,
|
287
|
+
policyNftId,
|
288
|
+
policyInfo);
|
334
289
|
|
335
|
-
|
336
|
-
IInstance instance,
|
337
|
-
NftId productNftId
|
338
|
-
)
|
339
|
-
internal
|
340
|
-
view
|
341
|
-
returns (NftId poolNftid)
|
342
|
-
{
|
343
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
344
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
345
|
-
return productSetupInfo.poolNftId;
|
290
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
346
291
|
}
|
347
292
|
|
348
293
|
|
349
294
|
function _processPremiumByTreasury(
|
350
295
|
IInstance instance,
|
351
296
|
NftId policyNftId,
|
352
|
-
|
297
|
+
Amount premiumExpectedAmount
|
353
298
|
)
|
354
299
|
internal
|
355
|
-
returns (
|
300
|
+
returns (Amount netPremiumAmount)
|
356
301
|
{
|
357
302
|
// process token transfer(s)
|
358
|
-
if(
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
303
|
+
if(premiumExpectedAmount.eqz()) {
|
304
|
+
return AmountLib.zero();
|
305
|
+
}
|
306
|
+
|
307
|
+
NftId productNftId = getRegistry().getObjectInfo(policyNftId).parentNftId;
|
308
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
309
|
+
IPolicy.Premium memory premium = _pricingService.calculatePremium(
|
310
|
+
productNftId,
|
311
|
+
policyInfo.riskId,
|
312
|
+
policyInfo.sumInsuredAmount,
|
313
|
+
policyInfo.lifetime,
|
314
|
+
policyInfo.applicationData,
|
315
|
+
policyInfo.bundleNftId,
|
316
|
+
policyInfo.referralId
|
317
|
+
);
|
318
|
+
|
319
|
+
if (premium.premiumAmount != premiumExpectedAmount.toInt()) {
|
320
|
+
revert ErrorPolicyServicePremiumMismatch(
|
321
|
+
policyNftId,
|
322
|
+
premiumExpectedAmount,
|
323
|
+
AmountLib.toAmount(premium.premiumAmount));
|
324
|
+
}
|
325
|
+
|
326
|
+
address policyOwner = getRegistry().ownerOf(policyNftId);
|
327
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instance.getInstanceReader().getProductSetupInfo(productNftId);
|
328
|
+
TokenHandler tokenHandler = productSetupInfo.tokenHandler;
|
329
|
+
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premium.premiumAmount) {
|
330
|
+
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premium.premiumAmount);
|
331
|
+
}
|
378
332
|
|
379
|
-
|
333
|
+
Amount productFeeAmountToTransfer = AmountLib.toAmount(premium.productFeeFixAmount + premium.productFeeVarAmount);
|
334
|
+
Amount distributionFeeAmountToTransfer = AmountLib.toAmount(premium.distributionFeeFixAmount + premium.distributionFeeVarAmount - premium.discountAmount);
|
335
|
+
uint256 poolFeeAmountToTransfer = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
336
|
+
uint256 bundleFeeAmountToTransfer = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
337
|
+
Amount poolAmountToTransfer = AmountLib.toAmount(premium.netPremiumAmount + poolFeeAmountToTransfer + bundleFeeAmountToTransfer);
|
338
|
+
|
339
|
+
netPremiumAmount = AmountLib.toAmount(premium.netPremiumAmount);
|
340
|
+
|
341
|
+
// move product fee to product wallet
|
342
|
+
{
|
380
343
|
address productWallet = productSetupInfo.wallet;
|
381
|
-
|
382
|
-
|
383
|
-
}
|
384
|
-
tokenHandler.transfer(policyOwner, productWallet, premium.productFeeFixAmount + premium.productFeeVarAmount);
|
344
|
+
tokenHandler.transfer(policyOwner, productWallet, productFeeAmountToTransfer);
|
345
|
+
}
|
385
346
|
|
386
|
-
|
347
|
+
// move distribution fee to distribution wallet
|
348
|
+
{
|
387
349
|
ISetup.DistributionSetupInfo memory distributionSetupInfo = instance.getInstanceReader().getDistributionSetupInfo(productSetupInfo.distributionNftId);
|
388
350
|
address distributionWallet = distributionSetupInfo.wallet;
|
389
|
-
uint256 distributionFeeAmountToTransfer = premium.distributionFeeFixAmount + premium.distributionFeeVarAmount - premium.discountAmount;
|
390
351
|
tokenHandler.transfer(policyOwner, distributionWallet, distributionFeeAmountToTransfer);
|
391
352
|
_distributionService.processSale(productSetupInfo.distributionNftId, policyInfo.referralId, premium, distributionFeeAmountToTransfer);
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
353
|
+
}
|
354
|
+
|
355
|
+
// move netpremium, bundleFee and poolFee to pool wallet
|
356
|
+
{
|
357
|
+
address poolWallet = instance.getInstanceReader().getComponentInfo(productSetupInfo.poolNftId).wallet;
|
358
|
+
tokenHandler.transfer(policyOwner, poolWallet, poolAmountToTransfer);
|
359
|
+
_poolService.processSale(policyInfo.bundleNftId, premium, poolAmountToTransfer);
|
360
|
+
}
|
361
|
+
|
362
|
+
// validate total amount transferred
|
363
|
+
{
|
364
|
+
Amount totalTransferred = distributionFeeAmountToTransfer + poolAmountToTransfer + productFeeAmountToTransfer;
|
365
|
+
|
366
|
+
if (premium.premiumAmount != totalTransferred.toInt()) {
|
367
|
+
revert ErrorPolicyServiceTransferredPremiumMismatch(
|
368
|
+
policyNftId,
|
369
|
+
AmountLib.toAmount(premium.premiumAmount),
|
370
|
+
totalTransferred);
|
371
|
+
}
|
399
372
|
}
|
400
373
|
|
401
374
|
// TODO: add logging
|
402
375
|
}
|
403
|
-
}
|
376
|
+
}
|