@etherisc/gif-next 3.0.0-fbbe3fc-042 → 3.0.0-fc7e513-722
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +42 -56
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +15 -19
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +14 -20
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2 -2
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +25 -6
- 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 +157 -72
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +37 -37
- 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/distribution/IDistributionService.sol/IDistributionService.json +85 -0
- 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 +136 -65
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +147 -28
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +20 -20
- 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 +300 -508
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +20 -20
- 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/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 +2 -2
- 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/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +61 -0
- 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 +2 -2
- 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 +69 -34
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +81 -20
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +11 -11
- 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 +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 +38 -38
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +20 -20
- 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/ChainNft.sol/ChainNft.json +2 -2
- 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 +4 -4
- 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 +2 -2
- 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 +2 -2
- 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 +51 -26
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +14 -14
- 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 +1 -1
- 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/IComponentService.sol/IComponentService.json +25 -0
- 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/IStaking.sol/IStaking.json +25 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +12 -0
- 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 +73 -48
- 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 +25 -25
- 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 +26 -14
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +8 -8
- 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/accounting/AccountingService.sol +17 -29
- package/contracts/accounting/IAccountingService.sol +7 -8
- package/contracts/authorization/AccessAdmin.sol +0 -21
- package/contracts/authorization/AccessManagerCloneable.sol +3 -0
- package/contracts/distribution/DistributionService.sol +5 -3
- package/contracts/distribution/IDistributionService.sol +4 -3
- package/contracts/examples/flight/FlightLib.sol +55 -18
- package/contracts/examples/flight/FlightNft.sol +234 -0
- package/contracts/examples/flight/FlightOracle.sol +64 -9
- package/contracts/examples/flight/FlightOracleAuthorization.sol +5 -1
- package/contracts/examples/flight/FlightPool.sol +1 -1
- package/contracts/examples/flight/FlightProduct.sol +182 -180
- package/contracts/examples/flight/FlightProductAuthorization.sol +3 -2
- package/contracts/examples/flight/FlightProductManager.sol +49 -0
- package/contracts/instance/BaseStore.sol +4 -0
- package/contracts/instance/IBaseStore.sol +8 -0
- package/contracts/instance/IInstanceService.sol +2 -0
- package/contracts/instance/InstanceReader.sol +10 -4
- package/contracts/instance/InstanceService.sol +4 -0
- package/contracts/oracle/BasicOracle.sol +1 -0
- package/contracts/oracle/Oracle.sol +2 -2
- package/contracts/oracle/OracleService.sol +1 -1
- package/contracts/product/PolicyServiceLib.sol +5 -3
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/shared/ComponentService.sol +5 -0
- package/contracts/shared/IComponentService.sol +1 -0
- package/contracts/staking/IStaking.sol +2 -0
- package/contracts/staking/IStakingService.sol +1 -1
- package/contracts/staking/Staking.sol +1 -0
- package/contracts/staking/StakingService.sol +1 -1
- package/package.json +1 -1
@@ -6,9 +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
12
|
import {ClaimId} from "../../type/ClaimId.sol";
|
13
|
+
import {Component} from "../../shared/Component.sol";
|
12
14
|
import {FeeLib} from "../../type/Fee.sol";
|
13
15
|
import {FlightLib} from "./FlightLib.sol";
|
14
16
|
import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
|
@@ -21,7 +23,7 @@ import {ReferralLib} from "../../type/Referral.sol";
|
|
21
23
|
import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
|
22
24
|
import {RequestId} from "../../type/RequestId.sol";
|
23
25
|
import {Seconds, SecondsLib} from "../../type/Seconds.sol";
|
24
|
-
import {Str} from "../../type/String.sol";
|
26
|
+
import {Str, StrLib} from "../../type/String.sol";
|
25
27
|
import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
26
28
|
|
27
29
|
|
@@ -30,68 +32,45 @@ contract FlightProduct is
|
|
30
32
|
Product
|
31
33
|
{
|
32
34
|
|
33
|
-
event
|
34
|
-
event
|
35
|
-
|
35
|
+
event LogFlightPolicyPurchased(NftId policyNftId, string flightData, Amount premiumAmount);
|
36
|
+
event LogFlightPolicyClosed(NftId policyNftId, Amount payoutAmount);
|
37
|
+
|
36
38
|
event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
|
37
39
|
event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
|
38
40
|
|
39
|
-
// TODO convert error logs to custom errors
|
40
|
-
// event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
|
41
|
-
event LogPolicyExpired(bytes32 bpKey);
|
42
|
-
|
43
|
-
event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
|
44
|
-
event LogErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
|
45
|
-
event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
|
46
|
-
|
47
|
-
error ErrorApplicationDataSignatureMismatch(address expectedSigner, address actualSigner);
|
48
|
-
error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
|
49
|
-
error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
|
50
|
-
error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
|
51
|
-
error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
|
52
|
-
error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
|
53
|
-
error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
|
54
|
-
error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
|
55
|
-
error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
|
56
|
-
|
57
41
|
// solhint-disable
|
58
|
-
// Minimum observations for valid prediction
|
59
|
-
uint256 public immutable MIN_OBSERVATIONS = 10;
|
60
|
-
// Minimum time before departure for applying
|
61
|
-
Seconds public MIN_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(14);
|
62
|
-
// Maximum time before departure for applying
|
63
|
-
Seconds public MAX_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(90);
|
64
|
-
// Maximum duration of flight
|
65
|
-
Seconds public MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
|
66
|
-
// Check for delay after .. minutes after scheduled arrival
|
67
|
-
Seconds public CHECK_OFFSET = SecondsLib.fromHours(1);
|
68
|
-
// Max time to process claims after departure
|
69
|
-
Seconds public LIFETIME = SecondsLib.fromDays(30);
|
70
|
-
|
71
|
-
// uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
|
72
|
-
// All amounts in cent = multiplier is 10 ** 16!
|
73
42
|
Amount public MIN_PREMIUM;
|
74
43
|
Amount public MAX_PREMIUM;
|
75
44
|
Amount public MAX_PAYOUT;
|
76
|
-
Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight
|
77
|
-
|
78
|
-
// Maximum cumulated weighted premium per risk
|
79
|
-
uint256 public MARGIN_PERCENT = 30;
|
45
|
+
Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight/risk
|
80
46
|
|
81
|
-
//
|
82
|
-
|
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;
|
83
55
|
|
84
56
|
// ['observations','late15','late30','late45','cancelled','diverted']
|
85
57
|
// no payouts for delays of 30' or less
|
86
|
-
uint8[6] public WEIGHT_PATTERN
|
87
|
-
|
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
|
88
66
|
|
89
67
|
bool internal _testMode;
|
90
68
|
|
69
|
+
mapping(RiskId riskId => RequestId requestId) internal _requests;
|
70
|
+
|
91
71
|
// GIF V3 specifics
|
92
72
|
NftId internal _defaultBundleNftId;
|
93
73
|
NftId internal _oracleNftId;
|
94
|
-
// solhint-enable
|
95
74
|
|
96
75
|
|
97
76
|
struct FlightRisk {
|
@@ -103,16 +82,15 @@ contract FlightProduct is
|
|
103
82
|
// this field contains static data required by the frontend and is not directly used by the product
|
104
83
|
string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
105
84
|
Amount sumOfSumInsuredAmounts;
|
106
|
-
// uint256 premiumMultiplier; // what is this? UFixed?
|
107
|
-
// uint256 weight; // what is this? UFixed?
|
108
85
|
bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
|
109
86
|
int256 delayMinutes;
|
110
87
|
uint8 payoutOption;
|
111
88
|
Timestamp statusUpdatedAt;
|
112
89
|
}
|
113
90
|
|
91
|
+
|
114
92
|
struct ApplicationData {
|
115
|
-
|
93
|
+
string flightData;
|
116
94
|
Timestamp departureTime;
|
117
95
|
string departureTimeLocal;
|
118
96
|
Timestamp arrivalTime;
|
@@ -135,7 +113,7 @@ contract FlightProduct is
|
|
135
113
|
|
136
114
|
constructor(
|
137
115
|
address registry,
|
138
|
-
NftId
|
116
|
+
NftId instanceNftId,
|
139
117
|
string memory componentName,
|
140
118
|
IAuthorization authorization
|
141
119
|
)
|
@@ -144,12 +122,13 @@ contract FlightProduct is
|
|
144
122
|
|
145
123
|
_initialize(
|
146
124
|
registry,
|
147
|
-
|
125
|
+
instanceNftId,
|
148
126
|
componentName,
|
149
127
|
authorization,
|
150
128
|
initialOwner);
|
151
129
|
}
|
152
130
|
|
131
|
+
|
153
132
|
//--- external functions ------------------------------------------------//
|
154
133
|
//--- unpermissioned functions ------------------------------------------//
|
155
134
|
|
@@ -160,6 +139,7 @@ contract FlightProduct is
|
|
160
139
|
getNftId()).oracleNftId[0];
|
161
140
|
}
|
162
141
|
|
142
|
+
|
163
143
|
function calculatePayoutAmounts(
|
164
144
|
FlightProduct flightProduct,
|
165
145
|
Amount premium,
|
@@ -205,7 +185,7 @@ contract FlightProduct is
|
|
205
185
|
policyNftId
|
206
186
|
) = _createPolicy(
|
207
187
|
policyHolder,
|
208
|
-
application.flightData,
|
188
|
+
StrLib.toStr(application.flightData),
|
209
189
|
application.departureTime,
|
210
190
|
application.departureTimeLocal,
|
211
191
|
application.arrivalTime,
|
@@ -215,66 +195,6 @@ contract FlightProduct is
|
|
215
195
|
}
|
216
196
|
|
217
197
|
|
218
|
-
function _createPolicy(
|
219
|
-
address policyHolder,
|
220
|
-
Str flightData,
|
221
|
-
Timestamp departureTime,
|
222
|
-
string memory departureTimeLocal,
|
223
|
-
Timestamp arrivalTime,
|
224
|
-
string memory arrivalTimeLocal,
|
225
|
-
Amount premiumAmount,
|
226
|
-
uint256[6] memory statistics
|
227
|
-
)
|
228
|
-
internal
|
229
|
-
virtual
|
230
|
-
returns (
|
231
|
-
RiskId riskId,
|
232
|
-
NftId policyNftId
|
233
|
-
)
|
234
|
-
{
|
235
|
-
// checks
|
236
|
-
// disabled for now - using rbac for security
|
237
|
-
FlightLib.checkApplicationData(
|
238
|
-
this,
|
239
|
-
flightData,
|
240
|
-
departureTime,
|
241
|
-
arrivalTime,
|
242
|
-
premiumAmount);
|
243
|
-
|
244
|
-
(riskId, policyNftId) = _prepareApplication(
|
245
|
-
policyHolder,
|
246
|
-
flightData,
|
247
|
-
departureTime,
|
248
|
-
departureTimeLocal,
|
249
|
-
arrivalTime,
|
250
|
-
arrivalTimeLocal,
|
251
|
-
premiumAmount,
|
252
|
-
statistics);
|
253
|
-
|
254
|
-
_createPolicy(
|
255
|
-
policyNftId,
|
256
|
-
TimestampLib.zero(), // do not ativate yet
|
257
|
-
premiumAmount); // max premium amount
|
258
|
-
|
259
|
-
// interactions (token transfer + callback to token holder, if contract)
|
260
|
-
_collectPremium(
|
261
|
-
policyNftId,
|
262
|
-
departureTime); // activate at scheduled departure time of flight
|
263
|
-
|
264
|
-
// send oracle request for flight status (interacts with flight oracle contract)
|
265
|
-
_sendRequest(
|
266
|
-
_oracleNftId,
|
267
|
-
abi.encode(
|
268
|
-
FlightOracle.FlightStatusRequest(
|
269
|
-
riskId,
|
270
|
-
flightData,
|
271
|
-
departureTime)),
|
272
|
-
// allow up to 30 days to process the claim
|
273
|
-
arrivalTime.addSeconds(SecondsLib.fromDays(30)),
|
274
|
-
"flightStatusCallback");
|
275
|
-
}
|
276
|
-
|
277
|
-
|
278
198
|
/// @dev Callback for flight status oracle.
|
279
199
|
/// Function may only be alled by oracle service.
|
280
200
|
function flightStatusCallback(
|
@@ -292,31 +212,17 @@ contract FlightProduct is
|
|
292
212
|
requestId,
|
293
213
|
response.riskId,
|
294
214
|
response.status,
|
295
|
-
response.delayMinutes
|
296
|
-
MAX_POLICIES_TO_PROCESS);
|
215
|
+
response.delayMinutes);
|
297
216
|
}
|
298
217
|
|
299
218
|
|
300
|
-
|
301
|
-
function processFlightStatus(
|
302
|
-
RequestId requestId,
|
303
|
-
RiskId riskId,
|
304
|
-
bytes1 status,
|
305
|
-
int256 delayMinutes,
|
306
|
-
uint8 maxPoliciesToProcess
|
307
|
-
)
|
219
|
+
function resendRequest(RequestId requestId)
|
308
220
|
external
|
309
221
|
virtual
|
310
222
|
restricted()
|
311
|
-
onlyOwner()
|
312
223
|
{
|
313
|
-
|
314
|
-
|
315
|
-
riskId,
|
316
|
-
status,
|
317
|
-
delayMinutes,
|
318
|
-
maxPoliciesToProcess);
|
319
|
-
}
|
224
|
+
_resendRequest(requestId);
|
225
|
+
}
|
320
226
|
|
321
227
|
|
322
228
|
/// @dev Manual fallback function for product owner.
|
@@ -339,22 +245,30 @@ contract FlightProduct is
|
|
339
245
|
|
340
246
|
/// @dev Call after product registration with the instance
|
341
247
|
/// when the product token/tokenhandler is available
|
342
|
-
function
|
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
|
+
)
|
343
257
|
external
|
344
258
|
virtual
|
345
259
|
restricted()
|
346
260
|
onlyOwner()
|
347
261
|
{
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
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;
|
355
270
|
}
|
356
271
|
|
357
|
-
|
358
272
|
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
359
273
|
function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
|
360
274
|
|
@@ -382,6 +296,27 @@ contract FlightProduct is
|
|
382
296
|
|
383
297
|
function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
|
384
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]; }
|
385
320
|
function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
|
386
321
|
|
387
322
|
//--- internal functions ------------------------------------------------//
|
@@ -408,6 +343,70 @@ contract FlightProduct is
|
|
408
343
|
}
|
409
344
|
|
410
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
|
+
|
411
410
|
function _prepareApplication(
|
412
411
|
address policyHolder,
|
413
412
|
Str flightData,
|
@@ -524,10 +523,10 @@ contract FlightProduct is
|
|
524
523
|
_createRisk(riskKey, abi.encode(flightRisk));
|
525
524
|
}
|
526
525
|
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
526
|
+
FlightLib.checkClusterRisk(
|
527
|
+
flightRisk.sumOfSumInsuredAmounts,
|
528
|
+
sumInsuredAmount,
|
529
|
+
MAX_TOTAL_PAYOUT);
|
531
530
|
|
532
531
|
// update existing risk with additional sum insured amount
|
533
532
|
flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
|
@@ -539,40 +538,28 @@ contract FlightProduct is
|
|
539
538
|
RequestId requestId,
|
540
539
|
RiskId riskId,
|
541
540
|
bytes1 status,
|
542
|
-
int256 delayMinutes
|
543
|
-
uint8 maxPoliciesToProcess
|
541
|
+
int256 delayMinutes
|
544
542
|
)
|
545
543
|
internal
|
546
544
|
virtual
|
547
545
|
{
|
548
546
|
// check risk exists
|
549
|
-
|
550
|
-
(
|
551
|
-
bool exists,
|
552
|
-
FlightRisk memory flightRisk
|
553
|
-
) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
|
547
|
+
(, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
|
554
548
|
|
555
|
-
if
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
flightRisk.payoutOption = FlightLib.checkAndGetPayoutOption(
|
565
|
-
requestId, riskId, status, delayMinutes);
|
566
|
-
flightRisk.statusUpdatedAt = TimestampLib.current();
|
567
|
-
|
568
|
-
_updateRisk(riskId, abi.encode(flightRisk));
|
569
|
-
}
|
570
|
-
// TODO revert in else case?
|
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));
|
571
558
|
}
|
572
559
|
|
573
560
|
(,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
|
574
561
|
riskId,
|
575
|
-
|
562
|
+
MAX_POLICIES_TO_PROCESS);
|
576
563
|
|
577
564
|
// logging
|
578
565
|
emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
|
@@ -603,25 +590,29 @@ contract FlightProduct is
|
|
603
590
|
uint256 policiesToProcess = reader.policiesForRisk(riskId);
|
604
591
|
uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
|
605
592
|
|
606
|
-
//
|
593
|
+
// assemble array with policies to process
|
594
|
+
NftId [] memory policies = new NftId[](policiesProcessed);
|
607
595
|
for (uint256 i = 0; i < policiesProcessed; i++) {
|
608
|
-
|
596
|
+
policies[i] = reader.getPolicyForRisk(riskId, i);
|
597
|
+
}
|
609
598
|
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
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);
|
614
605
|
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
payoutOption));
|
620
|
-
}
|
606
|
+
// create claim/payout (if applicable)
|
607
|
+
_resolvePayout(
|
608
|
+
policyNftId,
|
609
|
+
payoutAmount);
|
621
610
|
|
622
611
|
// expire and close policy
|
623
612
|
_expire(policyNftId, TimestampLib.current());
|
624
613
|
_close(policyNftId);
|
614
|
+
|
615
|
+
emit LogFlightPolicyClosed(policyNftId, payoutAmount);
|
625
616
|
}
|
626
617
|
|
627
618
|
// logging
|
@@ -636,6 +627,11 @@ contract FlightProduct is
|
|
636
627
|
internal
|
637
628
|
virtual
|
638
629
|
{
|
630
|
+
// no action if no payout
|
631
|
+
if (payoutAmount.eqz()) {
|
632
|
+
return;
|
633
|
+
}
|
634
|
+
|
639
635
|
// create confirmed claim
|
640
636
|
ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
|
641
637
|
_confirmClaim(policyNftId, claimId, payoutAmount, "");
|
@@ -654,7 +650,7 @@ contract FlightProduct is
|
|
654
650
|
address initialOwner
|
655
651
|
)
|
656
652
|
internal
|
657
|
-
initializer
|
653
|
+
initializer()
|
658
654
|
{
|
659
655
|
__Product_init(
|
660
656
|
registry,
|
@@ -681,5 +677,11 @@ contract FlightProduct is
|
|
681
677
|
}),
|
682
678
|
authorization,
|
683
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;
|
684
686
|
}
|
685
687
|
}
|
@@ -57,9 +57,10 @@ contract FlightProductAuthorization
|
|
57
57
|
|
58
58
|
// authorize public role (additional authz via onlyOwner)
|
59
59
|
functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
|
60
|
-
_authorize(functions, FlightProduct.
|
60
|
+
_authorize(functions, FlightProduct.resendRequest.selector, "resendRequest");
|
61
61
|
_authorize(functions, FlightProduct.processPayoutsAndClosePolicies.selector, "processPayoutsAndClosePolicies");
|
62
|
-
_authorize(functions, FlightProduct.
|
62
|
+
_authorize(functions, FlightProduct.setConstants.selector, "setConstants");
|
63
|
+
_authorize(functions, FlightProduct.setTestMode.selector, "setTestMode");
|
63
64
|
_authorize(functions, FlightProduct.setDefaultBundle.selector, "setDefaultBundle");
|
64
65
|
_authorize(functions, FlightProduct.approveTokenHandler.selector, "approveTokenHandler");
|
65
66
|
_authorize(functions, FlightProduct.setLocked.selector, "setLocked");
|
@@ -0,0 +1,49 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
5
|
+
import {IVersionable} from "../../upgradeability/IVersionable.sol";
|
6
|
+
|
7
|
+
import {NftId} from "../../type/NftId.sol";
|
8
|
+
import {ProxyManager} from "../../upgradeability/ProxyManager.sol";
|
9
|
+
import {FlightProduct} from "./FlightProduct.sol";
|
10
|
+
|
11
|
+
|
12
|
+
contract FlightProductManager is ProxyManager {
|
13
|
+
|
14
|
+
FlightProduct private _flightProduct;
|
15
|
+
bytes32 private _salt = "0x1234";
|
16
|
+
|
17
|
+
/// @dev initializes proxy manager with flight product implementation
|
18
|
+
constructor(
|
19
|
+
address registry,
|
20
|
+
NftId instanceNftId,
|
21
|
+
string memory componentName,
|
22
|
+
IAuthorization authorization
|
23
|
+
)
|
24
|
+
{
|
25
|
+
// FlightProduct prd = new FlightProduct{salt: _salt}();
|
26
|
+
// bytes memory data = abi.encode(
|
27
|
+
// registry,
|
28
|
+
// instanceNftId,
|
29
|
+
// componentName,
|
30
|
+
// authorization);
|
31
|
+
|
32
|
+
// IVersionable versionable = initialize(
|
33
|
+
// registry,
|
34
|
+
// address(prd),
|
35
|
+
// data,
|
36
|
+
// _salt);
|
37
|
+
|
38
|
+
// _flightProduct = FlightProduct(address(versionable));
|
39
|
+
}
|
40
|
+
|
41
|
+
//--- view functions ----------------------------------------------------//
|
42
|
+
function getFlightProduct()
|
43
|
+
external
|
44
|
+
view
|
45
|
+
returns (FlightProduct flightProduct)
|
46
|
+
{
|
47
|
+
return _flightProduct;
|
48
|
+
}
|
49
|
+
}
|
@@ -42,6 +42,8 @@ abstract contract BaseStore is
|
|
42
42
|
metadata.objectType = objectType;
|
43
43
|
metadata.state = initialState;
|
44
44
|
metadata.updatedIn = blocknumber;
|
45
|
+
|
46
|
+
emit LogBaseStoreMetadataCreated(key32, objectType, initialState);
|
45
47
|
}
|
46
48
|
|
47
49
|
function _updateState(
|
@@ -73,6 +75,8 @@ abstract contract BaseStore is
|
|
73
75
|
|
74
76
|
// update metadata
|
75
77
|
metadata.updatedIn = BlocknumberLib.current();
|
78
|
+
|
79
|
+
emit LogBaseStoreMetadataUpdated(key32, oldState, state);
|
76
80
|
}
|
77
81
|
|
78
82
|
function exists(Key32 key32) public view returns (bool) {
|
@@ -17,6 +17,14 @@ interface IBaseStore is ILifecycle {
|
|
17
17
|
error ErrorBaseStoreStateZero(Key32 key);
|
18
18
|
error ErrorBaseStoreNotExisting(Key32 key);
|
19
19
|
|
20
|
+
event LogBaseStoreMetadataCreated(
|
21
|
+
Key32 indexed key,
|
22
|
+
ObjectType indexed objectType,
|
23
|
+
StateId indexed state);
|
24
|
+
event LogBaseStoreMetadataUpdated(
|
25
|
+
Key32 indexed key,
|
26
|
+
StateId indexed oldState,
|
27
|
+
StateId indexed newState);
|
20
28
|
|
21
29
|
struct Metadata {
|
22
30
|
// slot 0
|
@@ -58,6 +58,8 @@ interface IInstanceService is IService {
|
|
58
58
|
|
59
59
|
event LogInstanceServiceInstanceLocked(NftId instanceNftId, bool locked);
|
60
60
|
event LogInstanceServiceInstanceCreated(NftId instanceNftId, address instance);
|
61
|
+
event LogInstanceServiceMasterInstanceRegistered(NftId masterInstanceNftId, address masterInstance, address masterInstanceAdmin, address masterAccessManager,
|
62
|
+
address masterInstanceReader, address masterInstanceBundleSet, address masterInstanceRiskSet, address masterInstanceStore, address masterProductStore);
|
61
63
|
event LogInstanceServiceMasterInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
|
62
64
|
event LogInstanceServiceInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
|
63
65
|
|