@etherisc/gif-next 3.0.0-1bd1936-188 → 3.0.0-1c2086e-623
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 +201 -96
- 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 +132 -133
- 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 +390 -748
- 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 +92 -109
- package/contracts/examples/flight/FlightNft.sol +234 -0
- package/contracts/examples/flight/FlightOracle.sol +20 -62
- package/contracts/examples/flight/FlightOracleAuthorization.sol +27 -5
- package/contracts/examples/flight/FlightPool.sol +1 -1
- package/contracts/examples/flight/FlightProduct.sol +263 -248
- 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,85 +18,60 @@ 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 {
|
@@ -107,14 +83,15 @@ contract FlightProduct is
|
|
107
83
|
// this field contains static data required by the frontend and is not directly used by the product
|
108
84
|
string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
109
85
|
Amount sumOfSumInsuredAmounts;
|
110
|
-
// uint256 premiumMultiplier; // what is this? UFixed?
|
111
|
-
// uint256 weight; // what is this? UFixed?
|
112
86
|
bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
|
113
87
|
int256 delayMinutes;
|
88
|
+
uint8 payoutOption;
|
89
|
+
Timestamp statusUpdatedAt;
|
114
90
|
}
|
115
91
|
|
92
|
+
|
116
93
|
struct ApplicationData {
|
117
|
-
|
94
|
+
string flightData;
|
118
95
|
Timestamp departureTime;
|
119
96
|
string departureTimeLocal;
|
120
97
|
Timestamp arrivalTime;
|
@@ -123,6 +100,7 @@ contract FlightProduct is
|
|
123
100
|
uint256[6] statistics;
|
124
101
|
}
|
125
102
|
|
103
|
+
|
126
104
|
struct PermitData {
|
127
105
|
address owner;
|
128
106
|
address spender;
|
@@ -136,24 +114,22 @@ contract FlightProduct is
|
|
136
114
|
|
137
115
|
constructor(
|
138
116
|
address registry,
|
139
|
-
NftId
|
117
|
+
NftId instanceNftId,
|
140
118
|
string memory componentName,
|
141
|
-
IAuthorization authorization
|
142
|
-
FlightMessageVerifier messageVerifier
|
119
|
+
IAuthorization authorization
|
143
120
|
)
|
144
121
|
{
|
145
122
|
address initialOwner = msg.sender;
|
146
123
|
|
147
124
|
_initialize(
|
148
125
|
registry,
|
149
|
-
|
126
|
+
instanceNftId,
|
150
127
|
componentName,
|
151
128
|
authorization,
|
152
129
|
initialOwner);
|
153
|
-
|
154
|
-
_flightMessageVerifier = messageVerifier;
|
155
130
|
}
|
156
131
|
|
132
|
+
|
157
133
|
//--- external functions ------------------------------------------------//
|
158
134
|
//--- unpermissioned functions ------------------------------------------//
|
159
135
|
|
@@ -164,6 +140,7 @@ contract FlightProduct is
|
|
164
140
|
getNftId()).oracleNftId[0];
|
165
141
|
}
|
166
142
|
|
143
|
+
|
167
144
|
function calculatePayoutAmounts(
|
168
145
|
FlightProduct flightProduct,
|
169
146
|
Amount premium,
|
@@ -200,32 +177,156 @@ contract FlightProduct is
|
|
200
177
|
)
|
201
178
|
{
|
202
179
|
// process permit data
|
203
|
-
|
180
|
+
_processPermit(permit);
|
204
181
|
|
205
182
|
// create policy
|
206
183
|
address policyHolder = permit.owner;
|
207
184
|
(
|
208
185
|
riskId,
|
209
186
|
policyNftId
|
210
|
-
) =
|
187
|
+
) = _createPolicy(
|
211
188
|
policyHolder,
|
212
|
-
application.flightData,
|
189
|
+
StrLib.toStr(application.flightData),
|
213
190
|
application.departureTime,
|
214
191
|
application.departureTimeLocal,
|
215
192
|
application.arrivalTime,
|
216
193
|
application.arrivalTimeLocal,
|
217
194
|
application.premiumAmount,
|
218
195
|
application.statistics);
|
219
|
-
// application.v,
|
220
|
-
// application.r,
|
221
|
-
// application.s);
|
222
196
|
}
|
223
197
|
|
224
198
|
|
225
|
-
|
226
|
-
|
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
|
227
305
|
)
|
228
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
|
229
330
|
virtual
|
230
331
|
restricted()
|
231
332
|
{
|
@@ -243,7 +344,7 @@ contract FlightProduct is
|
|
243
344
|
}
|
244
345
|
|
245
346
|
|
246
|
-
function
|
347
|
+
function _createPolicy(
|
247
348
|
address policyHolder,
|
248
349
|
Str flightData,
|
249
350
|
Timestamp departureTime,
|
@@ -252,14 +353,9 @@ contract FlightProduct is
|
|
252
353
|
string memory arrivalTimeLocal,
|
253
354
|
Amount premiumAmount,
|
254
355
|
uint256[6] memory statistics
|
255
|
-
// signature fields
|
256
|
-
// uint8 v,
|
257
|
-
// bytes32 r,
|
258
|
-
// bytes32 s
|
259
356
|
)
|
260
|
-
|
357
|
+
internal
|
261
358
|
virtual
|
262
|
-
restricted()
|
263
359
|
returns (
|
264
360
|
RiskId riskId,
|
265
361
|
NftId policyNftId
|
@@ -267,14 +363,12 @@ contract FlightProduct is
|
|
267
363
|
{
|
268
364
|
// checks
|
269
365
|
// disabled for now - using rbac for security
|
270
|
-
FlightLib.
|
366
|
+
FlightLib.checkApplicationData(
|
271
367
|
this,
|
272
368
|
flightData,
|
273
369
|
departureTime,
|
274
370
|
arrivalTime,
|
275
|
-
premiumAmount
|
276
|
-
statistics);
|
277
|
-
// v, r, s);
|
371
|
+
premiumAmount);
|
278
372
|
|
279
373
|
(riskId, policyNftId) = _prepareApplication(
|
280
374
|
policyHolder,
|
@@ -296,17 +390,21 @@ contract FlightProduct is
|
|
296
390
|
policyNftId,
|
297
391
|
departureTime); // activate at scheduled departure time of flight
|
298
392
|
|
299
|
-
// send oracle request for flight status (interacts with flight oracle contract)
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
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);
|
310
408
|
}
|
311
409
|
|
312
410
|
|
@@ -357,116 +455,6 @@ contract FlightProduct is
|
|
357
455
|
}
|
358
456
|
|
359
457
|
|
360
|
-
/// @dev Callback for flight status oracle.
|
361
|
-
/// Function may only be alled by oracle service.
|
362
|
-
function flightStatusCallback(
|
363
|
-
RequestId requestId,
|
364
|
-
bytes memory responseData
|
365
|
-
)
|
366
|
-
external
|
367
|
-
virtual
|
368
|
-
restricted()
|
369
|
-
{
|
370
|
-
FlightOracle.FlightStatusResponse memory response = abi.decode(
|
371
|
-
responseData, (FlightOracle.FlightStatusResponse));
|
372
|
-
|
373
|
-
_processFlightStatus(
|
374
|
-
requestId,
|
375
|
-
response.riskId,
|
376
|
-
response.status,
|
377
|
-
response.delayMinutes,
|
378
|
-
MAX_POLICIES_TO_PROCESS);
|
379
|
-
}
|
380
|
-
|
381
|
-
|
382
|
-
/// @dev Manual fallback function for product owner.
|
383
|
-
function processFlightStatus(
|
384
|
-
RequestId requestId,
|
385
|
-
RiskId riskId,
|
386
|
-
bytes1 status,
|
387
|
-
int256 delayMinutes,
|
388
|
-
uint8 maxPoliciesToProcess
|
389
|
-
)
|
390
|
-
external
|
391
|
-
virtual
|
392
|
-
restricted()
|
393
|
-
onlyOwner()
|
394
|
-
{
|
395
|
-
_processFlightStatus(
|
396
|
-
requestId,
|
397
|
-
riskId,
|
398
|
-
status,
|
399
|
-
delayMinutes,
|
400
|
-
maxPoliciesToProcess);
|
401
|
-
}
|
402
|
-
|
403
|
-
//--- owner functions ---------------------------------------------------//
|
404
|
-
|
405
|
-
/// @dev Call after product registration with the instance, when the product token/tokenhandler is available
|
406
|
-
function completeSetup()
|
407
|
-
external
|
408
|
-
virtual
|
409
|
-
restricted()
|
410
|
-
onlyOwner()
|
411
|
-
{
|
412
|
-
IERC20Metadata token = IERC20Metadata(getToken());
|
413
|
-
uint256 tokenMultiplier = 10 ** token.decimals();
|
414
|
-
|
415
|
-
MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
|
416
|
-
MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
|
417
|
-
MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
|
418
|
-
MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
|
419
|
-
}
|
420
|
-
|
421
|
-
|
422
|
-
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
423
|
-
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
424
|
-
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
425
|
-
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
426
|
-
|
427
|
-
|
428
|
-
//--- view functions ----------------------------------------------------//
|
429
|
-
|
430
|
-
|
431
|
-
function calculateNetPremium(
|
432
|
-
Amount, // sumInsuredAmount: not used in this product
|
433
|
-
RiskId, // riskId: not used in this product
|
434
|
-
Seconds, // lifetime: not used in this product, a flight is a one time risk
|
435
|
-
bytes memory applicationData // holds the premium amount the customer is willing to pay
|
436
|
-
)
|
437
|
-
external
|
438
|
-
virtual override
|
439
|
-
view
|
440
|
-
returns (Amount netPremiumAmount)
|
441
|
-
{
|
442
|
-
(netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
|
443
|
-
}
|
444
|
-
|
445
|
-
|
446
|
-
function getFlightMessageVerifier()
|
447
|
-
external
|
448
|
-
view
|
449
|
-
returns (FlightMessageVerifier)
|
450
|
-
{
|
451
|
-
return _flightMessageVerifier;
|
452
|
-
}
|
453
|
-
|
454
|
-
|
455
|
-
function getOracleNftId()
|
456
|
-
public
|
457
|
-
view
|
458
|
-
returns (NftId oracleNftId)
|
459
|
-
{
|
460
|
-
return _oracleNftId;
|
461
|
-
}
|
462
|
-
|
463
|
-
function decodeFlightRiskData(bytes memory data) external pure returns (FlightRisk memory) {
|
464
|
-
return abi.decode(data, (FlightRisk));
|
465
|
-
}
|
466
|
-
|
467
|
-
//--- internal functions ------------------------------------------------//
|
468
|
-
|
469
|
-
|
470
458
|
function _createRiskAndPayoutAmounts(
|
471
459
|
Str flightData,
|
472
460
|
Timestamp departureTime,
|
@@ -520,26 +508,28 @@ contract FlightProduct is
|
|
520
508
|
returns (RiskId riskId)
|
521
509
|
{
|
522
510
|
bool exists;
|
523
|
-
FlightRisk memory flightRisk
|
524
|
-
(riskId, exists, flightRisk) = FlightLib.getFlightRisk(
|
525
|
-
_getInstanceReader(),
|
526
|
-
getNftId(),
|
511
|
+
FlightRisk memory flightRisk = FlightLib.getFlightRisk(
|
527
512
|
flightData,
|
528
513
|
departureTime,
|
529
514
|
departureTimeLocal,
|
530
515
|
arrivalTime,
|
531
516
|
arrivalTimeLocal);
|
532
517
|
|
518
|
+
bytes32 riskKey = FlightLib.getRiskKey(flightData);
|
519
|
+
exists = _risks[riskKey].gtz();
|
520
|
+
|
533
521
|
// create risk, if new
|
534
522
|
if (!exists) {
|
535
|
-
|
536
|
-
|
523
|
+
riskId = _createRisk(abi.encode(flightRisk));
|
524
|
+
_risks[riskKey] = riskId;
|
525
|
+
} else {
|
526
|
+
riskId = _risks[riskKey];
|
537
527
|
}
|
538
528
|
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
529
|
+
FlightLib.checkClusterRisk(
|
530
|
+
flightRisk.sumOfSumInsuredAmounts,
|
531
|
+
sumInsuredAmount,
|
532
|
+
MAX_TOTAL_PAYOUT);
|
543
533
|
|
544
534
|
// update existing risk with additional sum insured amount
|
545
535
|
flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
|
@@ -551,71 +541,85 @@ contract FlightProduct is
|
|
551
541
|
RequestId requestId,
|
552
542
|
RiskId riskId,
|
553
543
|
bytes1 status,
|
554
|
-
int256 delayMinutes
|
555
|
-
uint8 maxPoliciesToProcess
|
544
|
+
int256 delayMinutes
|
556
545
|
)
|
557
546
|
internal
|
558
547
|
virtual
|
559
548
|
{
|
560
549
|
// check risk exists
|
561
|
-
|
562
|
-
(
|
563
|
-
bool exists,
|
564
|
-
FlightRisk memory flightRisk
|
565
|
-
) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
|
550
|
+
(, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
|
566
551
|
|
567
|
-
if
|
568
|
-
|
569
|
-
|
570
|
-
|
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);
|
571
559
|
|
572
|
-
|
573
|
-
|
560
|
+
_updateRisk(riskId, abi.encode(flightRisk));
|
561
|
+
}
|
574
562
|
|
575
|
-
_processPayoutsAndClosePolicies(
|
563
|
+
(,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
|
576
564
|
riskId,
|
577
|
-
|
578
|
-
maxPoliciesToProcess);
|
565
|
+
MAX_POLICIES_TO_PROCESS);
|
579
566
|
|
580
567
|
// logging
|
581
568
|
emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
|
582
569
|
}
|
583
570
|
|
584
571
|
|
585
|
-
// REMARK caller responsible to check that risk exists.
|
586
572
|
function _processPayoutsAndClosePolicies(
|
587
573
|
RiskId riskId,
|
588
|
-
uint8 payoutOption,
|
589
574
|
uint8 maxPoliciesToProcess
|
590
575
|
)
|
591
576
|
internal
|
592
577
|
virtual
|
578
|
+
returns (
|
579
|
+
bool riskExists,
|
580
|
+
bool statusAvailable,
|
581
|
+
uint8 payoutOption
|
582
|
+
)
|
593
583
|
{
|
594
584
|
// determine numbers of policies to process
|
595
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
|
+
|
596
593
|
uint256 policiesToProcess = reader.policiesForRisk(riskId);
|
597
|
-
|
594
|
+
uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
|
598
595
|
|
599
|
-
//
|
600
|
-
|
601
|
-
|
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
|
+
}
|
602
601
|
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
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);
|
607
608
|
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
payoutOption));
|
613
|
-
}
|
609
|
+
// create claim/payout (if applicable)
|
610
|
+
_resolvePayout(
|
611
|
+
policyNftId,
|
612
|
+
payoutAmount);
|
614
613
|
|
615
614
|
// expire and close policy
|
616
615
|
_expire(policyNftId, TimestampLib.current());
|
617
616
|
_close(policyNftId);
|
617
|
+
|
618
|
+
emit LogFlightPolicyClosed(policyNftId, payoutAmount);
|
618
619
|
}
|
620
|
+
|
621
|
+
// logging
|
622
|
+
emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
|
619
623
|
}
|
620
624
|
|
621
625
|
|
@@ -626,6 +630,11 @@ contract FlightProduct is
|
|
626
630
|
internal
|
627
631
|
virtual
|
628
632
|
{
|
633
|
+
// no action if no payout
|
634
|
+
if (payoutAmount.eqz()) {
|
635
|
+
return;
|
636
|
+
}
|
637
|
+
|
629
638
|
// create confirmed claim
|
630
639
|
ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
|
631
640
|
_confirmClaim(policyNftId, claimId, payoutAmount, "");
|
@@ -644,9 +653,9 @@ contract FlightProduct is
|
|
644
653
|
address initialOwner
|
645
654
|
)
|
646
655
|
internal
|
647
|
-
initializer
|
656
|
+
initializer()
|
648
657
|
{
|
649
|
-
|
658
|
+
__Product_init(
|
650
659
|
registry,
|
651
660
|
instanceNftId,
|
652
661
|
componentName,
|
@@ -671,5 +680,11 @@ contract FlightProduct is
|
|
671
680
|
}),
|
672
681
|
authorization,
|
673
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;
|
674
689
|
}
|
675
690
|
}
|