@etherisc/gif-next 3.0.0-f90c901-018 → 3.0.0-fb87f3a-607
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 +10 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +83 -164
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +115 -113
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +46 -91
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +70 -105
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +150 -126
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +84 -20
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +55 -31
- 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 +10 -20
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +42 -18
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +75 -126
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +65 -41
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -72
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +224 -198
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -140
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +56 -84
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +117 -71
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +104 -166
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +138 -200
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +799 -0
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +229 -0
- 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 +4 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1353 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +896 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2289 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +891 -0
- 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 +4 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +586 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +102 -159
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +106 -163
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +120 -177
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +114 -171
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +65 -41
- 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 +54 -49
- 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 +26 -78
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -83
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -145
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +151 -185
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +67 -43
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -77
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +136 -138
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -104
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +82 -32
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +68 -18
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +58 -53
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.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 +8 -3
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +81 -132
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +65 -41
- 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 +66 -94
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +83 -80
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -82
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +148 -149
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +129 -111
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +73 -88
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +65 -41
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +129 -176
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +139 -129
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +44 -71
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +72 -100
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +98 -94
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +73 -88
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +247 -24
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +177 -233
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +130 -140
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +63 -138
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -110
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +57 -72
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +65 -41
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +115 -182
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +138 -132
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +32 -71
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +32 -71
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +76 -82
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -82
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +56 -84
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +36 -75
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +139 -173
- 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 +128 -122
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +94 -161
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +122 -116
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +57 -72
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +63 -146
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +107 -109
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +62 -155
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +216 -202
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +15 -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 +102 -314
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +146 -179
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +77 -57
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +244 -285
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +110 -115
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +154 -175
- 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 +187 -135
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +56 -32
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +29 -13
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +39 -84
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +345 -164
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -115
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +169 -421
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +633 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -96
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +251 -82
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +56 -84
- 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 +28 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +12 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +25 -77
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +12 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +32 -71
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -72
- 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 +34 -15
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +14 -3
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -76
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +37 -3
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +31 -70
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +29 -42
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +17 -30
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +81 -101
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +48 -75
- 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 +134 -170
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +31 -26
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +124 -112
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +22 -5
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +77 -132
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -105
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +204 -212
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +19 -27
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/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/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 +22 -25
- 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 +23 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
- 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 +4 -4
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +21 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +6 -19
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{IUpgradeable.sol/IUpgradeable.json → IVersionable.sol/IVersionable.json} +4 -54
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +86 -63
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{Upgradeable.sol/Upgradeable.json → Versionable.sol/Versionable.json} +4 -54
- package/contracts/accounting/AccountingService.sol +22 -33
- package/contracts/accounting/AccountingServiceManager.sol +6 -4
- package/contracts/accounting/IAccountingService.sol +7 -8
- package/contracts/authorization/AccessAdmin.sol +24 -47
- package/contracts/authorization/AccessAdminLib.sol +29 -15
- package/contracts/authorization/AccessManagerCloneable.sol +51 -24
- package/contracts/authorization/Authorization.sol +2 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -3
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +2 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +4 -5
- package/contracts/distribution/Distribution.sol +2 -0
- package/contracts/distribution/DistributionService.sol +25 -27
- package/contracts/distribution/DistributionServiceManager.sol +6 -4
- package/contracts/distribution/IDistributionService.sol +4 -3
- package/contracts/examples/fire/FirePool.sol +4 -0
- package/contracts/examples/fire/FireProduct.sol +4 -0
- package/contracts/examples/flight/FlightLib.sol +337 -0
- package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
- package/contracts/examples/flight/FlightNft.sol +234 -0
- package/contracts/examples/flight/FlightOracle.sol +226 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +57 -0
- package/contracts/examples/flight/FlightPool.sol +89 -0
- package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
- package/contracts/examples/flight/FlightProduct.sol +687 -0
- package/contracts/examples/flight/FlightProductAuthorization.sol +70 -0
- package/contracts/examples/flight/FlightProductManager.sol +49 -0
- package/contracts/examples/flight/FlightUSD.sol +28 -0
- package/contracts/examples/flight/originalV1.sol +396 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +4 -0
- package/contracts/instance/BaseStore.sol +4 -0
- package/contracts/instance/IBaseStore.sol +8 -0
- package/contracts/instance/IInstance.sol +1 -1
- package/contracts/instance/IInstanceService.sol +2 -0
- package/contracts/instance/Instance.sol +12 -8
- package/contracts/instance/InstanceAdmin.sol +17 -11
- package/contracts/instance/InstanceAuthorizationV3.sol +2 -4
- package/contracts/instance/InstanceReader.sol +56 -22
- package/contracts/instance/InstanceService.sol +24 -18
- package/contracts/instance/InstanceServiceManager.sol +6 -4
- package/contracts/instance/base/Cloneable.sol +10 -4
- package/contracts/instance/base/ObjectSet.sol +2 -2
- package/contracts/oracle/BasicOracle.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +1 -3
- package/contracts/oracle/IOracleService.sol +16 -12
- package/contracts/oracle/Oracle.sol +6 -5
- package/contracts/oracle/OracleService.sol +67 -37
- package/contracts/oracle/OracleServiceManager.sol +6 -4
- package/contracts/pool/BasicPool.sol +4 -2
- package/contracts/pool/BasicPoolAuthorization.sol +4 -5
- package/contracts/pool/BundleService.sol +20 -26
- package/contracts/pool/BundleServiceManager.sol +7 -5
- package/contracts/pool/IBundleService.sol +1 -1
- package/contracts/pool/IPoolService.sol +6 -5
- package/contracts/pool/Pool.sol +3 -1
- package/contracts/pool/PoolLib.sol +102 -5
- package/contracts/pool/PoolService.sol +101 -67
- package/contracts/pool/PoolServiceManager.sol +6 -4
- package/contracts/product/ApplicationService.sol +34 -13
- package/contracts/product/ApplicationServiceManager.sol +6 -4
- package/contracts/product/BasicProduct.sol +2 -0
- package/contracts/product/BasicProductAuthorization.sol +7 -7
- package/contracts/product/ClaimService.sol +34 -10
- package/contracts/product/ClaimServiceManager.sol +7 -5
- package/contracts/product/IPolicyService.sol +2 -1
- package/contracts/product/PolicyService.sol +58 -45
- package/contracts/product/PolicyServiceLib.sol +5 -3
- package/contracts/product/PolicyServiceManager.sol +6 -4
- package/contracts/product/PricingService.sol +8 -7
- package/contracts/product/PricingServiceManager.sol +6 -4
- package/contracts/product/Product.sol +2 -0
- package/contracts/product/RiskService.sol +40 -8
- package/contracts/product/RiskServiceManager.sol +6 -4
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +14 -20
- package/contracts/registry/IRegistryService.sol +14 -10
- package/contracts/registry/IRelease.sol +3 -0
- package/contracts/registry/Registry.sol +78 -124
- package/contracts/registry/RegistryAdmin.sol +29 -12
- package/contracts/registry/RegistryAuthorization.sol +3 -4
- package/contracts/registry/RegistryService.sol +82 -99
- package/contracts/registry/RegistryServiceManager.sol +11 -4
- package/contracts/registry/ReleaseAdmin.sol +23 -9
- package/contracts/registry/ReleaseRegistry.sol +74 -64
- package/contracts/registry/ServiceAuthorizationV3.sol +3 -4
- package/contracts/registry/TokenRegistry.sol +15 -6
- package/contracts/shared/Component.sol +22 -27
- package/contracts/shared/ComponentService.sol +135 -45
- package/contracts/shared/ComponentServiceManager.sol +7 -5
- package/contracts/shared/ContractLib.sol +93 -359
- package/contracts/shared/EcdsaChecker.sol +5 -0
- package/contracts/shared/IAuthorizedComponent.sol +15 -0
- package/contracts/shared/IComponent.sol +3 -5
- package/contracts/shared/IComponentService.sol +15 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -9
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +3 -14
- package/contracts/shared/IRegistryLinked.sol +3 -1
- package/contracts/shared/IService.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +130 -39
- package/contracts/shared/NftOwnable.sol +22 -9
- package/contracts/shared/PolicyHolder.sol +4 -2
- package/contracts/shared/Registerable.sol +20 -37
- package/contracts/shared/RegistryLinked.sol +23 -4
- package/contracts/shared/Service.sol +9 -8
- package/contracts/shared/TokenHandler.sol +1 -4
- package/contracts/staking/IStaking.sol +4 -2
- package/contracts/staking/IStakingService.sol +1 -1
- package/contracts/staking/Staking.sol +34 -28
- package/contracts/staking/StakingLib.sol +1 -3
- package/contracts/staking/StakingManager.sol +6 -3
- package/contracts/staking/StakingReader.sol +17 -9
- package/contracts/staking/StakingService.sol +14 -17
- package/contracts/staking/StakingServiceManager.sol +8 -4
- package/contracts/staking/StakingStore.sol +8 -8
- package/contracts/staking/TargetHandler.sol +5 -4
- package/contracts/type/ObjectType.sol +2 -31
- package/contracts/type/Referral.sol +6 -0
- package/contracts/type/RequestIdSet.sol +62 -0
- package/contracts/type/Seconds.sol +4 -0
- package/contracts/type/String.sol +30 -0
- package/contracts/type/Timestamp.sol +10 -1
- package/contracts/type/Version.sol +16 -15
- package/contracts/upgradeability/{IUpgradeable.sol → IVersionable.sol} +19 -13
- package/contracts/upgradeability/ProxyManager.sol +54 -46
- package/contracts/upgradeability/{Upgradeable.sol → Versionable.sol} +14 -25
- package/package.json +2 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -74
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -74
- package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +0 -4
- package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +0 -4
- package/contracts/shared/IVersionable.sol +0 -19
- package/contracts/shared/Versionable.sol +0 -47
@@ -0,0 +1,687 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
|
5
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
|
+
|
7
|
+
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
8
|
+
import {IComponents} from "../../instance/module/IComponents.sol";
|
9
|
+
import {IPolicy} from "../../instance/module/IPolicy.sol";
|
10
|
+
|
11
|
+
import {Amount, AmountLib} from "../../type/Amount.sol";
|
12
|
+
import {ClaimId} from "../../type/ClaimId.sol";
|
13
|
+
import {Component} from "../../shared/Component.sol";
|
14
|
+
import {FeeLib} from "../../type/Fee.sol";
|
15
|
+
import {FlightLib} from "./FlightLib.sol";
|
16
|
+
import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
|
17
|
+
import {FlightOracle} from "./FlightOracle.sol";
|
18
|
+
import {InstanceReader} from "../../instance/InstanceReader.sol";
|
19
|
+
import {NftId, NftIdLib} from "../../type/NftId.sol";
|
20
|
+
import {PayoutId} from "../../type/PayoutId.sol";
|
21
|
+
import {Product} from "../../product/Product.sol";
|
22
|
+
import {ReferralLib} from "../../type/Referral.sol";
|
23
|
+
import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
|
24
|
+
import {RequestId} from "../../type/RequestId.sol";
|
25
|
+
import {Seconds, SecondsLib} from "../../type/Seconds.sol";
|
26
|
+
import {Str, StrLib} from "../../type/String.sol";
|
27
|
+
import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
28
|
+
|
29
|
+
|
30
|
+
/// @dev FlightProduct implements the flight delay product.
|
31
|
+
contract FlightProduct is
|
32
|
+
Product
|
33
|
+
{
|
34
|
+
|
35
|
+
event LogFlightPolicyPurchased(NftId policyNftId, string flightData, Amount premiumAmount);
|
36
|
+
event LogFlightPolicyClosed(NftId policyNftId, Amount payoutAmount);
|
37
|
+
|
38
|
+
event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
|
39
|
+
event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
|
40
|
+
|
41
|
+
// solhint-disable
|
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
|
+
|
47
|
+
// Minimum time before departure for applying
|
48
|
+
Seconds public MIN_TIME_BEFORE_DEPARTURE;
|
49
|
+
// Maximum time before departure for applying
|
50
|
+
Seconds public MAX_TIME_BEFORE_DEPARTURE;
|
51
|
+
// Maximum duration of flight
|
52
|
+
Seconds public MAX_FLIGHT_DURATION;
|
53
|
+
// Max time to process claims after departure
|
54
|
+
Seconds public LIFETIME;
|
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;
|
61
|
+
// Maximum cumulated weighted premium per risk
|
62
|
+
uint256 public MARGIN_PERCENT;
|
63
|
+
// Maximum number of policies to process in one callback
|
64
|
+
uint8 public MAX_POLICIES_TO_PROCESS;
|
65
|
+
// solhint-enable
|
66
|
+
|
67
|
+
bool internal _testMode;
|
68
|
+
|
69
|
+
mapping(RiskId riskId => RequestId requestId) internal _requests;
|
70
|
+
|
71
|
+
// GIF V3 specifics
|
72
|
+
NftId internal _defaultBundleNftId;
|
73
|
+
NftId internal _oracleNftId;
|
74
|
+
|
75
|
+
|
76
|
+
struct FlightRisk {
|
77
|
+
Str flightData; // example: "LX 180 ZRH BKK 20241104"
|
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"
|
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"
|
84
|
+
Amount sumOfSumInsuredAmounts;
|
85
|
+
bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
|
86
|
+
int256 delayMinutes;
|
87
|
+
uint8 payoutOption;
|
88
|
+
Timestamp statusUpdatedAt;
|
89
|
+
}
|
90
|
+
|
91
|
+
|
92
|
+
struct ApplicationData {
|
93
|
+
string flightData;
|
94
|
+
Timestamp departureTime;
|
95
|
+
string departureTimeLocal;
|
96
|
+
Timestamp arrivalTime;
|
97
|
+
string arrivalTimeLocal;
|
98
|
+
Amount premiumAmount;
|
99
|
+
uint256[6] statistics;
|
100
|
+
}
|
101
|
+
|
102
|
+
|
103
|
+
struct PermitData {
|
104
|
+
address owner;
|
105
|
+
address spender;
|
106
|
+
uint256 value;
|
107
|
+
uint256 deadline;
|
108
|
+
uint8 v;
|
109
|
+
bytes32 r;
|
110
|
+
bytes32 s;
|
111
|
+
}
|
112
|
+
|
113
|
+
|
114
|
+
constructor(
|
115
|
+
address registry,
|
116
|
+
NftId instanceNftId,
|
117
|
+
string memory componentName,
|
118
|
+
IAuthorization authorization
|
119
|
+
)
|
120
|
+
{
|
121
|
+
address initialOwner = msg.sender;
|
122
|
+
|
123
|
+
_initialize(
|
124
|
+
registry,
|
125
|
+
instanceNftId,
|
126
|
+
componentName,
|
127
|
+
authorization,
|
128
|
+
initialOwner);
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
//--- external functions ------------------------------------------------//
|
133
|
+
//--- unpermissioned functions ------------------------------------------//
|
134
|
+
|
135
|
+
function setOracleNftId()
|
136
|
+
external
|
137
|
+
{
|
138
|
+
_oracleNftId = _getInstanceReader().getProductInfo(
|
139
|
+
getNftId()).oracleNftId[0];
|
140
|
+
}
|
141
|
+
|
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
|
+
|
162
|
+
/// @dev Creates a policy using a permit for the policy holder.
|
163
|
+
/// The policy holder is defined as the owner parameter of the permit data.
|
164
|
+
/// NOTE: This function makes the assumption that the product token
|
165
|
+
/// supports permits. This assumption is not verfied.
|
166
|
+
function createPolicyWithPermit(
|
167
|
+
PermitData memory permit,
|
168
|
+
ApplicationData memory application
|
169
|
+
)
|
170
|
+
external
|
171
|
+
virtual
|
172
|
+
restricted()
|
173
|
+
returns (
|
174
|
+
RiskId riskId,
|
175
|
+
NftId policyNftId
|
176
|
+
)
|
177
|
+
{
|
178
|
+
// process permit data
|
179
|
+
_processPermit(permit);
|
180
|
+
|
181
|
+
// create policy
|
182
|
+
address policyHolder = permit.owner;
|
183
|
+
(
|
184
|
+
riskId,
|
185
|
+
policyNftId
|
186
|
+
) = _createPolicy(
|
187
|
+
policyHolder,
|
188
|
+
StrLib.toStr(application.flightData),
|
189
|
+
application.departureTime,
|
190
|
+
application.departureTimeLocal,
|
191
|
+
application.arrivalTime,
|
192
|
+
application.arrivalTimeLocal,
|
193
|
+
application.premiumAmount,
|
194
|
+
application.statistics);
|
195
|
+
}
|
196
|
+
|
197
|
+
|
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 resendRequest(RequestId requestId)
|
220
|
+
external
|
221
|
+
virtual
|
222
|
+
restricted()
|
223
|
+
{
|
224
|
+
_resendRequest(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
|
304
|
+
)
|
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
|
329
|
+
virtual
|
330
|
+
restricted()
|
331
|
+
{
|
332
|
+
address tokenAddress = address(getToken());
|
333
|
+
|
334
|
+
// process permit data
|
335
|
+
ERC20Permit(tokenAddress).permit(
|
336
|
+
permit.owner,
|
337
|
+
permit.spender,
|
338
|
+
permit.value,
|
339
|
+
permit.deadline,
|
340
|
+
permit.v,
|
341
|
+
permit.r,
|
342
|
+
permit.s);
|
343
|
+
}
|
344
|
+
|
345
|
+
|
346
|
+
function _createPolicy(
|
347
|
+
address policyHolder,
|
348
|
+
Str flightData,
|
349
|
+
Timestamp departureTime,
|
350
|
+
string memory departureTimeLocal,
|
351
|
+
Timestamp arrivalTime,
|
352
|
+
string memory arrivalTimeLocal,
|
353
|
+
Amount premiumAmount,
|
354
|
+
uint256[6] memory statistics
|
355
|
+
)
|
356
|
+
internal
|
357
|
+
virtual
|
358
|
+
returns (
|
359
|
+
RiskId riskId,
|
360
|
+
NftId policyNftId
|
361
|
+
)
|
362
|
+
{
|
363
|
+
// checks
|
364
|
+
// disabled for now - using rbac for security
|
365
|
+
FlightLib.checkApplicationData(
|
366
|
+
this,
|
367
|
+
flightData,
|
368
|
+
departureTime,
|
369
|
+
arrivalTime,
|
370
|
+
premiumAmount);
|
371
|
+
|
372
|
+
(riskId, policyNftId) = _prepareApplication(
|
373
|
+
policyHolder,
|
374
|
+
flightData,
|
375
|
+
departureTime,
|
376
|
+
departureTimeLocal,
|
377
|
+
arrivalTime,
|
378
|
+
arrivalTimeLocal,
|
379
|
+
premiumAmount,
|
380
|
+
statistics);
|
381
|
+
|
382
|
+
_createPolicy(
|
383
|
+
policyNftId,
|
384
|
+
TimestampLib.zero(), // do not ativate yet
|
385
|
+
premiumAmount); // max premium amount
|
386
|
+
|
387
|
+
// interactions (token transfer + callback to token holder, if contract)
|
388
|
+
_collectPremium(
|
389
|
+
policyNftId,
|
390
|
+
departureTime); // activate at scheduled departure time of flight
|
391
|
+
|
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);
|
407
|
+
}
|
408
|
+
|
409
|
+
|
410
|
+
function _prepareApplication(
|
411
|
+
address policyHolder,
|
412
|
+
Str flightData,
|
413
|
+
Timestamp departureTime,
|
414
|
+
string memory departureTimeLocal,
|
415
|
+
Timestamp arrivalTime,
|
416
|
+
string memory arrivalTimeLocal,
|
417
|
+
Amount premiumAmount,
|
418
|
+
uint256[6] memory statistics
|
419
|
+
)
|
420
|
+
internal
|
421
|
+
virtual
|
422
|
+
returns (
|
423
|
+
RiskId riskId,
|
424
|
+
NftId policyNftId
|
425
|
+
)
|
426
|
+
{
|
427
|
+
Amount[5] memory payoutAmounts;
|
428
|
+
Amount sumInsuredAmount;
|
429
|
+
|
430
|
+
(
|
431
|
+
riskId,
|
432
|
+
payoutAmounts,
|
433
|
+
sumInsuredAmount
|
434
|
+
) = _createRiskAndPayoutAmounts(
|
435
|
+
flightData,
|
436
|
+
departureTime,
|
437
|
+
departureTimeLocal,
|
438
|
+
arrivalTime,
|
439
|
+
arrivalTimeLocal,
|
440
|
+
premiumAmount,
|
441
|
+
statistics);
|
442
|
+
|
443
|
+
policyNftId = _createApplication(
|
444
|
+
policyHolder,
|
445
|
+
riskId,
|
446
|
+
sumInsuredAmount,
|
447
|
+
premiumAmount,
|
448
|
+
LIFETIME,
|
449
|
+
_defaultBundleNftId,
|
450
|
+
ReferralLib.zero(),
|
451
|
+
abi.encode(
|
452
|
+
premiumAmount,
|
453
|
+
payoutAmounts)); // application data
|
454
|
+
}
|
455
|
+
|
456
|
+
|
457
|
+
function _createRiskAndPayoutAmounts(
|
458
|
+
Str flightData,
|
459
|
+
Timestamp departureTime,
|
460
|
+
string memory departureTimeLocal,
|
461
|
+
Timestamp arrivalTime,
|
462
|
+
string memory arrivalTimeLocal,
|
463
|
+
Amount premiumAmount,
|
464
|
+
uint256[6] memory statistics
|
465
|
+
)
|
466
|
+
internal
|
467
|
+
virtual
|
468
|
+
returns (
|
469
|
+
RiskId riskId,
|
470
|
+
Amount[5] memory payoutAmounts,
|
471
|
+
Amount sumInsuredAmount
|
472
|
+
)
|
473
|
+
{
|
474
|
+
uint256 weight;
|
475
|
+
|
476
|
+
(
|
477
|
+
weight,
|
478
|
+
payoutAmounts,
|
479
|
+
sumInsuredAmount
|
480
|
+
) = FlightLib.calculatePayoutAmounts(
|
481
|
+
this,
|
482
|
+
premiumAmount,
|
483
|
+
statistics);
|
484
|
+
|
485
|
+
riskId = _checkAndUpdateFlightRisk(
|
486
|
+
flightData,
|
487
|
+
departureTime,
|
488
|
+
departureTimeLocal,
|
489
|
+
arrivalTime,
|
490
|
+
arrivalTimeLocal,
|
491
|
+
sumInsuredAmount,
|
492
|
+
weight);
|
493
|
+
}
|
494
|
+
|
495
|
+
|
496
|
+
function _checkAndUpdateFlightRisk(
|
497
|
+
Str flightData,
|
498
|
+
Timestamp departureTime,
|
499
|
+
string memory departureTimeLocal,
|
500
|
+
Timestamp arrivalTime,
|
501
|
+
string memory arrivalTimeLocal,
|
502
|
+
Amount sumInsuredAmount,
|
503
|
+
uint256 weight
|
504
|
+
)
|
505
|
+
internal
|
506
|
+
virtual
|
507
|
+
returns (RiskId riskId)
|
508
|
+
{
|
509
|
+
bool exists;
|
510
|
+
FlightRisk memory flightRisk;
|
511
|
+
(riskId, exists, flightRisk) = FlightLib.getFlightRisk(
|
512
|
+
_getInstanceReader(),
|
513
|
+
getNftId(),
|
514
|
+
flightData,
|
515
|
+
departureTime,
|
516
|
+
departureTimeLocal,
|
517
|
+
arrivalTime,
|
518
|
+
arrivalTimeLocal);
|
519
|
+
|
520
|
+
// create risk, if new
|
521
|
+
if (!exists) {
|
522
|
+
bytes32 riskKey = FlightLib.getRiskKey(flightData);
|
523
|
+
_createRisk(riskKey, abi.encode(flightRisk));
|
524
|
+
}
|
525
|
+
|
526
|
+
FlightLib.checkClusterRisk(
|
527
|
+
flightRisk.sumOfSumInsuredAmounts,
|
528
|
+
sumInsuredAmount,
|
529
|
+
MAX_TOTAL_PAYOUT);
|
530
|
+
|
531
|
+
// update existing risk with additional sum insured amount
|
532
|
+
flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
|
533
|
+
_updateRisk(riskId, abi.encode(flightRisk));
|
534
|
+
}
|
535
|
+
|
536
|
+
|
537
|
+
function _processFlightStatus(
|
538
|
+
RequestId requestId,
|
539
|
+
RiskId riskId,
|
540
|
+
bytes1 status,
|
541
|
+
int256 delayMinutes
|
542
|
+
)
|
543
|
+
internal
|
544
|
+
virtual
|
545
|
+
{
|
546
|
+
// check risk exists
|
547
|
+
(, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
|
548
|
+
|
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);
|
556
|
+
|
557
|
+
_updateRisk(riskId, abi.encode(flightRisk));
|
558
|
+
}
|
559
|
+
|
560
|
+
(,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
|
561
|
+
riskId,
|
562
|
+
MAX_POLICIES_TO_PROCESS);
|
563
|
+
|
564
|
+
// logging
|
565
|
+
emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
|
566
|
+
}
|
567
|
+
|
568
|
+
|
569
|
+
function _processPayoutsAndClosePolicies(
|
570
|
+
RiskId riskId,
|
571
|
+
uint8 maxPoliciesToProcess
|
572
|
+
)
|
573
|
+
internal
|
574
|
+
virtual
|
575
|
+
returns (
|
576
|
+
bool riskExists,
|
577
|
+
bool statusAvailable,
|
578
|
+
uint8 payoutOption
|
579
|
+
)
|
580
|
+
{
|
581
|
+
// determine numbers of policies to process
|
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
|
+
|
590
|
+
uint256 policiesToProcess = reader.policiesForRisk(riskId);
|
591
|
+
uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
|
592
|
+
|
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
|
+
}
|
598
|
+
|
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);
|
605
|
+
|
606
|
+
// create claim/payout (if applicable)
|
607
|
+
_resolvePayout(
|
608
|
+
policyNftId,
|
609
|
+
payoutAmount);
|
610
|
+
|
611
|
+
// expire and close policy
|
612
|
+
_expire(policyNftId, TimestampLib.current());
|
613
|
+
_close(policyNftId);
|
614
|
+
|
615
|
+
emit LogFlightPolicyClosed(policyNftId, payoutAmount);
|
616
|
+
}
|
617
|
+
|
618
|
+
// logging
|
619
|
+
emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
|
620
|
+
}
|
621
|
+
|
622
|
+
|
623
|
+
function _resolvePayout(
|
624
|
+
NftId policyNftId,
|
625
|
+
Amount payoutAmount
|
626
|
+
)
|
627
|
+
internal
|
628
|
+
virtual
|
629
|
+
{
|
630
|
+
// no action if no payout
|
631
|
+
if (payoutAmount.eqz()) {
|
632
|
+
return;
|
633
|
+
}
|
634
|
+
|
635
|
+
// create confirmed claim
|
636
|
+
ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
|
637
|
+
_confirmClaim(policyNftId, claimId, payoutAmount, "");
|
638
|
+
|
639
|
+
// create and execute payout
|
640
|
+
PayoutId payoutId = _createPayout(policyNftId, claimId, payoutAmount, "");
|
641
|
+
_processPayout(policyNftId, payoutId);
|
642
|
+
}
|
643
|
+
|
644
|
+
|
645
|
+
function _initialize(
|
646
|
+
address registry,
|
647
|
+
NftId instanceNftId,
|
648
|
+
string memory componentName,
|
649
|
+
IAuthorization authorization,
|
650
|
+
address initialOwner
|
651
|
+
)
|
652
|
+
internal
|
653
|
+
initializer()
|
654
|
+
{
|
655
|
+
__Product_init(
|
656
|
+
registry,
|
657
|
+
instanceNftId,
|
658
|
+
componentName,
|
659
|
+
IComponents.ProductInfo({
|
660
|
+
isProcessingFundedClaims: false,
|
661
|
+
isInterceptingPolicyTransfers: false,
|
662
|
+
hasDistribution: false,
|
663
|
+
expectedNumberOfOracles: 1,
|
664
|
+
numberOfOracles: 0,
|
665
|
+
poolNftId: NftIdLib.zero(),
|
666
|
+
distributionNftId: NftIdLib.zero(),
|
667
|
+
oracleNftId: new NftId[](0)
|
668
|
+
}),
|
669
|
+
IComponents.FeeInfo({
|
670
|
+
productFee: FeeLib.zero(),
|
671
|
+
processingFee: FeeLib.zero(),
|
672
|
+
distributionFee: FeeLib.zero(),
|
673
|
+
minDistributionOwnerFee: FeeLib.zero(),
|
674
|
+
poolFee: FeeLib.zero(),
|
675
|
+
stakingFee: FeeLib.zero(),
|
676
|
+
performanceFee: FeeLib.zero()
|
677
|
+
}),
|
678
|
+
authorization,
|
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;
|
686
|
+
}
|
687
|
+
}
|