@etherisc/gif-next 3.0.0-1a7e54a-113 → 3.0.0-1d08e65-733
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/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +160 -56
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +396 -63
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +20 -20
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +212 -2
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- 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/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- 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/IRelease.sol/IRelease.dbg.json +1 -1
- 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/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.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/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/examples/flight/FlightLib.sol +48 -37
- package/contracts/examples/flight/FlightProduct.sol +117 -11
- package/contracts/examples/flight/FlightProductAuthorization.sol +2 -1
- package/contracts/examples/flight/FlightUSD.sol +3 -1
- package/package.json +1 -1
@@ -24,33 +24,33 @@ library FlightLib {
|
|
24
24
|
Timestamp departureTime,
|
25
25
|
Timestamp arrivalTime,
|
26
26
|
Amount premiumAmount,
|
27
|
-
uint256[6] memory statistics
|
27
|
+
uint256[6] memory statistics
|
28
28
|
// signature fields
|
29
|
-
uint8 v,
|
30
|
-
bytes32 r,
|
31
|
-
bytes32 s
|
29
|
+
// uint8 v,
|
30
|
+
// bytes32 r,
|
31
|
+
// bytes32 s
|
32
32
|
)
|
33
33
|
public
|
34
34
|
view
|
35
35
|
{
|
36
36
|
_checkApplicationData(flightProduct, premiumAmount, arrivalTime, departureTime);
|
37
37
|
|
38
|
-
(
|
39
|
-
|
40
|
-
|
41
|
-
) = flightProduct.getFlightMessageVerifier().verifyRatingsHash(
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
if (!success) {
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
}
|
38
|
+
// (
|
39
|
+
// address actualSigner,,
|
40
|
+
// bool success
|
41
|
+
// ) = flightProduct.getFlightMessageVerifier().verifyRatingsHash(
|
42
|
+
// flightData,
|
43
|
+
// departureTime,
|
44
|
+
// arrivalTime,
|
45
|
+
// premiumAmount,
|
46
|
+
// statistics,
|
47
|
+
// v, r, s);
|
48
|
+
|
49
|
+
// if (!success) {
|
50
|
+
// revert FlightProduct.ErrorApplicationDataSignatureMismatch(
|
51
|
+
// flightProduct.getFlightMessageVerifier().getExpectedSigner(),
|
52
|
+
// actualSigner);
|
53
|
+
// }
|
54
54
|
}
|
55
55
|
|
56
56
|
|
@@ -64,20 +64,25 @@ library FlightLib {
|
|
64
64
|
view
|
65
65
|
{
|
66
66
|
// solhint-disable
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
67
|
+
if (premiumAmount < flightProduct.MIN_PREMIUM()) {
|
68
|
+
revert FlightProduct.ErrorFlightProductPremiumAmountTooSmall(premiumAmount, flightProduct.MIN_PREMIUM());
|
69
|
+
}
|
70
|
+
if (premiumAmount > flightProduct.MAX_PREMIUM()) {
|
71
|
+
revert FlightProduct.ErrorFlightProductPremiumAmountTooLarge(premiumAmount, flightProduct.MAX_PREMIUM());
|
72
|
+
}
|
73
|
+
if (arrivalTime <= departureTime) {
|
74
|
+
revert FlightProduct.ErrorFlightProductArrivalBeforeDepartureTime(departureTime, arrivalTime);
|
75
|
+
}
|
76
|
+
|
77
|
+
if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
|
78
|
+
revert FlightProduct.ErrorFlightProductArrivalAfterMaxFlightDuration(arrivalTime, departureTime, flightProduct.MAX_FLIGHT_DURATION());
|
79
|
+
}
|
80
|
+
if (departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
|
81
|
+
revert FlightProduct.ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MIN_TIME_BEFORE_DEPARTURE());
|
82
|
+
}
|
83
|
+
if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
|
84
|
+
revert FlightProduct.ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MAX_TIME_BEFORE_DEPARTURE());
|
85
|
+
}
|
81
86
|
// solhint-enable
|
82
87
|
}
|
83
88
|
|
@@ -161,7 +166,9 @@ library FlightLib {
|
|
161
166
|
returns (uint256 weight)
|
162
167
|
{
|
163
168
|
// check we have enough observations
|
164
|
-
|
169
|
+
if (statistics[0] < flightProduct.MIN_OBSERVATIONS()) {
|
170
|
+
revert FlightProduct.ErrorFlightProductNotEnoughObservations(statistics[0], flightProduct.MIN_OBSERVATIONS());
|
171
|
+
}
|
165
172
|
|
166
173
|
weight = 0;
|
167
174
|
for (uint256 i = 1; i < 6; i++) {
|
@@ -192,8 +199,12 @@ library FlightLib {
|
|
192
199
|
Amount sumInsuredAmount // simply the max of payoutAmounts
|
193
200
|
)
|
194
201
|
{
|
195
|
-
|
196
|
-
|
202
|
+
if (premium < flightProduct.MIN_PREMIUM()) {
|
203
|
+
revert FlightProduct.ErrorFlightProductPremiumAmountTooSmall(premium, flightProduct.MIN_PREMIUM());
|
204
|
+
}
|
205
|
+
if (premium > flightProduct.MAX_PREMIUM()) {
|
206
|
+
revert FlightProduct.ErrorFlightProductPremiumAmountTooLarge(premium, flightProduct.MAX_PREMIUM());
|
207
|
+
}
|
197
208
|
|
198
209
|
sumInsuredAmount = AmountLib.zero();
|
199
210
|
weight = calculateWeight(flightProduct, statistics);
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
|
4
5
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
6
|
|
6
7
|
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
@@ -43,6 +44,14 @@ contract FlightProduct is
|
|
43
44
|
event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
|
44
45
|
|
45
46
|
error ErrorApplicationDataSignatureMismatch(address expectedSigner, address actualSigner);
|
47
|
+
error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
|
48
|
+
error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
|
49
|
+
error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
|
50
|
+
error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
|
51
|
+
error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
|
52
|
+
error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
|
53
|
+
error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
|
54
|
+
error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
|
46
55
|
|
47
56
|
// solhint-disable
|
48
57
|
// Minimum observations for valid prediction
|
@@ -100,6 +109,27 @@ contract FlightProduct is
|
|
100
109
|
int256 delayMinutes;
|
101
110
|
}
|
102
111
|
|
112
|
+
struct ApplicationData {
|
113
|
+
Str flightData;
|
114
|
+
Timestamp departureTime;
|
115
|
+
Timestamp arrivalTime;
|
116
|
+
Amount premiumAmount;
|
117
|
+
uint256[6] statistics;
|
118
|
+
uint8 v;
|
119
|
+
bytes32 r;
|
120
|
+
bytes32 s;
|
121
|
+
}
|
122
|
+
|
123
|
+
struct PermitData {
|
124
|
+
address owner;
|
125
|
+
address spender;
|
126
|
+
uint256 value;
|
127
|
+
uint256 deadline;
|
128
|
+
uint8 v;
|
129
|
+
bytes32 r;
|
130
|
+
bytes32 s;
|
131
|
+
}
|
132
|
+
|
103
133
|
|
104
134
|
constructor(
|
105
135
|
address registry,
|
@@ -131,6 +161,82 @@ contract FlightProduct is
|
|
131
161
|
getNftId()).oracleNftId[0];
|
132
162
|
}
|
133
163
|
|
164
|
+
function calculatePayoutAmounts(
|
165
|
+
FlightProduct flightProduct,
|
166
|
+
Amount premium,
|
167
|
+
uint256[6] memory statistics
|
168
|
+
)
|
169
|
+
external
|
170
|
+
view
|
171
|
+
returns (
|
172
|
+
uint256 weight,
|
173
|
+
Amount[5] memory payoutAmounts,
|
174
|
+
Amount sumInsuredAmount // simply the max of payoutAmounts
|
175
|
+
)
|
176
|
+
{
|
177
|
+
return FlightLib.calculatePayoutAmounts(
|
178
|
+
flightProduct,
|
179
|
+
premium,
|
180
|
+
statistics);
|
181
|
+
}
|
182
|
+
|
183
|
+
/// @dev Creates a policy using a permit for the policy holder.
|
184
|
+
/// The policy holder is defined as the owner parameter of the permit data.
|
185
|
+
/// NOTE: This function makes the assumption that the product token
|
186
|
+
/// supports permits. This assumption is not verfied.
|
187
|
+
function createPolicyWithPermit(
|
188
|
+
PermitData memory permit,
|
189
|
+
ApplicationData memory application
|
190
|
+
)
|
191
|
+
external
|
192
|
+
virtual
|
193
|
+
restricted()
|
194
|
+
returns (
|
195
|
+
RiskId riskId,
|
196
|
+
NftId policyNftId
|
197
|
+
)
|
198
|
+
{
|
199
|
+
// process permit data
|
200
|
+
processPermit(permit);
|
201
|
+
|
202
|
+
// create policy
|
203
|
+
address policyHolder = permit.owner;
|
204
|
+
(
|
205
|
+
riskId,
|
206
|
+
policyNftId
|
207
|
+
) = createPolicy(
|
208
|
+
policyHolder,
|
209
|
+
application.flightData,
|
210
|
+
application.departureTime,
|
211
|
+
application.arrivalTime,
|
212
|
+
application.premiumAmount,
|
213
|
+
application.statistics);
|
214
|
+
// application.v,
|
215
|
+
// application.r,
|
216
|
+
// application.s);
|
217
|
+
}
|
218
|
+
|
219
|
+
|
220
|
+
function processPermit(
|
221
|
+
PermitData memory permit
|
222
|
+
)
|
223
|
+
public
|
224
|
+
virtual
|
225
|
+
restricted()
|
226
|
+
{
|
227
|
+
address tokenAddress = address(getToken());
|
228
|
+
|
229
|
+
// process permit data
|
230
|
+
ERC20Permit(tokenAddress).permit(
|
231
|
+
permit.owner,
|
232
|
+
permit.spender,
|
233
|
+
permit.value,
|
234
|
+
permit.deadline,
|
235
|
+
permit.v,
|
236
|
+
permit.r,
|
237
|
+
permit.s);
|
238
|
+
}
|
239
|
+
|
134
240
|
|
135
241
|
function createPolicy(
|
136
242
|
address policyHolder,
|
@@ -138,13 +244,13 @@ contract FlightProduct is
|
|
138
244
|
Timestamp departureTime,
|
139
245
|
Timestamp arrivalTime,
|
140
246
|
Amount premiumAmount,
|
141
|
-
uint256[6] memory statistics
|
247
|
+
uint256[6] memory statistics
|
142
248
|
// signature fields
|
143
|
-
uint8 v,
|
144
|
-
bytes32 r,
|
145
|
-
bytes32 s
|
249
|
+
// uint8 v,
|
250
|
+
// bytes32 r,
|
251
|
+
// bytes32 s
|
146
252
|
)
|
147
|
-
|
253
|
+
public
|
148
254
|
virtual
|
149
255
|
restricted()
|
150
256
|
returns (
|
@@ -153,14 +259,15 @@ contract FlightProduct is
|
|
153
259
|
)
|
154
260
|
{
|
155
261
|
// checks
|
262
|
+
// disabled for now - using rbac for security
|
156
263
|
FlightLib.checkApplicationDataAndSignature(
|
157
264
|
this,
|
158
265
|
flightData,
|
159
266
|
departureTime,
|
160
267
|
arrivalTime,
|
161
268
|
premiumAmount,
|
162
|
-
statistics
|
163
|
-
v, r, s);
|
269
|
+
statistics);
|
270
|
+
// v, r, s);
|
164
271
|
|
165
272
|
(riskId, policyNftId) = _prepareApplication(
|
166
273
|
policyHolder,
|
@@ -406,10 +513,9 @@ contract FlightProduct is
|
|
406
513
|
}
|
407
514
|
|
408
515
|
// check for cluster risk: additional sum insured amount must not exceed MAX_TOTAL_PAYOUT
|
409
|
-
|
410
|
-
flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount
|
411
|
-
|
412
|
-
);
|
516
|
+
if (flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount > MAX_TOTAL_PAYOUT) {
|
517
|
+
revert ErrorFlightProductClusterRisk(flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount, MAX_TOTAL_PAYOUT);
|
518
|
+
}
|
413
519
|
|
414
520
|
// update existing risk with additional sum insured amount
|
415
521
|
flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
|
@@ -31,8 +31,9 @@ contract FlightProductAuthorization
|
|
31
31
|
// authorize public role (open access to any account, only allows to lock target)
|
32
32
|
functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
|
33
33
|
_authorize(functions, FlightProduct.createPolicy.selector, "createPolicy");
|
34
|
+
_authorize(functions, FlightProduct.createPolicyWithPermit.selector, "createPolicyWithPermit");
|
34
35
|
|
35
|
-
// only owner
|
36
|
+
// TODO: only owner
|
36
37
|
_authorize(functions, FlightProduct.processFlightStatus.selector, "processFlightStatus");
|
37
38
|
_authorize(functions, FlightProduct.completeSetup.selector, "completeSetup");
|
38
39
|
_authorize(functions, FlightProduct.setDefaultBundle.selector, "setDefaultBundle");
|
@@ -2,9 +2,10 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
5
|
+
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
|
5
6
|
|
6
7
|
/// @dev FireUSD is a stablecoin with 6 decimals and an initial supply of 1 Billion tokens.
|
7
|
-
contract FlightUSD is
|
8
|
+
contract FlightUSD is ERC20Permit {
|
8
9
|
|
9
10
|
string public constant NAME = "FlightUSD";
|
10
11
|
string public constant SYMBOL = "FLTD";
|
@@ -12,6 +13,7 @@ contract FlightUSD is ERC20 {
|
|
12
13
|
uint256 public constant INITIAL_SUPPLY = 10**12 * 10**DECIMALS; // 1'000'000'000'000
|
13
14
|
|
14
15
|
constructor()
|
16
|
+
ERC20Permit(NAME)
|
15
17
|
ERC20(NAME, SYMBOL)
|
16
18
|
{
|
17
19
|
_mint(
|
package/package.json
CHANGED