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