@etherisc/gif-next 3.0.0-52e15cf-819 → 3.0.0-5438ecb-315
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 +9 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +42 -56
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +44 -48
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +14 -20
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +119 -119
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +42 -29
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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/IAccessAdmin.sol/IAccessAdmin.json +75 -63
- 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/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +20 -114
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +2 -96
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +187 -114
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -75
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +2 -96
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +113 -40
- package/artifacts/contracts/examples/crop/AccountingToken.sol/AccountingToken.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/AccountingToken.sol/AccountingToken.json +376 -0
- package/artifacts/contracts/examples/crop/CropPool.sol/CropPool.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/CropPool.sol/CropPool.json +1391 -0
- package/artifacts/contracts/examples/crop/CropPoolAuthorization.sol/CropPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/CropPoolAuthorization.sol/CropPoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/crop/CropProduct.sol/CropProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/CropProduct.sol/CropProduct.json +2433 -0
- package/artifacts/contracts/examples/crop/CropProductAuthorization.sol/CropProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/CropProductAuthorization.sol/CropProductAuthorization.json +891 -0
- package/artifacts/contracts/examples/crop/Location.sol/LocationLib.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/Location.sol/LocationLib.json +199 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +2 -2
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +21 -96
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +79 -159
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +2 -2
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +221 -86
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +2 -2
- package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +167 -132
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +23 -98
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +453 -745
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +2 -2
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +28 -122
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +91 -83
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +29 -104
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +42 -122
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +59 -72
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +34 -21
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +108 -9
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -33
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +197 -197
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +21 -21
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +184 -42
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +151 -36
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +41 -41
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +171 -121
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +166 -107
- package/artifacts/contracts/instance/RequestSet.sol/RequestSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RequestSet.sol/RequestSet.json +466 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +92 -105
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +9 -9
- 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/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +3 -3
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +40 -4
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +85 -77
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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/IOracleComponent.sol/IOracleComponent.json +67 -59
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +19 -13
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +71 -63
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +57 -51
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +50 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +4 -79
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +90 -85
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +62 -62
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -27
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +4 -79
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +56 -44
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +4 -79
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +4 -9
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +124 -112
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +44 -44
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -44
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +4 -79
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +86 -80
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -67
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -18
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +24 -18
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +21 -9
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +4 -4
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +4 -79
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -45
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +81 -69
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +25 -17
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +60 -60
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +42 -42
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +51 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +4 -79
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +53 -87
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +41 -49
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +58 -8
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +30 -24
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +2 -2
- 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/Registry.sol/Registry.json +132 -66
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -188
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -27
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +8 -8
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -37
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +205 -205
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +122 -119
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +19 -19
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +20 -20
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +2 -77
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +329 -113
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +61 -61
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
- 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/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +2 -77
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +2 -77
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +271 -55
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +2 -77
- 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/INftOwnable.sol/INftOwnable.json +2 -2
- 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/IRegisterable.sol/IRegisterable.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +2 -77
- 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/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +4 -4
- 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/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 +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +39 -66
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +22 -49
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +28 -28
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +91 -147
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +15 -221
- 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/Staking.sol/Staking.json +139 -195
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -7
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +53 -53
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +35 -241
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +40 -40
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +220 -220
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +9 -14
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -7
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -7
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -7
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +23 -4
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +17 -22
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -7
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
- 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/ProxyManager.sol/ProxyManager.json +22 -22
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +17 -29
- package/contracts/accounting/IAccountingService.sol +7 -8
- package/contracts/authorization/AccessAdmin.sol +16 -33
- package/contracts/authorization/AccessAdminLib.sol +18 -1
- package/contracts/authorization/AccessManagerCloneable.sol +4 -0
- package/contracts/authorization/IAccessAdmin.sol +9 -8
- package/contracts/distribution/DistributionService.sol +24 -19
- package/contracts/distribution/IDistributionComponent.sol +0 -2
- package/contracts/distribution/IDistributionService.sol +8 -7
- package/contracts/examples/crop/AccountingToken.sol +26 -0
- package/contracts/examples/crop/CropPool.sol +89 -0
- package/contracts/examples/crop/CropPoolAuthorization.sol +37 -0
- package/contracts/examples/crop/CropProduct.sol +512 -0
- package/contracts/examples/crop/CropProductAuthorization.sol +69 -0
- package/contracts/examples/crop/Location.sol +50 -0
- package/contracts/examples/fire/FireProduct.sol +1 -1
- package/contracts/examples/flight/FlightLib.sol +95 -108
- package/contracts/examples/flight/FlightNft.sol +234 -0
- package/contracts/examples/flight/FlightOracle.sol +22 -60
- package/contracts/examples/flight/FlightOracleAuthorization.sol +27 -5
- package/contracts/examples/flight/FlightPool.sol +1 -1
- package/contracts/examples/flight/FlightProduct.sol +288 -249
- package/contracts/examples/flight/FlightProductAuthorization.sol +35 -10
- package/contracts/examples/flight/FlightProductManager.sol +49 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +1 -5
- package/contracts/instance/BaseStore.sol +4 -0
- package/contracts/instance/BundleSet.sol +7 -8
- package/contracts/instance/IBaseStore.sol +8 -0
- package/contracts/instance/IInstance.sol +10 -7
- package/contracts/instance/IInstanceService.sol +11 -4
- package/contracts/instance/Instance.sol +8 -0
- package/contracts/instance/InstanceAdmin.sol +2 -2
- package/contracts/instance/InstanceAuthorizationV3.sol +15 -1
- package/contracts/instance/InstanceReader.sol +55 -8
- package/contracts/instance/InstanceService.sol +68 -36
- package/contracts/instance/InstanceStore.sol +14 -14
- package/contracts/instance/ProductStore.sol +16 -15
- package/contracts/instance/RequestSet.sol +63 -0
- package/contracts/instance/RiskSet.sol +6 -7
- package/contracts/instance/TargetNames.sol +1 -0
- package/contracts/instance/base/BalanceStore.sol +7 -7
- package/contracts/instance/base/ObjectCounter.sol +7 -5
- package/contracts/instance/base/ObjectSet.sol +9 -1
- package/contracts/instance/base/ObjectSetHelperLib.sol +5 -1
- package/contracts/oracle/BasicOracle.sol +1 -0
- package/contracts/oracle/IOracleComponent.sol +10 -0
- package/contracts/oracle/IOracleService.sol +5 -5
- package/contracts/oracle/Oracle.sol +50 -26
- package/contracts/oracle/OracleService.sol +26 -23
- package/contracts/pool/BundleService.sol +3 -3
- package/contracts/pool/IBundleService.sol +9 -10
- package/contracts/pool/IPoolComponent.sol +1 -1
- package/contracts/pool/IPoolService.sol +14 -14
- package/contracts/pool/PoolService.sol +2 -2
- package/contracts/product/ClaimService.sol +1 -1
- package/contracts/product/IApplicationService.sol +8 -8
- package/contracts/product/IClaimService.sol +9 -9
- package/contracts/product/IPolicyService.sol +7 -7
- package/contracts/product/IRiskService.sol +4 -6
- package/contracts/product/PolicyService.sol +1 -1
- package/contracts/product/PolicyServiceLib.sol +5 -3
- package/contracts/product/Product.sol +1 -5
- package/contracts/product/RiskService.sol +3 -8
- package/contracts/registry/ChainNft.sol +10 -9
- package/contracts/registry/IRegistry.sol +11 -10
- package/contracts/registry/Registry.sol +16 -13
- package/contracts/registry/RegistryAdmin.sol +7 -1
- package/contracts/registry/RegistryAuthorization.sol +0 -2
- package/contracts/registry/ReleaseAdmin.sol +12 -5
- package/contracts/registry/ReleaseRegistry.sol +7 -8
- package/contracts/registry/TokenRegistry.sol +3 -3
- package/contracts/shared/ComponentService.sol +38 -4
- package/contracts/shared/IComponent.sol +0 -4
- package/contracts/shared/IComponentService.sol +31 -9
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +1 -1
- package/contracts/shared/TokenHandler.sol +5 -5
- package/contracts/staking/IStaking.sol +33 -31
- package/contracts/staking/IStakingService.sol +7 -16
- package/contracts/staking/Staking.sol +5 -4
- package/contracts/staking/StakingService.sol +2 -3
- package/contracts/staking/StakingStore.sol +3 -3
- package/contracts/staking/TargetHandler.sol +2 -2
- package/contracts/type/RequestId.sol +6 -0
- package/contracts/type/RiskId.sol +8 -8
- package/contracts/upgradeability/ProxyManager.sol +2 -2
- package/package.json +3 -3
@@ -6,10 +6,11 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
|
|
6
6
|
|
7
7
|
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
8
8
|
import {IComponents} from "../../instance/module/IComponents.sol";
|
9
|
+
import {IPolicy} from "../../instance/module/IPolicy.sol";
|
9
10
|
|
10
11
|
import {Amount, AmountLib} from "../../type/Amount.sol";
|
11
|
-
import {BasicProduct} from "../../product/BasicProduct.sol";
|
12
12
|
import {ClaimId} from "../../type/ClaimId.sol";
|
13
|
+
import {Component} from "../../shared/Component.sol";
|
13
14
|
import {FeeLib} from "../../type/Fee.sol";
|
14
15
|
import {FlightLib} from "./FlightLib.sol";
|
15
16
|
import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
|
@@ -17,109 +18,89 @@ import {FlightOracle} from "./FlightOracle.sol";
|
|
17
18
|
import {InstanceReader} from "../../instance/InstanceReader.sol";
|
18
19
|
import {NftId, NftIdLib} from "../../type/NftId.sol";
|
19
20
|
import {PayoutId} from "../../type/PayoutId.sol";
|
21
|
+
import {Product} from "../../product/Product.sol";
|
20
22
|
import {ReferralLib} from "../../type/Referral.sol";
|
21
23
|
import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
|
22
24
|
import {RequestId} from "../../type/RequestId.sol";
|
23
25
|
import {Seconds, SecondsLib} from "../../type/Seconds.sol";
|
24
|
-
import {Str} from "../../type/String.sol";
|
26
|
+
import {Str, StrLib} from "../../type/String.sol";
|
25
27
|
import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
26
28
|
|
27
29
|
|
28
30
|
/// @dev FlightProduct implements the flight delay product.
|
29
31
|
contract FlightProduct is
|
30
|
-
|
32
|
+
Product
|
31
33
|
{
|
32
34
|
|
33
|
-
event
|
34
|
-
event
|
35
|
-
event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
|
36
|
-
event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
|
37
|
-
|
38
|
-
// TODO convert error logs to custom errors
|
39
|
-
event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
|
40
|
-
event LogPolicyExpired(bytes32 bpKey);
|
35
|
+
event LogFlightPolicyPurchased(NftId policyNftId, string flightData, Amount premiumAmount);
|
36
|
+
event LogFlightPolicyClosed(NftId policyNftId, Amount payoutAmount);
|
41
37
|
|
42
|
-
event
|
43
|
-
event
|
44
|
-
event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
|
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);
|
38
|
+
event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
|
39
|
+
event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
|
55
40
|
|
56
41
|
// solhint-disable
|
57
|
-
|
58
|
-
|
42
|
+
Amount public MIN_PREMIUM;
|
43
|
+
Amount public MAX_PREMIUM;
|
44
|
+
Amount public MAX_PAYOUT;
|
45
|
+
Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight/risk
|
46
|
+
|
59
47
|
// Minimum time before departure for applying
|
60
|
-
Seconds public MIN_TIME_BEFORE_DEPARTURE
|
48
|
+
Seconds public MIN_TIME_BEFORE_DEPARTURE;
|
61
49
|
// Maximum time before departure for applying
|
62
|
-
Seconds public MAX_TIME_BEFORE_DEPARTURE
|
50
|
+
Seconds public MAX_TIME_BEFORE_DEPARTURE;
|
63
51
|
// Maximum duration of flight
|
64
|
-
Seconds public MAX_FLIGHT_DURATION
|
65
|
-
// Check for delay after .. minutes after scheduled arrival
|
66
|
-
Seconds public CHECK_OFFSET = SecondsLib.fromHours(1);
|
52
|
+
Seconds public MAX_FLIGHT_DURATION;
|
67
53
|
// Max time to process claims after departure
|
68
|
-
Seconds public LIFETIME
|
69
|
-
|
70
|
-
// uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
|
71
|
-
// All amounts in cent = multiplier is 10 ** 16!
|
72
|
-
Amount public MIN_PREMIUM;
|
73
|
-
Amount public MAX_PREMIUM;
|
74
|
-
Amount public MAX_PAYOUT;
|
75
|
-
Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight is 3x max payout.
|
54
|
+
Seconds public LIFETIME;
|
76
55
|
|
56
|
+
// ['observations','late15','late30','late45','cancelled','diverted']
|
57
|
+
// no payouts for delays of 30' or less
|
58
|
+
uint8[6] public WEIGHT_PATTERN;
|
59
|
+
// Minimum number of observations for valid prediction/premium calculation
|
60
|
+
uint256 public MIN_OBSERVATIONS;
|
77
61
|
// Maximum cumulated weighted premium per risk
|
78
|
-
uint256 public MARGIN_PERCENT
|
79
|
-
|
62
|
+
uint256 public MARGIN_PERCENT;
|
80
63
|
// Maximum number of policies to process in one callback
|
81
|
-
uint8 public MAX_POLICIES_TO_PROCESS
|
64
|
+
uint8 public MAX_POLICIES_TO_PROCESS;
|
65
|
+
// solhint-enable
|
82
66
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
67
|
+
bool internal _testMode;
|
68
|
+
|
69
|
+
mapping(RiskId riskId => RequestId requestId) internal _requests;
|
70
|
+
mapping(bytes32 encodedRisk => RiskId) internal _risks;
|
87
71
|
|
88
72
|
// GIF V3 specifics
|
89
73
|
NftId internal _defaultBundleNftId;
|
90
|
-
|
91
|
-
// TODO add product (base contract) functions
|
92
|
-
// - getOracleNftId(idx)
|
93
|
-
// - getDistributionNftId()
|
94
|
-
// - getPoolNftId()
|
95
|
-
NftId internal _oracleNftId; // TODO refactor to getOracleNftId(0)
|
96
|
-
// solhint-enable
|
97
|
-
|
98
|
-
FlightMessageVerifier internal _flightMessageVerifier;
|
74
|
+
NftId internal _oracleNftId;
|
99
75
|
|
100
76
|
|
101
77
|
struct FlightRisk {
|
102
78
|
Str flightData; // example: "LX 180 ZRH BKK 20241104"
|
103
79
|
Timestamp departureTime;
|
80
|
+
// this field contains static data required by the frontend and is not directly used by the product
|
81
|
+
string departureTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
104
82
|
Timestamp arrivalTime;
|
83
|
+
// this field contains static data required by the frontend and is not directly used by the product
|
84
|
+
string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
105
85
|
Amount sumOfSumInsuredAmounts;
|
106
|
-
// uint256 premiumMultiplier; // what is this? UFixed?
|
107
|
-
// uint256 weight; // what is this? UFixed?
|
108
86
|
bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
|
109
87
|
int256 delayMinutes;
|
88
|
+
uint8 payoutOption;
|
89
|
+
Timestamp statusUpdatedAt;
|
110
90
|
}
|
111
91
|
|
92
|
+
|
112
93
|
struct ApplicationData {
|
113
|
-
|
94
|
+
string flightData;
|
114
95
|
Timestamp departureTime;
|
96
|
+
string departureTimeLocal;
|
115
97
|
Timestamp arrivalTime;
|
98
|
+
string arrivalTimeLocal;
|
116
99
|
Amount premiumAmount;
|
117
100
|
uint256[6] statistics;
|
118
|
-
uint8 v;
|
119
|
-
bytes32 r;
|
120
|
-
bytes32 s;
|
121
101
|
}
|
122
102
|
|
103
|
+
|
123
104
|
struct PermitData {
|
124
105
|
address owner;
|
125
106
|
address spender;
|
@@ -133,24 +114,22 @@ contract FlightProduct is
|
|
133
114
|
|
134
115
|
constructor(
|
135
116
|
address registry,
|
136
|
-
NftId
|
117
|
+
NftId instanceNftId,
|
137
118
|
string memory componentName,
|
138
|
-
IAuthorization authorization
|
139
|
-
FlightMessageVerifier messageVerifier
|
119
|
+
IAuthorization authorization
|
140
120
|
)
|
141
121
|
{
|
142
122
|
address initialOwner = msg.sender;
|
143
123
|
|
144
124
|
_initialize(
|
145
125
|
registry,
|
146
|
-
|
126
|
+
instanceNftId,
|
147
127
|
componentName,
|
148
128
|
authorization,
|
149
129
|
initialOwner);
|
150
|
-
|
151
|
-
_flightMessageVerifier = messageVerifier;
|
152
130
|
}
|
153
131
|
|
132
|
+
|
154
133
|
//--- external functions ------------------------------------------------//
|
155
134
|
//--- unpermissioned functions ------------------------------------------//
|
156
135
|
|
@@ -161,6 +140,7 @@ contract FlightProduct is
|
|
161
140
|
getNftId()).oracleNftId[0];
|
162
141
|
}
|
163
142
|
|
143
|
+
|
164
144
|
function calculatePayoutAmounts(
|
165
145
|
FlightProduct flightProduct,
|
166
146
|
Amount premium,
|
@@ -197,30 +177,156 @@ contract FlightProduct is
|
|
197
177
|
)
|
198
178
|
{
|
199
179
|
// process permit data
|
200
|
-
|
180
|
+
_processPermit(permit);
|
201
181
|
|
202
182
|
// create policy
|
203
183
|
address policyHolder = permit.owner;
|
204
184
|
(
|
205
185
|
riskId,
|
206
186
|
policyNftId
|
207
|
-
) =
|
187
|
+
) = _createPolicy(
|
208
188
|
policyHolder,
|
209
|
-
application.flightData,
|
189
|
+
StrLib.toStr(application.flightData),
|
210
190
|
application.departureTime,
|
191
|
+
application.departureTimeLocal,
|
211
192
|
application.arrivalTime,
|
193
|
+
application.arrivalTimeLocal,
|
212
194
|
application.premiumAmount,
|
213
195
|
application.statistics);
|
214
|
-
// application.v,
|
215
|
-
// application.r,
|
216
|
-
// application.s);
|
217
196
|
}
|
218
197
|
|
219
198
|
|
220
|
-
|
221
|
-
|
199
|
+
/// @dev Callback for flight status oracle.
|
200
|
+
/// Function may only be alled by oracle service.
|
201
|
+
function flightStatusCallback(
|
202
|
+
RequestId requestId,
|
203
|
+
bytes memory responseData
|
204
|
+
)
|
205
|
+
external
|
206
|
+
virtual
|
207
|
+
restricted()
|
208
|
+
{
|
209
|
+
FlightOracle.FlightStatusResponse memory response = abi.decode(
|
210
|
+
responseData, (FlightOracle.FlightStatusResponse));
|
211
|
+
|
212
|
+
_processFlightStatus(
|
213
|
+
requestId,
|
214
|
+
response.riskId,
|
215
|
+
response.status,
|
216
|
+
response.delayMinutes);
|
217
|
+
}
|
218
|
+
|
219
|
+
|
220
|
+
function resendResponse(RequestId requestId)
|
221
|
+
external
|
222
|
+
virtual
|
223
|
+
restricted()
|
224
|
+
{
|
225
|
+
_resendResponse(requestId);
|
226
|
+
}
|
227
|
+
|
228
|
+
|
229
|
+
/// @dev Manual fallback function for product owner.
|
230
|
+
function processPayoutsAndClosePolicies(
|
231
|
+
RiskId riskId,
|
232
|
+
uint8 maxPoliciesToProcess
|
233
|
+
)
|
234
|
+
external
|
235
|
+
virtual
|
236
|
+
restricted()
|
237
|
+
onlyOwner()
|
238
|
+
{
|
239
|
+
_processPayoutsAndClosePolicies(
|
240
|
+
riskId,
|
241
|
+
maxPoliciesToProcess);
|
242
|
+
}
|
243
|
+
|
244
|
+
|
245
|
+
//--- owner functions ---------------------------------------------------//
|
246
|
+
|
247
|
+
/// @dev Call after product registration with the instance
|
248
|
+
/// when the product token/tokenhandler is available
|
249
|
+
function setConstants(
|
250
|
+
Amount minPremium,
|
251
|
+
Amount maxPremium,
|
252
|
+
Amount maxPayout,
|
253
|
+
Amount maxTotalPayout,
|
254
|
+
Seconds minTimeBeforeDeparture,
|
255
|
+
Seconds maxTimeBeforeDeparture,
|
256
|
+
uint8 maxPoliciesToProcess
|
257
|
+
)
|
258
|
+
external
|
259
|
+
virtual
|
260
|
+
restricted()
|
261
|
+
onlyOwner()
|
262
|
+
{
|
263
|
+
MIN_PREMIUM = minPremium;
|
264
|
+
MAX_PREMIUM = maxPremium;
|
265
|
+
MAX_PAYOUT = maxPayout;
|
266
|
+
MAX_TOTAL_PAYOUT = maxTotalPayout;
|
267
|
+
|
268
|
+
MIN_TIME_BEFORE_DEPARTURE = minTimeBeforeDeparture;
|
269
|
+
MAX_TIME_BEFORE_DEPARTURE = maxTimeBeforeDeparture;
|
270
|
+
MAX_POLICIES_TO_PROCESS = maxPoliciesToProcess;
|
271
|
+
}
|
272
|
+
|
273
|
+
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
274
|
+
function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
|
275
|
+
|
276
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
277
|
+
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
278
|
+
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
279
|
+
|
280
|
+
|
281
|
+
//--- view functions ----------------------------------------------------//
|
282
|
+
|
283
|
+
function calculateNetPremium(
|
284
|
+
Amount, // sumInsuredAmount: not used in this product
|
285
|
+
RiskId, // riskId: not used in this product
|
286
|
+
Seconds, // lifetime: not used in this product, a flight is a one time risk
|
287
|
+
bytes memory applicationData // holds the premium amount the customer is willing to pay
|
288
|
+
)
|
289
|
+
external
|
290
|
+
virtual override
|
291
|
+
view
|
292
|
+
returns (Amount netPremiumAmount)
|
293
|
+
{
|
294
|
+
(netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
|
295
|
+
}
|
296
|
+
|
297
|
+
|
298
|
+
function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
|
299
|
+
function isTestMode() public view returns (bool) { return _testMode; }
|
300
|
+
|
301
|
+
|
302
|
+
function getFlightRisk(
|
303
|
+
RiskId riskId,
|
304
|
+
bool requireRiskExists
|
222
305
|
)
|
223
306
|
public
|
307
|
+
view
|
308
|
+
returns (
|
309
|
+
bool exists,
|
310
|
+
FlightRisk memory flightRisk
|
311
|
+
)
|
312
|
+
{
|
313
|
+
(exists, flightRisk) = FlightLib.getFlightRisk(
|
314
|
+
_getInstanceReader(),
|
315
|
+
getNftId(),
|
316
|
+
riskId,
|
317
|
+
requireRiskExists);
|
318
|
+
}
|
319
|
+
|
320
|
+
function getRequestForRisk(RiskId riskId) public view returns (RequestId requestId) { return _requests[riskId]; }
|
321
|
+
function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
|
322
|
+
|
323
|
+
//--- internal functions ------------------------------------------------//
|
324
|
+
|
325
|
+
|
326
|
+
function _processPermit(
|
327
|
+
PermitData memory permit
|
328
|
+
)
|
329
|
+
internal
|
224
330
|
virtual
|
225
331
|
restricted()
|
226
332
|
{
|
@@ -238,21 +344,18 @@ contract FlightProduct is
|
|
238
344
|
}
|
239
345
|
|
240
346
|
|
241
|
-
function
|
347
|
+
function _createPolicy(
|
242
348
|
address policyHolder,
|
243
349
|
Str flightData,
|
244
350
|
Timestamp departureTime,
|
351
|
+
string memory departureTimeLocal,
|
245
352
|
Timestamp arrivalTime,
|
353
|
+
string memory arrivalTimeLocal,
|
246
354
|
Amount premiumAmount,
|
247
355
|
uint256[6] memory statistics
|
248
|
-
// signature fields
|
249
|
-
// uint8 v,
|
250
|
-
// bytes32 r,
|
251
|
-
// bytes32 s
|
252
356
|
)
|
253
|
-
|
357
|
+
internal
|
254
358
|
virtual
|
255
|
-
restricted()
|
256
359
|
returns (
|
257
360
|
RiskId riskId,
|
258
361
|
NftId policyNftId
|
@@ -260,20 +363,20 @@ contract FlightProduct is
|
|
260
363
|
{
|
261
364
|
// checks
|
262
365
|
// disabled for now - using rbac for security
|
263
|
-
FlightLib.
|
366
|
+
FlightLib.checkApplicationData(
|
264
367
|
this,
|
265
368
|
flightData,
|
266
369
|
departureTime,
|
267
370
|
arrivalTime,
|
268
|
-
premiumAmount
|
269
|
-
statistics);
|
270
|
-
// v, r, s);
|
371
|
+
premiumAmount);
|
271
372
|
|
272
373
|
(riskId, policyNftId) = _prepareApplication(
|
273
374
|
policyHolder,
|
274
375
|
flightData,
|
275
376
|
departureTime,
|
377
|
+
departureTimeLocal,
|
276
378
|
arrivalTime,
|
379
|
+
arrivalTimeLocal,
|
277
380
|
premiumAmount,
|
278
381
|
statistics);
|
279
382
|
|
@@ -287,17 +390,21 @@ contract FlightProduct is
|
|
287
390
|
policyNftId,
|
288
391
|
departureTime); // activate at scheduled departure time of flight
|
289
392
|
|
290
|
-
// send oracle request for flight status (interacts with flight oracle contract)
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
393
|
+
// send oracle request for for new risk to obtain flight status (interacts with flight oracle contract)
|
394
|
+
if (_requests[riskId].eqz()) {
|
395
|
+
_requests[riskId] = _sendRequest(
|
396
|
+
_oracleNftId,
|
397
|
+
abi.encode(
|
398
|
+
FlightOracle.FlightStatusRequest(
|
399
|
+
riskId,
|
400
|
+
flightData,
|
401
|
+
departureTime)),
|
402
|
+
// allow up to 30 days to process the claim
|
403
|
+
arrivalTime.addSeconds(SecondsLib.fromDays(30)),
|
404
|
+
"flightStatusCallback");
|
405
|
+
}
|
406
|
+
|
407
|
+
emit LogFlightPolicyPurchased(policyNftId, flightData.toString(), premiumAmount);
|
301
408
|
}
|
302
409
|
|
303
410
|
|
@@ -305,7 +412,9 @@ contract FlightProduct is
|
|
305
412
|
address policyHolder,
|
306
413
|
Str flightData,
|
307
414
|
Timestamp departureTime,
|
415
|
+
string memory departureTimeLocal,
|
308
416
|
Timestamp arrivalTime,
|
417
|
+
string memory arrivalTimeLocal,
|
309
418
|
Amount premiumAmount,
|
310
419
|
uint256[6] memory statistics
|
311
420
|
)
|
@@ -326,7 +435,9 @@ contract FlightProduct is
|
|
326
435
|
) = _createRiskAndPayoutAmounts(
|
327
436
|
flightData,
|
328
437
|
departureTime,
|
438
|
+
departureTimeLocal,
|
329
439
|
arrivalTime,
|
440
|
+
arrivalTimeLocal,
|
330
441
|
premiumAmount,
|
331
442
|
statistics);
|
332
443
|
|
@@ -344,117 +455,12 @@ contract FlightProduct is
|
|
344
455
|
}
|
345
456
|
|
346
457
|
|
347
|
-
/// @dev Callback for flight status oracle.
|
348
|
-
/// Function may only be alled by oracle service.
|
349
|
-
function flightStatusCallback(
|
350
|
-
RequestId requestId,
|
351
|
-
bytes memory responseData
|
352
|
-
)
|
353
|
-
external
|
354
|
-
virtual
|
355
|
-
restricted()
|
356
|
-
{
|
357
|
-
FlightOracle.FlightStatusResponse memory response = abi.decode(
|
358
|
-
responseData, (FlightOracle.FlightStatusResponse));
|
359
|
-
|
360
|
-
_processFlightStatus(
|
361
|
-
requestId,
|
362
|
-
response.riskId,
|
363
|
-
response.status,
|
364
|
-
response.delayMinutes,
|
365
|
-
MAX_POLICIES_TO_PROCESS);
|
366
|
-
}
|
367
|
-
|
368
|
-
|
369
|
-
/// @dev Manual fallback function for product owner.
|
370
|
-
function processFlightStatus(
|
371
|
-
RequestId requestId,
|
372
|
-
RiskId riskId,
|
373
|
-
bytes1 status,
|
374
|
-
int256 delayMinutes,
|
375
|
-
uint8 maxPoliciesToProcess
|
376
|
-
)
|
377
|
-
external
|
378
|
-
virtual
|
379
|
-
restricted()
|
380
|
-
onlyOwner()
|
381
|
-
{
|
382
|
-
_processFlightStatus(
|
383
|
-
requestId,
|
384
|
-
riskId,
|
385
|
-
status,
|
386
|
-
delayMinutes,
|
387
|
-
maxPoliciesToProcess);
|
388
|
-
}
|
389
|
-
|
390
|
-
//--- owner functions ---------------------------------------------------//
|
391
|
-
|
392
|
-
/// @dev Call after product registration with the instance, when the product token/tokenhandler is available
|
393
|
-
function completeSetup()
|
394
|
-
external
|
395
|
-
virtual
|
396
|
-
restricted()
|
397
|
-
onlyOwner()
|
398
|
-
{
|
399
|
-
IERC20Metadata token = IERC20Metadata(getToken());
|
400
|
-
uint256 tokenMultiplier = 10 ** token.decimals();
|
401
|
-
|
402
|
-
MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
|
403
|
-
MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
|
404
|
-
MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
|
405
|
-
MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
|
406
|
-
}
|
407
|
-
|
408
|
-
|
409
|
-
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
410
|
-
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
411
|
-
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
412
|
-
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
413
|
-
|
414
|
-
|
415
|
-
//--- view functions ----------------------------------------------------//
|
416
|
-
|
417
|
-
|
418
|
-
function calculateNetPremium(
|
419
|
-
Amount, // sumInsuredAmount: not used in this product
|
420
|
-
RiskId, // riskId: not used in this product
|
421
|
-
Seconds, // lifetime: not used in this product, a flight is a one time risk
|
422
|
-
bytes memory applicationData // holds the premium amount the customer is willing to pay
|
423
|
-
)
|
424
|
-
external
|
425
|
-
virtual override
|
426
|
-
view
|
427
|
-
returns (Amount netPremiumAmount)
|
428
|
-
{
|
429
|
-
(netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
|
430
|
-
}
|
431
|
-
|
432
|
-
|
433
|
-
function getFlightMessageVerifier()
|
434
|
-
external
|
435
|
-
view
|
436
|
-
returns (FlightMessageVerifier)
|
437
|
-
{
|
438
|
-
return _flightMessageVerifier;
|
439
|
-
}
|
440
|
-
|
441
|
-
|
442
|
-
function getOracleNftId()
|
443
|
-
public
|
444
|
-
view
|
445
|
-
returns (NftId oracleNftId)
|
446
|
-
{
|
447
|
-
return _oracleNftId;
|
448
|
-
}
|
449
|
-
|
450
|
-
|
451
|
-
//--- internal functions ------------------------------------------------//
|
452
|
-
|
453
|
-
|
454
458
|
function _createRiskAndPayoutAmounts(
|
455
459
|
Str flightData,
|
456
460
|
Timestamp departureTime,
|
461
|
+
string memory departureTimeLocal,
|
457
462
|
Timestamp arrivalTime,
|
463
|
+
string memory arrivalTimeLocal,
|
458
464
|
Amount premiumAmount,
|
459
465
|
uint256[6] memory statistics
|
460
466
|
)
|
@@ -480,7 +486,9 @@ contract FlightProduct is
|
|
480
486
|
riskId = _checkAndUpdateFlightRisk(
|
481
487
|
flightData,
|
482
488
|
departureTime,
|
489
|
+
departureTimeLocal,
|
483
490
|
arrivalTime,
|
491
|
+
arrivalTimeLocal,
|
484
492
|
sumInsuredAmount,
|
485
493
|
weight);
|
486
494
|
}
|
@@ -489,7 +497,9 @@ contract FlightProduct is
|
|
489
497
|
function _checkAndUpdateFlightRisk(
|
490
498
|
Str flightData,
|
491
499
|
Timestamp departureTime,
|
500
|
+
string memory departureTimeLocal,
|
492
501
|
Timestamp arrivalTime,
|
502
|
+
string memory arrivalTimeLocal,
|
493
503
|
Amount sumInsuredAmount,
|
494
504
|
uint256 weight
|
495
505
|
)
|
@@ -498,24 +508,28 @@ contract FlightProduct is
|
|
498
508
|
returns (RiskId riskId)
|
499
509
|
{
|
500
510
|
bool exists;
|
501
|
-
FlightRisk memory flightRisk
|
502
|
-
(riskId, exists, flightRisk) = FlightLib.getFlightRisk(
|
503
|
-
_getInstanceReader(),
|
504
|
-
getNftId(),
|
511
|
+
FlightRisk memory flightRisk = FlightLib.getFlightRisk(
|
505
512
|
flightData,
|
506
513
|
departureTime,
|
507
|
-
|
514
|
+
departureTimeLocal,
|
515
|
+
arrivalTime,
|
516
|
+
arrivalTimeLocal);
|
517
|
+
|
518
|
+
bytes32 riskKey = FlightLib.getRiskKey(flightData);
|
519
|
+
exists = _risks[riskKey].gtz();
|
508
520
|
|
509
521
|
// create risk, if new
|
510
522
|
if (!exists) {
|
511
|
-
|
512
|
-
|
523
|
+
riskId = _createRisk(abi.encode(flightRisk));
|
524
|
+
_risks[riskKey] = riskId;
|
525
|
+
} else {
|
526
|
+
riskId = _risks[riskKey];
|
513
527
|
}
|
514
528
|
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
529
|
+
FlightLib.checkClusterRisk(
|
530
|
+
flightRisk.sumOfSumInsuredAmounts,
|
531
|
+
sumInsuredAmount,
|
532
|
+
MAX_TOTAL_PAYOUT);
|
519
533
|
|
520
534
|
// update existing risk with additional sum insured amount
|
521
535
|
flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
|
@@ -527,71 +541,85 @@ contract FlightProduct is
|
|
527
541
|
RequestId requestId,
|
528
542
|
RiskId riskId,
|
529
543
|
bytes1 status,
|
530
|
-
int256 delayMinutes
|
531
|
-
uint8 maxPoliciesToProcess
|
544
|
+
int256 delayMinutes
|
532
545
|
)
|
533
546
|
internal
|
534
547
|
virtual
|
535
548
|
{
|
536
549
|
// check risk exists
|
537
|
-
|
538
|
-
(
|
539
|
-
bool exists,
|
540
|
-
FlightRisk memory flightRisk
|
541
|
-
) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
|
550
|
+
(, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
|
542
551
|
|
543
|
-
if
|
544
|
-
|
545
|
-
|
546
|
-
|
552
|
+
// update status, if not yet set
|
553
|
+
if (flightRisk.statusUpdatedAt.eqz()) {
|
554
|
+
flightRisk.statusUpdatedAt = TimestampLib.current();
|
555
|
+
flightRisk.status = status;
|
556
|
+
flightRisk.delayMinutes = delayMinutes;
|
557
|
+
flightRisk.payoutOption = FlightLib.checkAndGetPayoutOption(
|
558
|
+
requestId, riskId, status, delayMinutes);
|
547
559
|
|
548
|
-
|
549
|
-
|
560
|
+
_updateRisk(riskId, abi.encode(flightRisk));
|
561
|
+
}
|
550
562
|
|
551
|
-
_processPayoutsAndClosePolicies(
|
563
|
+
(,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
|
552
564
|
riskId,
|
553
|
-
|
554
|
-
maxPoliciesToProcess);
|
565
|
+
MAX_POLICIES_TO_PROCESS);
|
555
566
|
|
556
567
|
// logging
|
557
568
|
emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
|
558
569
|
}
|
559
570
|
|
560
571
|
|
561
|
-
// REMARK caller responsible to check that risk exists.
|
562
572
|
function _processPayoutsAndClosePolicies(
|
563
573
|
RiskId riskId,
|
564
|
-
uint8 payoutOption,
|
565
574
|
uint8 maxPoliciesToProcess
|
566
575
|
)
|
567
576
|
internal
|
568
577
|
virtual
|
578
|
+
returns (
|
579
|
+
bool riskExists,
|
580
|
+
bool statusAvailable,
|
581
|
+
uint8 payoutOption
|
582
|
+
)
|
569
583
|
{
|
570
584
|
// determine numbers of policies to process
|
571
585
|
InstanceReader reader = _getInstanceReader();
|
586
|
+
(riskExists, statusAvailable, payoutOption) = FlightLib.getPayoutOption(reader, getNftId(), riskId);
|
587
|
+
|
588
|
+
// return with default values if risk does not exist or status is not yet available
|
589
|
+
if (!riskExists || !statusAvailable) {
|
590
|
+
return (riskExists, statusAvailable, payoutOption);
|
591
|
+
}
|
592
|
+
|
572
593
|
uint256 policiesToProcess = reader.policiesForRisk(riskId);
|
573
|
-
|
594
|
+
uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
|
574
595
|
|
575
|
-
//
|
576
|
-
|
577
|
-
|
596
|
+
// assemble array with policies to process
|
597
|
+
NftId [] memory policies = new NftId[](policiesProcessed);
|
598
|
+
for (uint256 i = 0; i < policiesProcessed; i++) {
|
599
|
+
policies[i] = reader.getPolicyForRisk(riskId, i);
|
600
|
+
}
|
578
601
|
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
602
|
+
// go through policies
|
603
|
+
for (uint256 i = 0; i < policiesProcessed; i++) {
|
604
|
+
NftId policyNftId = policies[i];
|
605
|
+
Amount payoutAmount = FlightLib.getPayoutAmount(
|
606
|
+
reader.getPolicyInfo(policyNftId).applicationData,
|
607
|
+
payoutOption);
|
583
608
|
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
payoutOption));
|
589
|
-
}
|
609
|
+
// create claim/payout (if applicable)
|
610
|
+
_resolvePayout(
|
611
|
+
policyNftId,
|
612
|
+
payoutAmount);
|
590
613
|
|
591
614
|
// expire and close policy
|
592
615
|
_expire(policyNftId, TimestampLib.current());
|
593
616
|
_close(policyNftId);
|
617
|
+
|
618
|
+
emit LogFlightPolicyClosed(policyNftId, payoutAmount);
|
594
619
|
}
|
620
|
+
|
621
|
+
// logging
|
622
|
+
emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
|
595
623
|
}
|
596
624
|
|
597
625
|
|
@@ -602,6 +630,11 @@ contract FlightProduct is
|
|
602
630
|
internal
|
603
631
|
virtual
|
604
632
|
{
|
633
|
+
// no action if no payout
|
634
|
+
if (payoutAmount.eqz()) {
|
635
|
+
return;
|
636
|
+
}
|
637
|
+
|
605
638
|
// create confirmed claim
|
606
639
|
ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
|
607
640
|
_confirmClaim(policyNftId, claimId, payoutAmount, "");
|
@@ -620,9 +653,9 @@ contract FlightProduct is
|
|
620
653
|
address initialOwner
|
621
654
|
)
|
622
655
|
internal
|
623
|
-
initializer
|
656
|
+
initializer()
|
624
657
|
{
|
625
|
-
|
658
|
+
__Product_init(
|
626
659
|
registry,
|
627
660
|
instanceNftId,
|
628
661
|
componentName,
|
@@ -647,5 +680,11 @@ contract FlightProduct is
|
|
647
680
|
}),
|
648
681
|
authorization,
|
649
682
|
initialOwner); // number of oracles
|
683
|
+
|
684
|
+
MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
|
685
|
+
LIFETIME = SecondsLib.fromDays(30);
|
686
|
+
WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
|
687
|
+
MIN_OBSERVATIONS = 10;
|
688
|
+
MARGIN_PERCENT = 30;
|
650
689
|
}
|
651
690
|
}
|