@etherisc/gif-next 3.0.0-30b2f63-023 → 3.0.0-351a5c1-551
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/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 +49 -129
- 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 +372 -73
- 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 +467 -600
- 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 +25 -100
- 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 +160 -34
- 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 +141 -91
- 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 +66 -79
- 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 +38 -2
- 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 +55 -43
- 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 +113 -101
- 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 +37 -37
- 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 +2 -77
- 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 +11 -11
- 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 +2 -2
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +2 -77
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +15 -28
- 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 +20 -12
- 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 +34 -34
- 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 +2 -77
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +37 -50
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +42 -42
- 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 +4 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +558 -0
- 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 +2 -2
- 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 +20 -3
- 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/flight/FlightLib.sol +106 -80
- 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 +300 -238
- package/contracts/examples/flight/FlightProductAuthorization.sol +36 -10
- package/contracts/examples/flight/FlightProductManager.sol +49 -0
- 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 +34 -5
- package/contracts/instance/InstanceService.sol +68 -36
- package/contracts/instance/InstanceStore.sol +14 -14
- package/contracts/instance/ProductStore.sol +14 -14
- 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/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 -5
- package/contracts/product/PolicyService.sol +1 -1
- package/contracts/product/PolicyServiceLib.sol +5 -3
- package/contracts/product/RiskService.sol +2 -2
- 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/IAuthorizedComponent.sol +15 -0
- package/contracts/shared/IComponent.sol +0 -4
- package/contracts/shared/IComponentService.sol +31 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +3 -2
- 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/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,101 +18,88 @@ 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);
|
41
|
-
|
42
|
-
event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
|
43
|
-
event LogErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
|
44
|
-
event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
|
35
|
+
event LogFlightPolicyPurchased(NftId policyNftId, string flightData, Amount premiumAmount);
|
36
|
+
event LogFlightPolicyClosed(NftId policyNftId, Amount payoutAmount);
|
45
37
|
|
46
|
-
|
38
|
+
event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
|
39
|
+
event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
|
47
40
|
|
48
41
|
// solhint-disable
|
49
|
-
|
50
|
-
|
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
|
+
|
51
47
|
// Minimum time before departure for applying
|
52
|
-
Seconds public MIN_TIME_BEFORE_DEPARTURE
|
48
|
+
Seconds public MIN_TIME_BEFORE_DEPARTURE;
|
53
49
|
// Maximum time before departure for applying
|
54
|
-
Seconds public MAX_TIME_BEFORE_DEPARTURE
|
50
|
+
Seconds public MAX_TIME_BEFORE_DEPARTURE;
|
55
51
|
// Maximum duration of flight
|
56
|
-
Seconds public MAX_FLIGHT_DURATION
|
57
|
-
// Check for delay after .. minutes after scheduled arrival
|
58
|
-
Seconds public CHECK_OFFSET = SecondsLib.fromHours(1);
|
52
|
+
Seconds public MAX_FLIGHT_DURATION;
|
59
53
|
// Max time to process claims after departure
|
60
|
-
Seconds public LIFETIME
|
61
|
-
|
62
|
-
// uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
|
63
|
-
// All amounts in cent = multiplier is 10 ** 16!
|
64
|
-
Amount public MIN_PREMIUM;
|
65
|
-
Amount public MAX_PREMIUM;
|
66
|
-
Amount public MAX_PAYOUT;
|
67
|
-
Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight is 3x max payout.
|
54
|
+
Seconds public LIFETIME;
|
68
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;
|
69
61
|
// Maximum cumulated weighted premium per risk
|
70
|
-
uint256 public MARGIN_PERCENT
|
71
|
-
|
62
|
+
uint256 public MARGIN_PERCENT;
|
72
63
|
// Maximum number of policies to process in one callback
|
73
|
-
uint8 public MAX_POLICIES_TO_PROCESS
|
64
|
+
uint8 public MAX_POLICIES_TO_PROCESS;
|
65
|
+
// solhint-enable
|
74
66
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
uint8 public constant MAX_WEIGHT = 50;
|
67
|
+
bool internal _testMode;
|
68
|
+
|
69
|
+
mapping(RiskId riskId => RequestId requestId) internal _requests;
|
79
70
|
|
80
71
|
// GIF V3 specifics
|
81
72
|
NftId internal _defaultBundleNftId;
|
82
|
-
|
83
|
-
// TODO add product (base contract) functions
|
84
|
-
// - getOracleNftId(idx)
|
85
|
-
// - getDistributionNftId()
|
86
|
-
// - getPoolNftId()
|
87
|
-
NftId internal _oracleNftId; // TODO refactor to getOracleNftId(0)
|
88
|
-
// solhint-enable
|
89
|
-
|
90
|
-
FlightMessageVerifier internal _flightMessageVerifier;
|
73
|
+
NftId internal _oracleNftId;
|
91
74
|
|
92
75
|
|
93
76
|
struct FlightRisk {
|
94
77
|
Str flightData; // example: "LX 180 ZRH BKK 20241104"
|
95
78
|
Timestamp departureTime;
|
79
|
+
// this field contains static data required by the frontend and is not directly used by the product
|
80
|
+
string departureTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
96
81
|
Timestamp arrivalTime;
|
82
|
+
// this field contains static data required by the frontend and is not directly used by the product
|
83
|
+
string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
97
84
|
Amount sumOfSumInsuredAmounts;
|
98
|
-
// uint256 premiumMultiplier; // what is this? UFixed?
|
99
|
-
// uint256 weight; // what is this? UFixed?
|
100
85
|
bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
|
101
86
|
int256 delayMinutes;
|
87
|
+
uint8 payoutOption;
|
88
|
+
Timestamp statusUpdatedAt;
|
102
89
|
}
|
103
90
|
|
91
|
+
|
104
92
|
struct ApplicationData {
|
105
|
-
|
93
|
+
string flightData;
|
106
94
|
Timestamp departureTime;
|
95
|
+
string departureTimeLocal;
|
107
96
|
Timestamp arrivalTime;
|
97
|
+
string arrivalTimeLocal;
|
108
98
|
Amount premiumAmount;
|
109
99
|
uint256[6] statistics;
|
110
|
-
uint8 v;
|
111
|
-
bytes32 r;
|
112
|
-
bytes32 s;
|
113
100
|
}
|
114
101
|
|
102
|
+
|
115
103
|
struct PermitData {
|
116
104
|
address owner;
|
117
105
|
address spender;
|
@@ -125,24 +113,22 @@ contract FlightProduct is
|
|
125
113
|
|
126
114
|
constructor(
|
127
115
|
address registry,
|
128
|
-
NftId
|
116
|
+
NftId instanceNftId,
|
129
117
|
string memory componentName,
|
130
|
-
IAuthorization authorization
|
131
|
-
FlightMessageVerifier messageVerifier
|
118
|
+
IAuthorization authorization
|
132
119
|
)
|
133
120
|
{
|
134
121
|
address initialOwner = msg.sender;
|
135
122
|
|
136
123
|
_initialize(
|
137
124
|
registry,
|
138
|
-
|
125
|
+
instanceNftId,
|
139
126
|
componentName,
|
140
127
|
authorization,
|
141
128
|
initialOwner);
|
142
|
-
|
143
|
-
_flightMessageVerifier = messageVerifier;
|
144
129
|
}
|
145
130
|
|
131
|
+
|
146
132
|
//--- external functions ------------------------------------------------//
|
147
133
|
//--- unpermissioned functions ------------------------------------------//
|
148
134
|
|
@@ -154,6 +140,25 @@ contract FlightProduct is
|
|
154
140
|
}
|
155
141
|
|
156
142
|
|
143
|
+
function calculatePayoutAmounts(
|
144
|
+
FlightProduct flightProduct,
|
145
|
+
Amount premium,
|
146
|
+
uint256[6] memory statistics
|
147
|
+
)
|
148
|
+
external
|
149
|
+
view
|
150
|
+
returns (
|
151
|
+
uint256 weight,
|
152
|
+
Amount[5] memory payoutAmounts,
|
153
|
+
Amount sumInsuredAmount // simply the max of payoutAmounts
|
154
|
+
)
|
155
|
+
{
|
156
|
+
return FlightLib.calculatePayoutAmounts(
|
157
|
+
flightProduct,
|
158
|
+
premium,
|
159
|
+
statistics);
|
160
|
+
}
|
161
|
+
|
157
162
|
/// @dev Creates a policy using a permit for the policy holder.
|
158
163
|
/// The policy holder is defined as the owner parameter of the permit data.
|
159
164
|
/// NOTE: This function makes the assumption that the product token
|
@@ -171,30 +176,156 @@ contract FlightProduct is
|
|
171
176
|
)
|
172
177
|
{
|
173
178
|
// process permit data
|
174
|
-
|
179
|
+
_processPermit(permit);
|
175
180
|
|
176
181
|
// create policy
|
177
182
|
address policyHolder = permit.owner;
|
178
183
|
(
|
179
184
|
riskId,
|
180
185
|
policyNftId
|
181
|
-
) =
|
186
|
+
) = _createPolicy(
|
182
187
|
policyHolder,
|
183
|
-
application.flightData,
|
188
|
+
StrLib.toStr(application.flightData),
|
184
189
|
application.departureTime,
|
190
|
+
application.departureTimeLocal,
|
185
191
|
application.arrivalTime,
|
192
|
+
application.arrivalTimeLocal,
|
186
193
|
application.premiumAmount,
|
187
|
-
application.statistics
|
188
|
-
application.v,
|
189
|
-
application.r,
|
190
|
-
application.s);
|
194
|
+
application.statistics);
|
191
195
|
}
|
192
196
|
|
193
197
|
|
194
|
-
|
195
|
-
|
198
|
+
/// @dev Callback for flight status oracle.
|
199
|
+
/// Function may only be alled by oracle service.
|
200
|
+
function flightStatusCallback(
|
201
|
+
RequestId requestId,
|
202
|
+
bytes memory responseData
|
203
|
+
)
|
204
|
+
external
|
205
|
+
virtual
|
206
|
+
restricted()
|
207
|
+
{
|
208
|
+
FlightOracle.FlightStatusResponse memory response = abi.decode(
|
209
|
+
responseData, (FlightOracle.FlightStatusResponse));
|
210
|
+
|
211
|
+
_processFlightStatus(
|
212
|
+
requestId,
|
213
|
+
response.riskId,
|
214
|
+
response.status,
|
215
|
+
response.delayMinutes);
|
216
|
+
}
|
217
|
+
|
218
|
+
|
219
|
+
function resendResponse(RequestId requestId)
|
220
|
+
external
|
221
|
+
virtual
|
222
|
+
restricted()
|
223
|
+
{
|
224
|
+
_resendResponse(requestId);
|
225
|
+
}
|
226
|
+
|
227
|
+
|
228
|
+
/// @dev Manual fallback function for product owner.
|
229
|
+
function processPayoutsAndClosePolicies(
|
230
|
+
RiskId riskId,
|
231
|
+
uint8 maxPoliciesToProcess
|
232
|
+
)
|
233
|
+
external
|
234
|
+
virtual
|
235
|
+
restricted()
|
236
|
+
onlyOwner()
|
237
|
+
{
|
238
|
+
_processPayoutsAndClosePolicies(
|
239
|
+
riskId,
|
240
|
+
maxPoliciesToProcess);
|
241
|
+
}
|
242
|
+
|
243
|
+
|
244
|
+
//--- owner functions ---------------------------------------------------//
|
245
|
+
|
246
|
+
/// @dev Call after product registration with the instance
|
247
|
+
/// when the product token/tokenhandler is available
|
248
|
+
function setConstants(
|
249
|
+
Amount minPremium,
|
250
|
+
Amount maxPremium,
|
251
|
+
Amount maxPayout,
|
252
|
+
Amount maxTotalPayout,
|
253
|
+
Seconds minTimeBeforeDeparture,
|
254
|
+
Seconds maxTimeBeforeDeparture,
|
255
|
+
uint8 maxPoliciesToProcess
|
256
|
+
)
|
257
|
+
external
|
258
|
+
virtual
|
259
|
+
restricted()
|
260
|
+
onlyOwner()
|
261
|
+
{
|
262
|
+
MIN_PREMIUM = minPremium;
|
263
|
+
MAX_PREMIUM = maxPremium;
|
264
|
+
MAX_PAYOUT = maxPayout;
|
265
|
+
MAX_TOTAL_PAYOUT = maxTotalPayout;
|
266
|
+
|
267
|
+
MIN_TIME_BEFORE_DEPARTURE = minTimeBeforeDeparture;
|
268
|
+
MAX_TIME_BEFORE_DEPARTURE = maxTimeBeforeDeparture;
|
269
|
+
MAX_POLICIES_TO_PROCESS = maxPoliciesToProcess;
|
270
|
+
}
|
271
|
+
|
272
|
+
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
273
|
+
function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
|
274
|
+
|
275
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
276
|
+
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
277
|
+
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
278
|
+
|
279
|
+
|
280
|
+
//--- view functions ----------------------------------------------------//
|
281
|
+
|
282
|
+
function calculateNetPremium(
|
283
|
+
Amount, // sumInsuredAmount: not used in this product
|
284
|
+
RiskId, // riskId: not used in this product
|
285
|
+
Seconds, // lifetime: not used in this product, a flight is a one time risk
|
286
|
+
bytes memory applicationData // holds the premium amount the customer is willing to pay
|
287
|
+
)
|
288
|
+
external
|
289
|
+
virtual override
|
290
|
+
view
|
291
|
+
returns (Amount netPremiumAmount)
|
292
|
+
{
|
293
|
+
(netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
|
294
|
+
}
|
295
|
+
|
296
|
+
|
297
|
+
function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
|
298
|
+
function isTestMode() public view returns (bool) { return _testMode; }
|
299
|
+
|
300
|
+
|
301
|
+
function getFlightRisk(
|
302
|
+
RiskId riskId,
|
303
|
+
bool requireRiskExists
|
196
304
|
)
|
197
305
|
public
|
306
|
+
view
|
307
|
+
returns (
|
308
|
+
bool exists,
|
309
|
+
FlightRisk memory flightRisk
|
310
|
+
)
|
311
|
+
{
|
312
|
+
(exists, flightRisk) = FlightLib.getFlightRisk(
|
313
|
+
_getInstanceReader(),
|
314
|
+
getNftId(),
|
315
|
+
riskId,
|
316
|
+
requireRiskExists);
|
317
|
+
}
|
318
|
+
|
319
|
+
function getRequestForRisk(RiskId riskId) public view returns (RequestId requestId) { return _requests[riskId]; }
|
320
|
+
function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
|
321
|
+
|
322
|
+
//--- internal functions ------------------------------------------------//
|
323
|
+
|
324
|
+
|
325
|
+
function _processPermit(
|
326
|
+
PermitData memory permit
|
327
|
+
)
|
328
|
+
internal
|
198
329
|
virtual
|
199
330
|
restricted()
|
200
331
|
{
|
@@ -212,41 +343,39 @@ contract FlightProduct is
|
|
212
343
|
}
|
213
344
|
|
214
345
|
|
215
|
-
function
|
346
|
+
function _createPolicy(
|
216
347
|
address policyHolder,
|
217
348
|
Str flightData,
|
218
349
|
Timestamp departureTime,
|
350
|
+
string memory departureTimeLocal,
|
219
351
|
Timestamp arrivalTime,
|
352
|
+
string memory arrivalTimeLocal,
|
220
353
|
Amount premiumAmount,
|
221
|
-
uint256[6] memory statistics
|
222
|
-
// signature fields
|
223
|
-
uint8 v,
|
224
|
-
bytes32 r,
|
225
|
-
bytes32 s
|
354
|
+
uint256[6] memory statistics
|
226
355
|
)
|
227
|
-
|
356
|
+
internal
|
228
357
|
virtual
|
229
|
-
restricted()
|
230
358
|
returns (
|
231
359
|
RiskId riskId,
|
232
360
|
NftId policyNftId
|
233
361
|
)
|
234
362
|
{
|
235
363
|
// checks
|
236
|
-
|
364
|
+
// disabled for now - using rbac for security
|
365
|
+
FlightLib.checkApplicationData(
|
237
366
|
this,
|
238
367
|
flightData,
|
239
368
|
departureTime,
|
240
369
|
arrivalTime,
|
241
|
-
premiumAmount
|
242
|
-
statistics,
|
243
|
-
v, r, s);
|
370
|
+
premiumAmount);
|
244
371
|
|
245
372
|
(riskId, policyNftId) = _prepareApplication(
|
246
373
|
policyHolder,
|
247
374
|
flightData,
|
248
375
|
departureTime,
|
376
|
+
departureTimeLocal,
|
249
377
|
arrivalTime,
|
378
|
+
arrivalTimeLocal,
|
250
379
|
premiumAmount,
|
251
380
|
statistics);
|
252
381
|
|
@@ -260,17 +389,21 @@ contract FlightProduct is
|
|
260
389
|
policyNftId,
|
261
390
|
departureTime); // activate at scheduled departure time of flight
|
262
391
|
|
263
|
-
// send oracle request for flight status (interacts with flight oracle contract)
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
392
|
+
// send oracle request for for new risk to obtain flight status (interacts with flight oracle contract)
|
393
|
+
if (_requests[riskId].eqz()) {
|
394
|
+
_requests[riskId] = _sendRequest(
|
395
|
+
_oracleNftId,
|
396
|
+
abi.encode(
|
397
|
+
FlightOracle.FlightStatusRequest(
|
398
|
+
riskId,
|
399
|
+
flightData,
|
400
|
+
departureTime)),
|
401
|
+
// allow up to 30 days to process the claim
|
402
|
+
arrivalTime.addSeconds(SecondsLib.fromDays(30)),
|
403
|
+
"flightStatusCallback");
|
404
|
+
}
|
405
|
+
|
406
|
+
emit LogFlightPolicyPurchased(policyNftId, flightData.toString(), premiumAmount);
|
274
407
|
}
|
275
408
|
|
276
409
|
|
@@ -278,7 +411,9 @@ contract FlightProduct is
|
|
278
411
|
address policyHolder,
|
279
412
|
Str flightData,
|
280
413
|
Timestamp departureTime,
|
414
|
+
string memory departureTimeLocal,
|
281
415
|
Timestamp arrivalTime,
|
416
|
+
string memory arrivalTimeLocal,
|
282
417
|
Amount premiumAmount,
|
283
418
|
uint256[6] memory statistics
|
284
419
|
)
|
@@ -299,7 +434,9 @@ contract FlightProduct is
|
|
299
434
|
) = _createRiskAndPayoutAmounts(
|
300
435
|
flightData,
|
301
436
|
departureTime,
|
437
|
+
departureTimeLocal,
|
302
438
|
arrivalTime,
|
439
|
+
arrivalTimeLocal,
|
303
440
|
premiumAmount,
|
304
441
|
statistics);
|
305
442
|
|
@@ -317,117 +454,12 @@ contract FlightProduct is
|
|
317
454
|
}
|
318
455
|
|
319
456
|
|
320
|
-
/// @dev Callback for flight status oracle.
|
321
|
-
/// Function may only be alled by oracle service.
|
322
|
-
function flightStatusCallback(
|
323
|
-
RequestId requestId,
|
324
|
-
bytes memory responseData
|
325
|
-
)
|
326
|
-
external
|
327
|
-
virtual
|
328
|
-
restricted()
|
329
|
-
{
|
330
|
-
FlightOracle.FlightStatusResponse memory response = abi.decode(
|
331
|
-
responseData, (FlightOracle.FlightStatusResponse));
|
332
|
-
|
333
|
-
_processFlightStatus(
|
334
|
-
requestId,
|
335
|
-
response.riskId,
|
336
|
-
response.status,
|
337
|
-
response.delayMinutes,
|
338
|
-
MAX_POLICIES_TO_PROCESS);
|
339
|
-
}
|
340
|
-
|
341
|
-
|
342
|
-
/// @dev Manual fallback function for product owner.
|
343
|
-
function processFlightStatus(
|
344
|
-
RequestId requestId,
|
345
|
-
RiskId riskId,
|
346
|
-
bytes1 status,
|
347
|
-
int256 delayMinutes,
|
348
|
-
uint8 maxPoliciesToProcess
|
349
|
-
)
|
350
|
-
external
|
351
|
-
virtual
|
352
|
-
restricted()
|
353
|
-
onlyOwner()
|
354
|
-
{
|
355
|
-
_processFlightStatus(
|
356
|
-
requestId,
|
357
|
-
riskId,
|
358
|
-
status,
|
359
|
-
delayMinutes,
|
360
|
-
maxPoliciesToProcess);
|
361
|
-
}
|
362
|
-
|
363
|
-
//--- owner functions ---------------------------------------------------//
|
364
|
-
|
365
|
-
/// @dev Call after product registration with the instance, when the product token/tokenhandler is available
|
366
|
-
function completeSetup()
|
367
|
-
external
|
368
|
-
virtual
|
369
|
-
restricted()
|
370
|
-
onlyOwner()
|
371
|
-
{
|
372
|
-
IERC20Metadata token = IERC20Metadata(getToken());
|
373
|
-
uint256 tokenMultiplier = 10 ** token.decimals();
|
374
|
-
|
375
|
-
MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
|
376
|
-
MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
|
377
|
-
MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
|
378
|
-
MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
|
379
|
-
}
|
380
|
-
|
381
|
-
|
382
|
-
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
383
|
-
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
384
|
-
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
385
|
-
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
386
|
-
|
387
|
-
|
388
|
-
//--- view functions ----------------------------------------------------//
|
389
|
-
|
390
|
-
|
391
|
-
function calculateNetPremium(
|
392
|
-
Amount, // sumInsuredAmount: not used in this product
|
393
|
-
RiskId, // riskId: not used in this product
|
394
|
-
Seconds, // lifetime: not used in this product, a flight is a one time risk
|
395
|
-
bytes memory applicationData // holds the premium amount the customer is willing to pay
|
396
|
-
)
|
397
|
-
external
|
398
|
-
virtual override
|
399
|
-
view
|
400
|
-
returns (Amount netPremiumAmount)
|
401
|
-
{
|
402
|
-
(netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
|
403
|
-
}
|
404
|
-
|
405
|
-
|
406
|
-
function getFlightMessageVerifier()
|
407
|
-
external
|
408
|
-
view
|
409
|
-
returns (FlightMessageVerifier)
|
410
|
-
{
|
411
|
-
return _flightMessageVerifier;
|
412
|
-
}
|
413
|
-
|
414
|
-
|
415
|
-
function getOracleNftId()
|
416
|
-
public
|
417
|
-
view
|
418
|
-
returns (NftId oracleNftId)
|
419
|
-
{
|
420
|
-
return _oracleNftId;
|
421
|
-
}
|
422
|
-
|
423
|
-
|
424
|
-
//--- internal functions ------------------------------------------------//
|
425
|
-
|
426
|
-
|
427
457
|
function _createRiskAndPayoutAmounts(
|
428
458
|
Str flightData,
|
429
459
|
Timestamp departureTime,
|
460
|
+
string memory departureTimeLocal,
|
430
461
|
Timestamp arrivalTime,
|
462
|
+
string memory arrivalTimeLocal,
|
431
463
|
Amount premiumAmount,
|
432
464
|
uint256[6] memory statistics
|
433
465
|
)
|
@@ -453,7 +485,9 @@ contract FlightProduct is
|
|
453
485
|
riskId = _checkAndUpdateFlightRisk(
|
454
486
|
flightData,
|
455
487
|
departureTime,
|
488
|
+
departureTimeLocal,
|
456
489
|
arrivalTime,
|
490
|
+
arrivalTimeLocal,
|
457
491
|
sumInsuredAmount,
|
458
492
|
weight);
|
459
493
|
}
|
@@ -462,7 +496,9 @@ contract FlightProduct is
|
|
462
496
|
function _checkAndUpdateFlightRisk(
|
463
497
|
Str flightData,
|
464
498
|
Timestamp departureTime,
|
499
|
+
string memory departureTimeLocal,
|
465
500
|
Timestamp arrivalTime,
|
501
|
+
string memory arrivalTimeLocal,
|
466
502
|
Amount sumInsuredAmount,
|
467
503
|
uint256 weight
|
468
504
|
)
|
@@ -477,7 +513,9 @@ contract FlightProduct is
|
|
477
513
|
getNftId(),
|
478
514
|
flightData,
|
479
515
|
departureTime,
|
480
|
-
|
516
|
+
departureTimeLocal,
|
517
|
+
arrivalTime,
|
518
|
+
arrivalTimeLocal);
|
481
519
|
|
482
520
|
// create risk, if new
|
483
521
|
if (!exists) {
|
@@ -485,11 +523,10 @@ contract FlightProduct is
|
|
485
523
|
_createRisk(riskKey, abi.encode(flightRisk));
|
486
524
|
}
|
487
525
|
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
);
|
526
|
+
FlightLib.checkClusterRisk(
|
527
|
+
flightRisk.sumOfSumInsuredAmounts,
|
528
|
+
sumInsuredAmount,
|
529
|
+
MAX_TOTAL_PAYOUT);
|
493
530
|
|
494
531
|
// update existing risk with additional sum insured amount
|
495
532
|
flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
|
@@ -501,71 +538,85 @@ contract FlightProduct is
|
|
501
538
|
RequestId requestId,
|
502
539
|
RiskId riskId,
|
503
540
|
bytes1 status,
|
504
|
-
int256 delayMinutes
|
505
|
-
uint8 maxPoliciesToProcess
|
541
|
+
int256 delayMinutes
|
506
542
|
)
|
507
543
|
internal
|
508
544
|
virtual
|
509
545
|
{
|
510
546
|
// check risk exists
|
511
|
-
|
512
|
-
(
|
513
|
-
bool exists,
|
514
|
-
FlightRisk memory flightRisk
|
515
|
-
) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
|
547
|
+
(, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
|
516
548
|
|
517
|
-
if
|
518
|
-
|
519
|
-
|
520
|
-
|
549
|
+
// update status, if not yet set
|
550
|
+
if (flightRisk.statusUpdatedAt.eqz()) {
|
551
|
+
flightRisk.statusUpdatedAt = TimestampLib.current();
|
552
|
+
flightRisk.status = status;
|
553
|
+
flightRisk.delayMinutes = delayMinutes;
|
554
|
+
flightRisk.payoutOption = FlightLib.checkAndGetPayoutOption(
|
555
|
+
requestId, riskId, status, delayMinutes);
|
521
556
|
|
522
|
-
|
523
|
-
|
557
|
+
_updateRisk(riskId, abi.encode(flightRisk));
|
558
|
+
}
|
524
559
|
|
525
|
-
_processPayoutsAndClosePolicies(
|
560
|
+
(,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
|
526
561
|
riskId,
|
527
|
-
|
528
|
-
maxPoliciesToProcess);
|
562
|
+
MAX_POLICIES_TO_PROCESS);
|
529
563
|
|
530
564
|
// logging
|
531
565
|
emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
|
532
566
|
}
|
533
567
|
|
534
568
|
|
535
|
-
// REMARK caller responsible to check that risk exists.
|
536
569
|
function _processPayoutsAndClosePolicies(
|
537
570
|
RiskId riskId,
|
538
|
-
uint8 payoutOption,
|
539
571
|
uint8 maxPoliciesToProcess
|
540
572
|
)
|
541
573
|
internal
|
542
574
|
virtual
|
575
|
+
returns (
|
576
|
+
bool riskExists,
|
577
|
+
bool statusAvailable,
|
578
|
+
uint8 payoutOption
|
579
|
+
)
|
543
580
|
{
|
544
581
|
// determine numbers of policies to process
|
545
582
|
InstanceReader reader = _getInstanceReader();
|
583
|
+
(riskExists, statusAvailable, payoutOption) = FlightLib.getPayoutOption(reader, getNftId(), riskId);
|
584
|
+
|
585
|
+
// return with default values if risk does not exist or status is not yet available
|
586
|
+
if (!riskExists || !statusAvailable) {
|
587
|
+
return (riskExists, statusAvailable, payoutOption);
|
588
|
+
}
|
589
|
+
|
546
590
|
uint256 policiesToProcess = reader.policiesForRisk(riskId);
|
547
|
-
|
591
|
+
uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
|
548
592
|
|
549
|
-
//
|
550
|
-
|
551
|
-
|
593
|
+
// assemble array with policies to process
|
594
|
+
NftId [] memory policies = new NftId[](policiesProcessed);
|
595
|
+
for (uint256 i = 0; i < policiesProcessed; i++) {
|
596
|
+
policies[i] = reader.getPolicyForRisk(riskId, i);
|
597
|
+
}
|
552
598
|
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
599
|
+
// go through policies
|
600
|
+
for (uint256 i = 0; i < policiesProcessed; i++) {
|
601
|
+
NftId policyNftId = policies[i];
|
602
|
+
Amount payoutAmount = FlightLib.getPayoutAmount(
|
603
|
+
reader.getPolicyInfo(policyNftId).applicationData,
|
604
|
+
payoutOption);
|
557
605
|
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
payoutOption));
|
563
|
-
}
|
606
|
+
// create claim/payout (if applicable)
|
607
|
+
_resolvePayout(
|
608
|
+
policyNftId,
|
609
|
+
payoutAmount);
|
564
610
|
|
565
611
|
// expire and close policy
|
566
612
|
_expire(policyNftId, TimestampLib.current());
|
567
613
|
_close(policyNftId);
|
614
|
+
|
615
|
+
emit LogFlightPolicyClosed(policyNftId, payoutAmount);
|
568
616
|
}
|
617
|
+
|
618
|
+
// logging
|
619
|
+
emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
|
569
620
|
}
|
570
621
|
|
571
622
|
|
@@ -576,6 +627,11 @@ contract FlightProduct is
|
|
576
627
|
internal
|
577
628
|
virtual
|
578
629
|
{
|
630
|
+
// no action if no payout
|
631
|
+
if (payoutAmount.eqz()) {
|
632
|
+
return;
|
633
|
+
}
|
634
|
+
|
579
635
|
// create confirmed claim
|
580
636
|
ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
|
581
637
|
_confirmClaim(policyNftId, claimId, payoutAmount, "");
|
@@ -594,9 +650,9 @@ contract FlightProduct is
|
|
594
650
|
address initialOwner
|
595
651
|
)
|
596
652
|
internal
|
597
|
-
initializer
|
653
|
+
initializer()
|
598
654
|
{
|
599
|
-
|
655
|
+
__Product_init(
|
600
656
|
registry,
|
601
657
|
instanceNftId,
|
602
658
|
componentName,
|
@@ -621,5 +677,11 @@ contract FlightProduct is
|
|
621
677
|
}),
|
622
678
|
authorization,
|
623
679
|
initialOwner); // number of oracles
|
680
|
+
|
681
|
+
MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
|
682
|
+
LIFETIME = SecondsLib.fromDays(30);
|
683
|
+
WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
|
684
|
+
MIN_OBSERVATIONS = 10;
|
685
|
+
MARGIN_PERCENT = 30;
|
624
686
|
}
|
625
687
|
}
|