@etherisc/gif-next 0.0.2-d086e6d-456 → 0.0.2-d1f0662-893
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 -88
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +37 -6
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +60 -13
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +37 -6
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +44 -13
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +55 -24
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +52 -21
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +55 -24
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +52 -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 +309 -2023
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +21 -62
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +424 -2776
- 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 +331 -51
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +71 -215
- 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 +25 -36
- 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 +106 -246
- 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 +166 -136
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +38 -59
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +623 -91
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +143 -32
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +185 -451
- 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 +38 -191
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +97 -45
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +306 -62
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +34 -297
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +124 -103
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +269 -60
- 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 +5 -37
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +332 -162
- 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 +442 -84
- 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 +56 -59
- 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 +5 -37
- 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 +11 -38
- 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 +26 -49
- 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 +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +124 -4
- 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 +42 -18
- 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 +21 -2
- package/contracts/components/Distribution.sol +11 -6
- package/contracts/components/IComponent.sol +16 -2
- package/contracts/components/IPoolComponent.sol +8 -7
- package/contracts/components/IProductComponent.sol +5 -4
- package/contracts/components/Pool.sol +11 -12
- 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 +84 -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 -41
- package/contracts/instance/base/KeyValueStore.sol +0 -31
- package/contracts/instance/base/Lifecycle.sol +15 -4
- package/contracts/instance/module/IAccess.sol +2 -2
- package/contracts/instance/module/IComponents.sol +3 -3
- package/contracts/instance/module/IDistribution.sol +3 -2
- package/contracts/instance/module/IPolicy.sol +13 -8
- package/contracts/instance/service/ApplicationService.sol +60 -224
- package/contracts/instance/service/BundleService.sol +73 -122
- package/contracts/instance/service/ClaimService.sol +318 -32
- package/contracts/instance/service/DistributionService.sol +64 -151
- package/contracts/instance/service/IApplicationService.sol +8 -28
- package/contracts/instance/service/IBundleService.sol +34 -9
- 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 +18 -3
- package/contracts/instance/service/IPricingService.sol +37 -0
- package/contracts/instance/service/PolicyService.sol +134 -118
- package/contracts/instance/service/PoolService.sol +124 -64
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +14 -14
- package/contracts/registry/IRegistryService.sol +0 -2
- package/contracts/registry/RegistryService.sol +16 -15
- 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 +3 -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 +16 -7
- package/contracts/shared/TokenHandler.sol +4 -2
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +49 -0
- package/contracts/types/ClaimId.sol +25 -2
- package/contracts/types/Fee.sol +7 -6
- 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,54 +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
|
-
// IComponents.PoolInfo memory poolInfo,
|
94
|
-
// NftId bundleNftId,
|
95
|
-
// IBundle.BundleInfo memory bundleInfo
|
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, "BUNDLE_POOL_MISMATCH");
|
103
|
-
|
104
|
-
// // calculate required collateral
|
105
|
-
// IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
106
|
-
// poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
107
|
-
// }
|
108
|
-
|
109
93
|
|
110
94
|
function decline(
|
111
95
|
NftId policyNftId
|
@@ -113,12 +97,12 @@ contract PolicyService is
|
|
113
97
|
external
|
114
98
|
override
|
115
99
|
{
|
116
|
-
|
100
|
+
revert();
|
117
101
|
}
|
118
102
|
|
119
103
|
|
120
104
|
/// @dev underwites application which includes the locking of the required collateral from the pool.
|
121
|
-
function
|
105
|
+
function collateralize(
|
122
106
|
NftId applicationNftId, // = policyNftId
|
123
107
|
bool requirePremiumPayment,
|
124
108
|
Timestamp activateAt
|
@@ -127,17 +111,24 @@ contract PolicyService is
|
|
127
111
|
virtual override
|
128
112
|
{
|
129
113
|
// check caller is registered product
|
130
|
-
(NftId productNftId,, IInstance instance) =
|
114
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
131
115
|
InstanceReader instanceReader = instance.getInstanceReader();
|
132
116
|
|
133
117
|
// check policy matches with calling product
|
134
118
|
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
135
|
-
|
119
|
+
if(applicationInfo.productNftId != productNftId) {
|
120
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
121
|
+
applicationNftId,
|
122
|
+
applicationInfo.productNftId,
|
123
|
+
productNftId);
|
124
|
+
}
|
136
125
|
|
137
126
|
// check policy is in state applied
|
138
|
-
|
127
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
128
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
129
|
+
}
|
139
130
|
|
140
|
-
StateId newPolicyState =
|
131
|
+
StateId newPolicyState = COLLATERALIZED();
|
141
132
|
|
142
133
|
// optional activation of policy
|
143
134
|
if(activateAt > zeroTimestamp()) {
|
@@ -147,7 +138,7 @@ contract PolicyService is
|
|
147
138
|
}
|
148
139
|
|
149
140
|
// lock bundle collateral
|
150
|
-
|
141
|
+
Amount netPremiumAmount = AmountLib.zero(); // > 0 if immediate premium payment
|
151
142
|
|
152
143
|
// optional collection of premium
|
153
144
|
if(requirePremiumPayment) {
|
@@ -156,11 +147,11 @@ contract PolicyService is
|
|
156
147
|
applicationNftId,
|
157
148
|
applicationInfo.premiumAmount);
|
158
149
|
|
159
|
-
applicationInfo.premiumPaidAmount
|
150
|
+
applicationInfo.premiumPaidAmount = applicationInfo.premiumPaidAmount + applicationInfo.premiumAmount;
|
160
151
|
}
|
161
152
|
|
162
153
|
// store updated policy info
|
163
|
-
instance.updatePolicy(applicationNftId, applicationInfo, newPolicyState);
|
154
|
+
instance.getInstanceStore().updatePolicy(applicationNftId, applicationInfo, newPolicyState);
|
164
155
|
|
165
156
|
// lock collateral and update pool and bundle book keeping
|
166
157
|
// pool retention level: fraction of sum insured that product will cover from pool funds directly
|
@@ -178,33 +169,46 @@ contract PolicyService is
|
|
178
169
|
}
|
179
170
|
|
180
171
|
|
181
|
-
function calculateRequiredCollateral(
|
182
|
-
UFixed
|
183
|
-
|
184
|
-
|
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());
|
185
183
|
}
|
186
184
|
|
187
|
-
function collectPremium(
|
185
|
+
function collectPremium(
|
186
|
+
NftId policyNftId,
|
187
|
+
Timestamp activateAt
|
188
|
+
)
|
189
|
+
external
|
190
|
+
virtual
|
191
|
+
{
|
188
192
|
// check caller is registered product
|
189
|
-
(NftId productNftId,, IInstance instance) =
|
193
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
190
194
|
InstanceReader instanceReader = instance.getInstanceReader();
|
191
195
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
192
196
|
|
193
197
|
if (policyInfo.premiumPaidAmount == policyInfo.premiumAmount) {
|
194
|
-
revert
|
198
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
195
199
|
}
|
196
200
|
|
197
|
-
|
201
|
+
Amount unpaidPremiumAmount = policyInfo.premiumAmount - policyInfo.premiumPaidAmount;
|
198
202
|
|
199
|
-
|
203
|
+
Amount netPremiumAmount = _processPremiumByTreasury(
|
200
204
|
instance,
|
201
205
|
policyNftId,
|
202
206
|
unpaidPremiumAmount);
|
203
207
|
|
204
|
-
policyInfo.premiumPaidAmount
|
208
|
+
policyInfo.premiumPaidAmount = policyInfo.premiumPaidAmount + unpaidPremiumAmount;
|
205
209
|
|
206
210
|
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
207
|
-
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
211
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
208
212
|
|
209
213
|
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
210
214
|
activate(policyNftId, activateAt);
|
@@ -215,7 +219,7 @@ contract PolicyService is
|
|
215
219
|
|
216
220
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
217
221
|
// check caller is registered product
|
218
|
-
(,, IInstance instance) =
|
222
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
219
223
|
InstanceReader instanceReader = instance.getInstanceReader();
|
220
224
|
|
221
225
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -227,7 +231,7 @@ contract PolicyService is
|
|
227
231
|
policyInfo.activatedAt = activateAt;
|
228
232
|
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
229
233
|
|
230
|
-
instance.updatePolicy(policyNftId, policyInfo, ACTIVE());
|
234
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
|
231
235
|
|
232
236
|
// TODO: add logging
|
233
237
|
}
|
@@ -249,7 +253,7 @@ contract PolicyService is
|
|
249
253
|
external
|
250
254
|
override
|
251
255
|
{
|
252
|
-
(,, IInstance instance) =
|
256
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
253
257
|
InstanceReader instanceReader = instance.getInstanceReader();
|
254
258
|
|
255
259
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -267,18 +271,15 @@ contract PolicyService is
|
|
267
271
|
revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
|
268
272
|
}
|
269
273
|
|
270
|
-
|
271
|
-
|
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);
|
272
277
|
}
|
273
278
|
|
274
279
|
if (policyInfo.openClaimsCount > 0) {
|
275
280
|
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
276
281
|
}
|
277
282
|
|
278
|
-
if (TimestampLib.blockTimestamp().lte(policyInfo.expiredAt) && (policyInfo.payoutAmount < policyInfo.sumInsuredAmount)) {
|
279
|
-
revert ErrorIPolicyServicePolicyHasNotExpired(policyNftId, policyInfo.expiredAt);
|
280
|
-
}
|
281
|
-
|
282
283
|
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
283
284
|
|
284
285
|
_poolService.releaseCollateral(
|
@@ -286,75 +287,90 @@ contract PolicyService is
|
|
286
287
|
policyNftId,
|
287
288
|
policyInfo);
|
288
289
|
|
289
|
-
instance.updatePolicy(policyNftId, policyInfo, CLOSED());
|
290
|
-
}
|
291
|
-
|
292
|
-
function _getPoolNftId(
|
293
|
-
IInstance instance,
|
294
|
-
NftId productNftId
|
295
|
-
)
|
296
|
-
internal
|
297
|
-
view
|
298
|
-
returns (NftId poolNftid)
|
299
|
-
{
|
300
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
301
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
302
|
-
return productSetupInfo.poolNftId;
|
290
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
303
291
|
}
|
304
292
|
|
305
293
|
|
306
294
|
function _processPremiumByTreasury(
|
307
295
|
IInstance instance,
|
308
296
|
NftId policyNftId,
|
309
|
-
|
297
|
+
Amount premiumExpectedAmount
|
310
298
|
)
|
311
299
|
internal
|
312
|
-
returns (
|
300
|
+
returns (Amount netPremiumAmount)
|
313
301
|
{
|
314
302
|
// process token transfer(s)
|
315
|
-
if(
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
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
|
+
}
|
335
332
|
|
336
|
-
|
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
|
+
{
|
337
343
|
address productWallet = productSetupInfo.wallet;
|
338
|
-
|
339
|
-
|
340
|
-
}
|
341
|
-
tokenHandler.transfer(policyOwner, productWallet, premium.productFeeFixAmount + premium.productFeeVarAmount);
|
344
|
+
tokenHandler.transfer(policyOwner, productWallet, productFeeAmountToTransfer);
|
345
|
+
}
|
342
346
|
|
343
|
-
|
347
|
+
// move distribution fee to distribution wallet
|
348
|
+
{
|
344
349
|
ISetup.DistributionSetupInfo memory distributionSetupInfo = instance.getInstanceReader().getDistributionSetupInfo(productSetupInfo.distributionNftId);
|
345
350
|
address distributionWallet = distributionSetupInfo.wallet;
|
346
|
-
uint256 distributionFeeAmountToTransfer = premium.distributionFeeFixAmount + premium.distributionFeeVarAmount - premium.discountAmount;
|
347
351
|
tokenHandler.transfer(policyOwner, distributionWallet, distributionFeeAmountToTransfer);
|
348
352
|
_distributionService.processSale(productSetupInfo.distributionNftId, policyInfo.referralId, premium, distributionFeeAmountToTransfer);
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
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
|
+
}
|
356
372
|
}
|
357
373
|
|
358
374
|
// TODO: add logging
|
359
375
|
}
|
360
|
-
}
|
376
|
+
}
|