@etherisc/gif-next 0.0.2-83d1db6-607 → 0.0.2-83e248c-054
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 +10 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +26 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +100 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +100 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +110 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +100 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +20 -0
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +10 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- 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 +380 -116
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +80 -14
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +310 -303
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +76 -57
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +171 -47
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +208 -101
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +62 -22
- 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 +85 -30
- 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 +175 -83
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +29 -13
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +333 -160
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +78 -14
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +372 -86
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +55 -7
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +183 -141
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +45 -57
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +111 -40
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +169 -113
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +251 -58
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +101 -24
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +438 -41
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +430 -14
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +575 -85
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +71 -19
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +468 -55
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +18 -14
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +114 -51
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +16 -12
- 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 +0 -24
- 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 +17 -36
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +7 -7
- 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 +2 -2
- 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/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +80 -14
- 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 +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +86 -15
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- 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 +2 -2
- 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 +101 -26
- 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 +185 -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 +40 -9
- 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 +4 -2
- package/contracts/components/Distribution.sol +6 -2
- package/contracts/components/IComponent.sol +3 -1
- package/contracts/components/IPoolComponent.sol +1 -1
- package/contracts/components/Pool.sol +11 -8
- package/contracts/components/Product.sol +137 -59
- package/contracts/instance/BundleManager.sol +3 -4
- package/contracts/instance/IInstance.sol +25 -21
- package/contracts/instance/IInstanceService.sol +0 -4
- package/contracts/instance/Instance.sol +85 -102
- package/contracts/instance/InstanceAccessManager.sol +16 -11
- package/contracts/instance/InstanceReader.sol +31 -4
- package/contracts/instance/InstanceService.sol +29 -46
- package/contracts/instance/base/ComponentService.sol +17 -30
- package/contracts/instance/base/KeyValueStore.sol +8 -3
- package/contracts/instance/base/Lifecycle.sol +12 -4
- package/contracts/instance/module/IAccess.sol +2 -2
- package/contracts/instance/module/IBundle.sol +6 -4
- package/contracts/instance/module/IComponents.sol +6 -0
- package/contracts/instance/module/IPolicy.sol +11 -6
- package/contracts/instance/service/ApplicationService.sol +19 -14
- package/contracts/instance/service/BundleService.sol +163 -63
- package/contracts/instance/service/ClaimService.sol +114 -26
- package/contracts/instance/service/DistributionService.sol +38 -74
- package/contracts/instance/service/IApplicationService.sol +3 -7
- package/contracts/instance/service/IBundleService.sol +56 -22
- package/contracts/instance/service/IClaimService.sol +46 -15
- package/contracts/instance/service/IDistributionService.sol +1 -0
- package/contracts/instance/service/IPolicyService.sol +70 -5
- package/contracts/instance/service/IPoolService.sol +65 -1
- package/contracts/instance/service/PolicyService.sol +254 -116
- package/contracts/instance/service/PoolService.sol +132 -49
- package/contracts/instance/service/ProductService.sol +21 -52
- package/contracts/registry/IRegistryService.sol +4 -3
- package/contracts/registry/RegistryService.sol +10 -11
- package/contracts/registry/ReleaseManager.sol +20 -18
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/Service.sol +21 -7
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +65 -0
- package/contracts/types/ClaimId.sol +25 -2
- package/contracts/types/Fee.sol +12 -5
- package/contracts/types/ObjectType.sol +5 -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
@@ -60,11 +60,11 @@ contract DistributionService is
|
|
60
60
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
61
61
|
// TODO while DistributionService is not deployed in DistributionServiceManager constructor
|
62
62
|
// owner is DistributionServiceManager deployer
|
63
|
-
initializeService(registryAddress, owner);
|
63
|
+
initializeService(registryAddress, address(0), owner);
|
64
64
|
registerInterface(type(IDistributionService).interfaceId);
|
65
65
|
}
|
66
66
|
|
67
|
-
function getDomain() public pure override
|
67
|
+
function getDomain() public pure override returns(ObjectType) {
|
68
68
|
return DISTRIBUTION();
|
69
69
|
}
|
70
70
|
|
@@ -119,9 +119,8 @@ contract DistributionService is
|
|
119
119
|
revert ErrorIDistributionServiceMinFeeTooHigh(minDistributionOwnerFee.fractionalFee.toInt(), distributionFee.fractionalFee.toInt());
|
120
120
|
}
|
121
121
|
|
122
|
-
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
|
122
|
+
(NftId distributionNftId, IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
|
123
123
|
InstanceReader instanceReader = instance.getInstanceReader();
|
124
|
-
NftId distributionNftId = info.nftId;
|
125
124
|
|
126
125
|
ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
127
126
|
distSetupInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
@@ -144,7 +143,7 @@ contract DistributionService is
|
|
144
143
|
external
|
145
144
|
returns (DistributorType distributorType)
|
146
145
|
{
|
147
|
-
(
|
146
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
|
148
147
|
|
149
148
|
{
|
150
149
|
ISetup.DistributionSetupInfo memory setupInfo = instance.getInstanceReader().getDistributionSetupInfo(distributionNftId);
|
@@ -156,22 +155,18 @@ contract DistributionService is
|
|
156
155
|
}
|
157
156
|
|
158
157
|
distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
data);
|
172
|
-
|
173
|
-
instance.createDistributorType(key32, info);
|
174
|
-
}
|
158
|
+
IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
|
159
|
+
name,
|
160
|
+
minDiscountPercentage,
|
161
|
+
maxDiscountPercentage,
|
162
|
+
commissionPercentage,
|
163
|
+
maxReferralCount,
|
164
|
+
maxReferralLifetime,
|
165
|
+
allowSelfReferrals,
|
166
|
+
allowRenewals,
|
167
|
+
data);
|
168
|
+
|
169
|
+
instance.createDistributorType(distributorType, info);
|
175
170
|
}
|
176
171
|
|
177
172
|
function createDistributor(
|
@@ -180,7 +175,7 @@ contract DistributionService is
|
|
180
175
|
bytes memory data
|
181
176
|
) external returns (NftId distributorNftId)
|
182
177
|
{
|
183
|
-
(
|
178
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
|
184
179
|
|
185
180
|
distributorNftId = getRegistryService().registerDistributor(
|
186
181
|
IRegistry.ObjectInfo(
|
@@ -209,7 +204,7 @@ contract DistributionService is
|
|
209
204
|
bytes memory data
|
210
205
|
) external virtual
|
211
206
|
{
|
212
|
-
(
|
207
|
+
(, IInstance instance) = _getAndVerifyCallingDistribution();
|
213
208
|
InstanceReader instanceReader = instance.getInstanceReader();
|
214
209
|
IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
|
215
210
|
distributorInfo.distributorType = distributorType;
|
@@ -230,7 +225,7 @@ contract DistributionService is
|
|
230
225
|
virtual
|
231
226
|
returns (ReferralId referralId)
|
232
227
|
{
|
233
|
-
(
|
228
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
|
234
229
|
|
235
230
|
if (bytes(code).length == 0) {
|
236
231
|
revert ErrorIDistributionServiceInvalidReferral(code);
|
@@ -268,7 +263,7 @@ contract DistributionService is
|
|
268
263
|
data
|
269
264
|
);
|
270
265
|
|
271
|
-
instance.createReferral(referralId
|
266
|
+
instance.createReferral(referralId, info);
|
272
267
|
return referralId;
|
273
268
|
}
|
274
269
|
|
@@ -288,7 +283,7 @@ contract DistributionService is
|
|
288
283
|
revert ErrorIDistributionServiceReferralInvalid(distributionNftId, referralId);
|
289
284
|
}
|
290
285
|
|
291
|
-
|
286
|
+
IInstance instance = _getInstanceForDistribution(distributionNftId);
|
292
287
|
InstanceReader reader = instance.getInstanceReader();
|
293
288
|
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
294
289
|
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
@@ -309,7 +304,7 @@ contract DistributionService is
|
|
309
304
|
|
310
305
|
if (isReferral) {
|
311
306
|
referralInfo.usedReferrals += 1;
|
312
|
-
instance.updateReferral(referralId
|
307
|
+
instance.updateReferral(referralId, referralInfo, KEEP_STATE());
|
313
308
|
|
314
309
|
if (commissionAmount > 0) {
|
315
310
|
distributorInfo.sumCommisions += commissionAmount;
|
@@ -329,7 +324,7 @@ contract DistributionService is
|
|
329
324
|
view
|
330
325
|
returns (IPolicy.Premium memory finalPremium)
|
331
326
|
{
|
332
|
-
|
327
|
+
IInstance instance = _getInstanceForDistribution(distributionNftId);
|
333
328
|
InstanceReader reader = instance.getInstanceReader();
|
334
329
|
|
335
330
|
// first calculate all fixed and variable fees for the distribution - this will defined the fullPremium
|
@@ -390,7 +385,7 @@ contract DistributionService is
|
|
390
385
|
|
391
386
|
// TODO: zero should return false
|
392
387
|
function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
|
393
|
-
|
388
|
+
IInstance instance = _getInstanceForDistribution(distributionNftId);
|
394
389
|
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
395
390
|
|
396
391
|
if (info.distributorNftId.eqz()) {
|
@@ -405,63 +400,32 @@ contract DistributionService is
|
|
405
400
|
internal
|
406
401
|
view
|
407
402
|
returns(
|
408
|
-
address distributionAddress,
|
409
403
|
NftId distributionNftId,
|
410
404
|
IInstance instance
|
411
405
|
)
|
412
406
|
{
|
413
|
-
|
414
|
-
(
|
415
|
-
|
416
|
-
distributionNftId,
|
417
|
-
objectType,
|
418
|
-
instance
|
419
|
-
) = _getAndVerifyCaller();
|
420
|
-
|
421
|
-
if(objectType != DISTRIBUTION()) {
|
422
|
-
revert ErrorIDistributionServiceCallerNotDistributor(msg.sender);
|
407
|
+
distributionNftId = getRegistry().getNftId(msg.sender);
|
408
|
+
if (distributionNftId.eqz()) {
|
409
|
+
revert ErrorDistributionServiceCallerNotRegistered(msg.sender);
|
423
410
|
}
|
424
|
-
}
|
425
411
|
|
426
|
-
function _getAndVerifyDistribution(NftId distributionNftId)
|
427
|
-
internal
|
428
|
-
view
|
429
|
-
returns(
|
430
|
-
address distributionAddress,
|
431
|
-
IInstance instance
|
432
|
-
)
|
433
|
-
{
|
434
412
|
IRegistry.ObjectInfo memory info = getRegistry().getObjectInfo(distributionNftId);
|
435
|
-
|
436
|
-
|
437
|
-
revert ErrorIDistributionServiceParentNftIdNotInstance(distributionNftId, info.parentNftId);
|
413
|
+
if(info.objectType != DISTRIBUTION()) {
|
414
|
+
revert ErrorIDistributionServiceCallerNotDistributor(msg.sender);
|
438
415
|
}
|
439
|
-
|
416
|
+
|
417
|
+
address instanceAddress = getRegistry().getObjectInfo(info.parentNftId).objectAddress;
|
418
|
+
instance = IInstance(instanceAddress);
|
440
419
|
}
|
441
420
|
|
442
|
-
|
421
|
+
|
422
|
+
function _getInstanceForDistribution(NftId distributionNftId)
|
443
423
|
internal
|
444
424
|
view
|
445
|
-
returns(
|
446
|
-
address objectAddress,
|
447
|
-
NftId objectNftId,
|
448
|
-
ObjectType objectType,
|
449
|
-
IInstance instance
|
450
|
-
)
|
425
|
+
returns(IInstance instance)
|
451
426
|
{
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
revert ErrorIServiceCallerUnknown(objectAddress);
|
456
|
-
}
|
457
|
-
IRegistry.ObjectInfo memory info = getRegistry().getObjectInfo(objectNftId);
|
458
|
-
objectType = info.objectType;
|
459
|
-
|
460
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(info.parentNftId);
|
461
|
-
if (parentInfo.objectType != INSTANCE()) {
|
462
|
-
revert ErrorIDistributionServiceParentNftIdNotInstance(objectNftId, info.parentNftId);
|
463
|
-
}
|
464
|
-
instance = IInstance(parentInfo.objectAddress);
|
427
|
+
NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
|
428
|
+
address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
|
429
|
+
return IInstance(instanceAddress);
|
465
430
|
}
|
466
|
-
|
467
431
|
}
|
@@ -2,24 +2,20 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {IPolicy} from "../module/IPolicy.sol";
|
5
|
-
import {IRisk} from "../module/IRisk.sol";
|
6
5
|
import {IService} from "../../shared/IService.sol";
|
7
6
|
|
8
7
|
import {NftId} from "../../types/NftId.sol";
|
8
|
+
import {ObjectType} from "../../types/ObjectType.sol";
|
9
9
|
import {ReferralId} from "../../types/Referral.sol";
|
10
10
|
import {RiskId} from "../../types/RiskId.sol";
|
11
11
|
import {Seconds} from "../../types/Seconds.sol";
|
12
|
-
import {StateId} from "../../types/StateId.sol";
|
13
|
-
import {Timestamp} from "../../types/Timestamp.sol";
|
14
|
-
import {UFixed} from "../../types/UFixed.sol";
|
15
|
-
import {Fee} from "../../types/Fee.sol";
|
16
12
|
|
17
13
|
/// @dev gif service responsible for creating applications
|
18
14
|
/// only product components may call transaction functions
|
19
15
|
interface IApplicationService is IService {
|
20
16
|
|
21
|
-
error
|
22
|
-
error
|
17
|
+
error ErrorApplicationServiceNotProduct(NftId callerNftId, ObjectType callerType);
|
18
|
+
error ErrorApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
|
23
19
|
|
24
20
|
/// @dev creates a new application based on the specified attributes
|
25
21
|
/// may only be called by a product component
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {Amount} from "../../types/Amount.sol";
|
4
5
|
import {NftId} from "../../types/NftId.sol";
|
5
6
|
import {Fee} from "../../types/Fee.sol";
|
6
7
|
import {IService} from "../../shared/IService.sol";
|
@@ -8,55 +9,88 @@ import {IBundle} from "../module/IBundle.sol";
|
|
8
9
|
import {IInstance} from "../../instance/IInstance.sol";
|
9
10
|
import {Seconds} from "../../types/Seconds.sol";
|
10
11
|
import {StateId} from "../../types/StateId.sol";
|
12
|
+
import {Timestamp} from "../../types/Timestamp.sol";
|
11
13
|
|
12
14
|
interface IBundleService is IService {
|
13
15
|
|
14
16
|
event LogBundleServiceBundleActivated(NftId bundleNftId);
|
15
17
|
event LogBundleServiceBundleLocked(NftId bundleNftId);
|
16
|
-
event LogBundleServiceBundleClosed(NftId bundleNftId);
|
17
18
|
|
18
19
|
error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, uint256 amount);
|
19
|
-
error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state);
|
20
|
+
error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
|
21
|
+
error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, uint capacityAmount, uint collateralAmount);
|
20
22
|
error ErrorBundleServiceBundleWithOpenPolicies(NftId bundleNftId, uint256 openPoliciesCount);
|
21
23
|
|
24
|
+
error ErrorBundleServiceBundleUnknown(NftId bundleNftId);
|
25
|
+
error ErrorBundleServiceBundlePoolMismatch(NftId expectedPoolNftId, NftId bundlePoolNftId);
|
26
|
+
|
27
|
+
/// @dev create a new bundle for the specified attributes
|
28
|
+
/// may only be called by pool service
|
22
29
|
function create(
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
30
|
+
IInstance instance, // instance relevant for bundle
|
31
|
+
NftId poolNftId, // the pool the bundle will be linked to
|
32
|
+
address owner, // initial bundle owner
|
33
|
+
Fee memory fee, // fees deducted from premium that go to bundle owner
|
34
|
+
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
35
|
+
Seconds lifetime, // initial duration for which new policies are covered
|
36
|
+
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
37
|
+
)
|
38
|
+
external
|
39
|
+
returns(NftId bundleNftId); // the nft id of the newly created bundle
|
40
|
+
|
41
|
+
/// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
|
42
|
+
/// only active bundles may be locked
|
43
|
+
/// may only be called by registered and unlocked pool components
|
44
|
+
function lock(NftId bundleNftId) external;
|
45
|
+
|
46
|
+
/// @dev activates the specified bundle
|
47
|
+
/// only locked bundles may be unlocked
|
48
|
+
/// may only be called by registered and unlocked pool components
|
49
|
+
function unlock(NftId bundleNftId) external;
|
29
50
|
|
51
|
+
/// @dev closes the specified bundle
|
52
|
+
/// only open bundles (active or locked) may be closed
|
53
|
+
/// to close a bundle it may not have any non-closed polices attached to it
|
54
|
+
/// may only be called by registered and unlocked pool components
|
55
|
+
function close(
|
56
|
+
IInstance instance,
|
57
|
+
NftId bundleNftId
|
58
|
+
) external;
|
30
59
|
|
60
|
+
/// @dev set bundle fee to provided value
|
61
|
+
/// may only be called by registered and unlocked pool components
|
31
62
|
function setFee(
|
32
63
|
NftId bundleNftId,
|
33
64
|
Fee memory fee
|
34
65
|
) external;
|
35
66
|
|
36
67
|
|
68
|
+
/// @dev locks the specified collateral in the bundle
|
69
|
+
/// the locked collateral is added to the bundle locked capital
|
70
|
+
/// the bundles' fees are updated with the fees for this premium
|
71
|
+
/// the premium (minus bundle fee) is added to the bundle capital
|
72
|
+
/// may only be called by pool service
|
37
73
|
function lockCollateral(
|
38
74
|
IInstance instanceNftId,
|
39
75
|
NftId policyNftId,
|
40
76
|
NftId bundleNftId,
|
41
77
|
uint256 collateralAmount,
|
42
|
-
uint256
|
43
|
-
)
|
44
|
-
external
|
45
|
-
returns (
|
46
|
-
IBundle.BundleInfo memory bundleInfo
|
47
|
-
);
|
78
|
+
uint256 premium // premium amount after pool fee
|
79
|
+
) external;
|
48
80
|
|
49
|
-
function increaseBalance(IInstance instance, NftId bundleNftId, uint256 amount) external;
|
50
81
|
|
51
|
-
|
82
|
+
/// @dev releases the specified collateral in the bundle
|
83
|
+
/// may only be called by pool service
|
84
|
+
function releaseCollateral(
|
85
|
+
IInstance instance,
|
86
|
+
NftId policyNftId,
|
87
|
+
NftId bundleNftId,
|
88
|
+
uint256 collateralAmount
|
89
|
+
) external;
|
90
|
+
|
91
|
+
function increaseBalance(IInstance instance, NftId bundleNftId, uint256 amount) external;
|
52
92
|
|
53
93
|
// function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
54
94
|
|
55
95
|
// function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
56
|
-
|
57
|
-
function lock(NftId bundleNftId) external;
|
58
|
-
|
59
|
-
function unlock(NftId bundleNftId) external;
|
60
|
-
|
61
|
-
function close(NftId bundleNftId) external;
|
62
96
|
}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IInstance} from "../IInstance.sol";
|
5
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
5
6
|
import {IService} from "../../shared/IService.sol";
|
6
7
|
|
8
|
+
import {Amount} from "../../types/Amount.sol";
|
7
9
|
import {ClaimId} from "../../types/ClaimId.sol";
|
8
10
|
import {PayoutId} from "../../types/PayoutId.sol";
|
9
11
|
import {NftId} from "../../types/NftId.sol";
|
10
|
-
import {ReferralId} from "../../types/Referral.sol";
|
11
|
-
import {RiskId} from "../../types/RiskId.sol";
|
12
12
|
import {StateId} from "../../types/StateId.sol";
|
13
13
|
import {Timestamp} from "../../types/Timestamp.sol";
|
14
14
|
import {UFixed} from "../../types/UFixed.sol";
|
@@ -20,42 +20,73 @@ interface IClaimService is
|
|
20
20
|
IService
|
21
21
|
{
|
22
22
|
|
23
|
+
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
|
24
|
+
error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
|
25
|
+
error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
|
26
|
+
|
23
27
|
/// @dev create a new claim for the specified policy
|
24
28
|
/// function can only be called by product, policy needs to match with calling product
|
25
|
-
function
|
29
|
+
function submit(
|
30
|
+
IInstance instance,
|
26
31
|
NftId policyNftId,
|
27
|
-
|
32
|
+
ClaimId claimId,
|
33
|
+
Amount claimAmount,
|
28
34
|
bytes memory claimData
|
29
|
-
) external
|
35
|
+
) external;
|
30
36
|
|
31
37
|
/// @dev confirms the specified claim and fixes the final claim amount
|
32
38
|
/// function can only be called by product, policy needs to match with calling product
|
33
|
-
function
|
39
|
+
function confirm(
|
40
|
+
IInstance instance,
|
41
|
+
InstanceReader instanceReader,
|
42
|
+
NftId policyNftId,
|
43
|
+
ClaimId claimId,
|
44
|
+
Amount claimAmount
|
45
|
+
) external;
|
34
46
|
|
35
47
|
/// @dev declares the claim as invalid, no payout(s) will be made
|
36
48
|
/// function can only be called by product, policy needs to match with calling product
|
37
|
-
function
|
49
|
+
function decline(
|
50
|
+
IInstance instance,
|
51
|
+
InstanceReader instanceReader,
|
52
|
+
NftId policyNftId,
|
53
|
+
ClaimId claimId
|
54
|
+
) external;
|
38
55
|
|
39
56
|
/// @dev closes the claim
|
40
57
|
/// a claim may only be closed once all existing payouts have been executed and the sum of the paid out amounts has reached the claim amount
|
41
58
|
/// function can only be called by product, policy needs to match with calling product
|
42
|
-
function
|
59
|
+
function close(
|
60
|
+
IInstance instance,
|
61
|
+
InstanceReader instanceReader,
|
62
|
+
NftId policyNftId,
|
63
|
+
ClaimId claimId
|
64
|
+
) external;
|
43
65
|
|
44
|
-
/// @dev create a new payout for the specified policy
|
66
|
+
/// @dev create a new payout for the specified policy
|
67
|
+
/// payoutId may be constructed using PayoutIdLib(claimId, payoutNo)
|
45
68
|
/// function can only be called by product, policy needs to match with calling product
|
46
69
|
function createPayout(
|
70
|
+
IInstance instance,
|
47
71
|
NftId policyNftId,
|
48
|
-
|
49
|
-
|
72
|
+
PayoutId payoutId,
|
73
|
+
Amount payoutAmount,
|
50
74
|
bytes calldata payoutData
|
51
|
-
) external
|
75
|
+
) external;
|
52
76
|
|
53
77
|
/// @dev callback function to confirm transfer of payout token to beneficiary
|
54
78
|
/// allows claim service to update claims/payout book keeping
|
55
79
|
/// only pool service can confirm executed payout
|
56
|
-
function
|
80
|
+
function processPayout(
|
81
|
+
IInstance instance,
|
82
|
+
InstanceReader instanceReader,
|
57
83
|
NftId policyNftId,
|
58
84
|
PayoutId payoutId
|
59
|
-
)
|
85
|
+
)
|
86
|
+
external
|
87
|
+
returns (
|
88
|
+
Amount amount,
|
89
|
+
bool payoutIsClosingClaim
|
90
|
+
);
|
60
91
|
|
61
92
|
}
|
@@ -12,6 +12,7 @@ import {Timestamp} from "../../types/Timestamp.sol";
|
|
12
12
|
|
13
13
|
|
14
14
|
interface IDistributionService is IService {
|
15
|
+
error ErrorDistributionServiceCallerNotRegistered(address caller);
|
15
16
|
error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
|
16
17
|
error ErrorIDistributionServiceCallerNotDistributor(address caller);
|
17
18
|
error ErrorIDistributionServiceInvalidReferralId(ReferralId referralId);
|
@@ -4,7 +4,10 @@ pragma solidity ^0.8.19;
|
|
4
4
|
import {IRisk} from "../module/IRisk.sol";
|
5
5
|
import {IService} from "../../shared/IService.sol";
|
6
6
|
|
7
|
+
import {Amount} from "../../types/Amount.sol";
|
8
|
+
import {ClaimId} from "../../types/ClaimId.sol";
|
7
9
|
import {NftId} from "../../types/NftId.sol";
|
10
|
+
import {PayoutId} from "../../types/PayoutId.sol";
|
8
11
|
import {ReferralId} from "../../types/Referral.sol";
|
9
12
|
import {RiskId} from "../../types/RiskId.sol";
|
10
13
|
import {Seconds} from "../../types/Seconds.sol";
|
@@ -14,7 +17,19 @@ import {UFixed} from "../../types/UFixed.sol";
|
|
14
17
|
import {Fee} from "../../types/Fee.sol";
|
15
18
|
|
16
19
|
interface IPolicyService is IService {
|
17
|
-
|
20
|
+
|
21
|
+
event LogPolicyServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
|
22
|
+
event LogPolicyServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
|
23
|
+
event LogPolicyServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
|
24
|
+
event LogPolicyServiceClaimClosed(NftId policyNftId, ClaimId claimId);
|
25
|
+
|
26
|
+
event LogPolicyServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
|
27
|
+
event LogPolicyServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount);
|
28
|
+
|
29
|
+
error ErrorPolicyServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
|
30
|
+
error ErrorPolicyServicePolicyNotOpen(NftId policyNftId);
|
31
|
+
error ErrorPolicyServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
|
32
|
+
|
18
33
|
error ErrorIPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
|
19
34
|
error ErrorIPolicyServicePremiumAlreadyPaid(NftId policyNftId, uint256 premiumPaidAmount);
|
20
35
|
error ErrorIPolicyServicePolicyNotActivated(NftId policyNftId);
|
@@ -24,22 +39,22 @@ interface IPolicyService is IService {
|
|
24
39
|
error ErrorIPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
|
25
40
|
error ErrorIPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
|
26
41
|
|
27
|
-
error ErrorIPolicyServicePremiumMismatch(NftId policyNftId, uint256
|
42
|
+
error ErrorIPolicyServicePremiumMismatch(NftId policyNftId, uint256 expectedPremiumAmount, uint256 recalculatedPremiumAmount);
|
28
43
|
|
29
44
|
/// @dev declines an application represented by {policyNftId}
|
30
45
|
/// an application can only be declined in applied state
|
31
46
|
/// only the related product may decline an application
|
32
47
|
function decline(NftId policyNftId) external;
|
33
48
|
|
34
|
-
/// @dev
|
49
|
+
/// @dev collateralizes the policy represented by {policyNftId}
|
35
50
|
/// sets the policy state to underwritten
|
36
51
|
/// may set the policy state to activated and set the activation date
|
37
52
|
/// optionally collects premiums and activates the policy.
|
38
53
|
/// - premium payment is only attempted if requirePremiumPayment is set to true
|
39
54
|
/// - activation is only done if activateAt is a non-zero timestamp
|
40
55
|
/// an application can only be underwritten in applied state
|
41
|
-
/// only the related product may
|
42
|
-
function
|
56
|
+
/// only the related product may collateralize an application
|
57
|
+
function collateralize(
|
43
58
|
NftId policyNftId,
|
44
59
|
bool requirePremiumPayment,
|
45
60
|
Timestamp activateAt
|
@@ -63,6 +78,56 @@ interface IPolicyService is IService {
|
|
63
78
|
/// this function can only be called by a product. the policy needs to match with the calling product
|
64
79
|
function close(NftId policyNftId) external;
|
65
80
|
|
81
|
+
/// @dev create a new claim for the specified policy
|
82
|
+
/// returns the id of the newly created claim
|
83
|
+
/// function can only be called by product, policy needs to match with calling product
|
84
|
+
function submitClaim(
|
85
|
+
NftId policyNftId,
|
86
|
+
Amount claimAmount,
|
87
|
+
bytes memory claimData
|
88
|
+
) external returns (ClaimId claimId);
|
89
|
+
|
90
|
+
/// @dev declines the specified claim
|
91
|
+
/// function can only be called by product, policy needs to match with calling product
|
92
|
+
function declineClaim(
|
93
|
+
NftId policyNftId,
|
94
|
+
ClaimId claimId) external;
|
95
|
+
|
96
|
+
/// @dev confirms the specified claim and specifies the payout amount
|
97
|
+
/// function can only be called by product, policy needs to match with calling product
|
98
|
+
function confirmClaim(
|
99
|
+
NftId policyNftId,
|
100
|
+
ClaimId claimId,
|
101
|
+
Amount confirmedAmount
|
102
|
+
) external;
|
103
|
+
|
104
|
+
/// @dev closes the specified claim
|
105
|
+
/// function can only be called by product, policy needs to match with calling product
|
106
|
+
function closeClaim(
|
107
|
+
NftId policyNftId,
|
108
|
+
ClaimId claimId
|
109
|
+
) external;
|
110
|
+
|
111
|
+
/// @dev creates a new payout for the specified claim
|
112
|
+
/// returns the id of the newly created payout, this id is unique for the specified policy
|
113
|
+
/// function can only be called by product, policy needs to match with calling product
|
114
|
+
function createPayout(
|
115
|
+
NftId policyNftId,
|
116
|
+
ClaimId claimId,
|
117
|
+
Amount amount,
|
118
|
+
bytes memory data
|
119
|
+
)
|
120
|
+
external
|
121
|
+
returns (PayoutId payoutId);
|
122
|
+
|
123
|
+
/// @dev processes the specified payout
|
124
|
+
/// this includes moving the payout token to the beneficiary (default: policy holder)
|
125
|
+
/// function can only be called by product, policy needs to match with calling product
|
126
|
+
function processPayout(
|
127
|
+
NftId policyNftId,
|
128
|
+
PayoutId payoutId
|
129
|
+
) external;
|
130
|
+
|
66
131
|
// TODO move function to pool service
|
67
132
|
function calculateRequiredCollateral(
|
68
133
|
UFixed collateralizationLevel,
|