@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.
Files changed (202) hide show
  1. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  2. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  4. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  14. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  16. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  17. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  20. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  21. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  22. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  24. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  26. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  27. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +160 -56
  28. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  29. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  30. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  31. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  32. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  33. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  34. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +396 -63
  35. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  36. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +20 -20
  37. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  38. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +212 -2
  39. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  40. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  41. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  43. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  44. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  46. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  48. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  52. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  59. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  60. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  74. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  75. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  76. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  82. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  83. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  84. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  86. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  87. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  88. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  89. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  90. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  91. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  92. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  93. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  94. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  95. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  96. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  97. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  99. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  100. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  101. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  102. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  103. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  104. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  105. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  106. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  108. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  110. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  111. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  119. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  123. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  124. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  127. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  128. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  132. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  133. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  134. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  137. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  138. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  139. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  140. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  143. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  144. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  145. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  147. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  152. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  153. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  154. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  155. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  156. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  157. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  158. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  159. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  160. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  161. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  162. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  163. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  164. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  165. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  166. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  167. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  168. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  169. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  170. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  173. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  174. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  175. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  176. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  178. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  179. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  181. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  183. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  184. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  186. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  187. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  188. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  190. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  191. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  192. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  193. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  194. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  195. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  196. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  197. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  198. package/contracts/examples/flight/FlightLib.sol +48 -37
  199. package/contracts/examples/flight/FlightProduct.sol +117 -11
  200. package/contracts/examples/flight/FlightProductAuthorization.sol +2 -1
  201. package/contracts/examples/flight/FlightUSD.sol +3 -1
  202. 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
- 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
- }
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
- require(premiumAmount >= flightProduct.MIN_PREMIUM(), "ERROR:FDD-001:INVALID_PREMIUM");
68
- require(premiumAmount <= flightProduct.MAX_PREMIUM(), "ERROR:FDD-002:INVALID_PREMIUM");
69
- require(arrivalTime > departureTime, "ERROR:FDD-003:ARRIVAL_BEFORE_DEPARTURE_TIME");
70
-
71
- // TODO decide how to handle demo mode
72
- require(
73
- arrivalTime <= departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION()),
74
- "ERROR:FDD-004:INVALID_ARRIVAL/DEPARTURE_TIME");
75
- require(
76
- TimestampLib.current() >= departureTime.subtractSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE()),
77
- "ERROR:FDD-005:INVALID_ARRIVAL/DEPARTURE_TIME");
78
- require(
79
- TimestampLib.current() <= departureTime.subtractSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE()),
80
- "ERROR:FDD-012:INVALID_ARRIVAL/DEPARTURE_TIME");
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
- require(statistics[0] >= flightProduct.MIN_OBSERVATIONS(), "ERROR:FDD-011:LOW_OBSERVATIONS");
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
- require(premium >= flightProduct.MIN_PREMIUM(), "ERROR:FDD-009:INVALID_PREMIUM");
196
- require(premium <= flightProduct.MAX_PREMIUM(), "ERROR:FDD-010:INVALID_PREMIUM");
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
- external
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
- require (
410
- flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount <= MAX_TOTAL_PAYOUT,
411
- "ERROR:FDD-006:CLUSTER_RISK"
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 ERC20 {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etherisc/gif-next",
3
- "version": "3.0.0-1a7e54a-113",
3
+ "version": "3.0.0-1d08e65-733",
4
4
  "description": "This is the repository for the next version of the Generic Insurance Framework (GIF) smart contracts. ",
5
5
  "main": "index.js",
6
6
  "scripts": {