@etherisc/gif-next 3.0.0-61b9ecf-774 → 3.0.0-65fa82c-553
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/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 +130 -36
- 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 +2 -2
- 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 +165 -256
- 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/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 +58 -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 +2 -2
- 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 +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/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 +18 -1
- package/contracts/examples/flight/FlightLib.sol +36 -62
- package/contracts/examples/flight/FlightOracleAuthorization.sol +24 -5
- package/contracts/examples/flight/FlightProduct.sol +137 -127
- package/contracts/examples/flight/FlightProductAuthorization.sol +32 -8
- package/contracts/instance/InstanceAdmin.sol +0 -1
- package/contracts/instance/InstanceReader.sol +6 -0
- package/contracts/registry/RegistryAdmin.sol +7 -1
- package/contracts/registry/ReleaseAdmin.sol +8 -1
- package/package.json +1 -1
@@ -18,39 +18,17 @@ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
|
18
18
|
|
19
19
|
library FlightLib {
|
20
20
|
|
21
|
-
function
|
21
|
+
function checkApplicationData(
|
22
22
|
FlightProduct flightProduct,
|
23
23
|
Str flightData,
|
24
24
|
Timestamp departureTime,
|
25
25
|
Timestamp arrivalTime,
|
26
|
-
Amount premiumAmount
|
27
|
-
uint256[6] memory statistics
|
28
|
-
// signature fields
|
29
|
-
// uint8 v,
|
30
|
-
// bytes32 r,
|
31
|
-
// bytes32 s
|
26
|
+
Amount premiumAmount
|
32
27
|
)
|
33
28
|
public
|
34
29
|
view
|
35
30
|
{
|
36
31
|
_checkApplicationData(flightProduct, premiumAmount, arrivalTime, departureTime);
|
37
|
-
|
38
|
-
// (
|
39
|
-
// address actualSigner,,
|
40
|
-
// bool success
|
41
|
-
// ) = flightProduct.getFlightMessageVerifier().verifyRatingsHash(
|
42
|
-
// flightData,
|
43
|
-
// departureTime,
|
44
|
-
// arrivalTime,
|
45
|
-
// premiumAmount,
|
46
|
-
// statistics,
|
47
|
-
// v, r, s);
|
48
|
-
|
49
|
-
// if (!success) {
|
50
|
-
// revert FlightProduct.ErrorApplicationDataSignatureMismatch(
|
51
|
-
// flightProduct.getFlightMessageVerifier().getExpectedSigner(),
|
52
|
-
// actualSigner);
|
53
|
-
// }
|
54
32
|
}
|
55
33
|
|
56
34
|
|
@@ -63,6 +41,8 @@ library FlightLib {
|
|
63
41
|
internal
|
64
42
|
view
|
65
43
|
{
|
44
|
+
bool testMode = flightProduct.isTestMode();
|
45
|
+
|
66
46
|
// solhint-disable
|
67
47
|
if (premiumAmount < flightProduct.MIN_PREMIUM()) {
|
68
48
|
revert FlightProduct.ErrorFlightProductPremiumAmountTooSmall(premiumAmount, flightProduct.MIN_PREMIUM());
|
@@ -74,53 +54,20 @@ library FlightLib {
|
|
74
54
|
revert FlightProduct.ErrorFlightProductArrivalBeforeDepartureTime(departureTime, arrivalTime);
|
75
55
|
}
|
76
56
|
|
77
|
-
|
57
|
+
// test mode allows the creation for policies that ore not time constrained
|
58
|
+
if (!testMode && arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
|
78
59
|
revert FlightProduct.ErrorFlightProductArrivalAfterMaxFlightDuration(arrivalTime, departureTime, flightProduct.MAX_FLIGHT_DURATION());
|
79
60
|
}
|
80
|
-
if (departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
|
61
|
+
if (!testMode && departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
|
81
62
|
revert FlightProduct.ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MIN_TIME_BEFORE_DEPARTURE());
|
82
63
|
}
|
83
|
-
if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
|
64
|
+
if (!testMode && departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
|
84
65
|
revert FlightProduct.ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MAX_TIME_BEFORE_DEPARTURE());
|
85
66
|
}
|
86
67
|
// solhint-enable
|
87
68
|
}
|
88
69
|
|
89
70
|
|
90
|
-
// TODO fix or cleanup
|
91
|
-
// function checkApplication(
|
92
|
-
// FlightProduct flightProduct,
|
93
|
-
// Str carrierFlightNumber,
|
94
|
-
// Timestamp departureTime,
|
95
|
-
// Timestamp arrivalTime,
|
96
|
-
// Amount premium
|
97
|
-
// )
|
98
|
-
// external
|
99
|
-
// view
|
100
|
-
// returns (uint256 errors)
|
101
|
-
// {
|
102
|
-
// // Validate input parameters
|
103
|
-
// if (premium < flightProduct.MIN_PREMIUM()) { errors = errors | (uint256(1) << 0); }
|
104
|
-
// if (premium > flightProduct.MAX_PREMIUM()) { errors = errors | (uint256(1) << 1); }
|
105
|
-
// if (arrivalTime < departureTime) { errors = errors | (uint256(1) << 2); }
|
106
|
-
// if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) { errors = errors | (uint256(1) << 3); }
|
107
|
-
// if (departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 4); }
|
108
|
-
// if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 5); }
|
109
|
-
|
110
|
-
// (, bool exists, FlightProduct.FlightRisk memory flightRisk) = getFlightRisk(
|
111
|
-
// flightProduct.getInstanceReader(), flightProduct.getNftId(), carrierFlightNumber, departureTime, arrivalTime);
|
112
|
-
|
113
|
-
// if (exists) {
|
114
|
-
// Amount sumInsured = AmountLib.toAmount(premium.toInt() * flightRisk.premiumMultiplier);
|
115
|
-
// if (flightRisk.sumOfSumInsuredAmounts + sumInsured > flightProduct.MAX_TOTAL_PAYOUT()) {
|
116
|
-
// errors = errors | (uint256(1) << 6);
|
117
|
-
// }
|
118
|
-
// }
|
119
|
-
|
120
|
-
// return errors;
|
121
|
-
// }
|
122
|
-
|
123
|
-
|
124
71
|
/// @dev calculates payout option based on flight status and delay minutes.
|
125
72
|
/// Is not a view function as it emits log evens in case of unexpected status.
|
126
73
|
// TODO decide if reverts instead of log events could work too (and convert the function into a view function)
|
@@ -222,11 +169,36 @@ library FlightLib {
|
|
222
169
|
}
|
223
170
|
|
224
171
|
|
172
|
+
function getPayoutOption(
|
173
|
+
InstanceReader reader,
|
174
|
+
NftId productNftId,
|
175
|
+
RiskId riskId
|
176
|
+
)
|
177
|
+
public
|
178
|
+
view
|
179
|
+
returns (
|
180
|
+
bool exists,
|
181
|
+
bool statusAvailable,
|
182
|
+
uint8 payoutOption
|
183
|
+
)
|
184
|
+
{
|
185
|
+
FlightProduct.FlightRisk memory flightRisk;
|
186
|
+
(exists, flightRisk) = getFlightRisk(
|
187
|
+
reader,
|
188
|
+
productNftId,
|
189
|
+
riskId);
|
190
|
+
|
191
|
+
statusAvailable = flightRisk.statusUpdatedAt.gtz();
|
192
|
+
payoutOption = flightRisk.payoutOption;
|
193
|
+
}
|
194
|
+
|
195
|
+
|
225
196
|
function getPayoutAmount(
|
226
197
|
bytes memory applicationData,
|
227
198
|
uint8 payoutOption
|
228
199
|
)
|
229
200
|
public
|
201
|
+
pure
|
230
202
|
returns (Amount payoutAmount)
|
231
203
|
{
|
232
204
|
// retrieve payout amounts from application data
|
@@ -268,7 +240,9 @@ library FlightLib {
|
|
268
240
|
arrivalTimeLocal: arrivalTimeLocal,
|
269
241
|
sumOfSumInsuredAmounts: AmountLib.toAmount(0),
|
270
242
|
status: bytes1(0),
|
271
|
-
delayMinutes: 0
|
243
|
+
delayMinutes: 0,
|
244
|
+
payoutOption: uint8(0),
|
245
|
+
statusUpdatedAt: TimestampLib.zero()});
|
272
246
|
}
|
273
247
|
}
|
274
248
|
|
@@ -5,17 +5,38 @@ pragma solidity ^0.8.20;
|
|
5
5
|
|
6
6
|
import {IAccess} from "../../../contracts/authorization/IAccess.sol";
|
7
7
|
|
8
|
+
import {AccessAdminLib} from "../../authorization/AccessAdminLib.sol";
|
8
9
|
import {BasicOracleAuthorization} from "../../oracle/BasicOracleAuthorization.sol";
|
9
10
|
import {FlightOracle} from "./FlightOracle.sol";
|
10
|
-
import {
|
11
|
+
import {RoleId, ADMIN_ROLE} from "../../../contracts/type/RoleId.sol";
|
11
12
|
|
12
13
|
contract FlightOracleAuthorization
|
13
14
|
is BasicOracleAuthorization
|
14
15
|
{
|
15
16
|
|
17
|
+
uint64 public constant STATUS_PROVIDER_ROLE_IDX = 2; // 2nd custom role for flight oracle
|
18
|
+
string public constant STATUS_PROVIDER_ROLE_NAME = "StatusProviderRole";
|
19
|
+
RoleId public STATUS_PROVIDER_ROLE;
|
20
|
+
|
16
21
|
constructor(string memory oracleName, string memory commitHash)
|
17
22
|
BasicOracleAuthorization(oracleName, commitHash)
|
18
|
-
{}
|
23
|
+
{ }
|
24
|
+
|
25
|
+
|
26
|
+
function _setupRoles()
|
27
|
+
internal
|
28
|
+
override
|
29
|
+
{
|
30
|
+
STATUS_PROVIDER_ROLE = AccessAdminLib.getCustomRoleId(STATUS_PROVIDER_ROLE_IDX);
|
31
|
+
|
32
|
+
_addRole(
|
33
|
+
STATUS_PROVIDER_ROLE,
|
34
|
+
AccessAdminLib.roleInfo(
|
35
|
+
ADMIN_ROLE(),
|
36
|
+
TargetType.Custom,
|
37
|
+
1, // max member count special case: instance nft owner is sole role owner
|
38
|
+
STATUS_PROVIDER_ROLE_NAME));
|
39
|
+
}
|
19
40
|
|
20
41
|
|
21
42
|
function _setupTargetAuthorizations()
|
@@ -25,9 +46,7 @@ contract FlightOracleAuthorization
|
|
25
46
|
super._setupTargetAuthorizations();
|
26
47
|
IAccess.FunctionInfo[] storage functions;
|
27
48
|
|
28
|
-
|
29
|
-
// authorize public role (also protected by onlyOwner)
|
30
|
-
functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
|
49
|
+
functions = _authorizeForTarget(getMainTargetName(), STATUS_PROVIDER_ROLE);
|
31
50
|
_authorize(functions, FlightOracle.respondWithFlightStatus.selector, "respondWithFlightStatus");
|
32
51
|
}
|
33
52
|
}
|
@@ -8,7 +8,6 @@ import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
|
8
8
|
import {IComponents} from "../../instance/module/IComponents.sol";
|
9
9
|
|
10
10
|
import {Amount, AmountLib} from "../../type/Amount.sol";
|
11
|
-
import {BasicProduct} from "../../product/BasicProduct.sol";
|
12
11
|
import {ClaimId} from "../../type/ClaimId.sol";
|
13
12
|
import {FeeLib} from "../../type/Fee.sol";
|
14
13
|
import {FlightLib} from "./FlightLib.sol";
|
@@ -17,6 +16,7 @@ import {FlightOracle} from "./FlightOracle.sol";
|
|
17
16
|
import {InstanceReader} from "../../instance/InstanceReader.sol";
|
18
17
|
import {NftId, NftIdLib} from "../../type/NftId.sol";
|
19
18
|
import {PayoutId} from "../../type/PayoutId.sol";
|
19
|
+
import {Product} from "../../product/Product.sol";
|
20
20
|
import {ReferralLib} from "../../type/Referral.sol";
|
21
21
|
import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
|
22
22
|
import {RequestId} from "../../type/RequestId.sol";
|
@@ -27,16 +27,17 @@ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
|
27
27
|
|
28
28
|
/// @dev FlightProduct implements the flight delay product.
|
29
29
|
contract FlightProduct is
|
30
|
-
|
30
|
+
Product
|
31
31
|
{
|
32
32
|
|
33
33
|
event LogRequestFlightRatings(uint256 requestId, bytes32 carrierFlightNumber, uint256 departureTime, uint256 arrivalTime, bytes32 riskId);
|
34
34
|
event LogRequestFlightStatus(uint256 requestId, uint256 arrivalTime, bytes32 carrierFlightNumber, bytes32 departureYearMonthDay);
|
35
35
|
event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
|
36
36
|
event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
|
37
|
+
event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
|
37
38
|
|
38
39
|
// TODO convert error logs to custom errors
|
39
|
-
event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
|
40
|
+
// event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
|
40
41
|
event LogPolicyExpired(bytes32 bpKey);
|
41
42
|
|
42
43
|
event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
|
@@ -85,18 +86,13 @@ contract FlightProduct is
|
|
85
86
|
uint8[6] public WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
|
86
87
|
uint8 public constant MAX_WEIGHT = 50;
|
87
88
|
|
89
|
+
bool internal _testMode;
|
90
|
+
|
88
91
|
// GIF V3 specifics
|
89
92
|
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)
|
93
|
+
NftId internal _oracleNftId;
|
96
94
|
// solhint-enable
|
97
95
|
|
98
|
-
FlightMessageVerifier internal _flightMessageVerifier;
|
99
|
-
|
100
96
|
|
101
97
|
struct FlightRisk {
|
102
98
|
Str flightData; // example: "LX 180 ZRH BKK 20241104"
|
@@ -111,6 +107,8 @@ contract FlightProduct is
|
|
111
107
|
// uint256 weight; // what is this? UFixed?
|
112
108
|
bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
|
113
109
|
int256 delayMinutes;
|
110
|
+
uint8 payoutOption;
|
111
|
+
Timestamp statusUpdatedAt;
|
114
112
|
}
|
115
113
|
|
116
114
|
struct ApplicationData {
|
@@ -123,6 +121,7 @@ contract FlightProduct is
|
|
123
121
|
uint256[6] statistics;
|
124
122
|
}
|
125
123
|
|
124
|
+
|
126
125
|
struct PermitData {
|
127
126
|
address owner;
|
128
127
|
address spender;
|
@@ -138,8 +137,7 @@ contract FlightProduct is
|
|
138
137
|
address registry,
|
139
138
|
NftId instanceNftid,
|
140
139
|
string memory componentName,
|
141
|
-
IAuthorization authorization
|
142
|
-
FlightMessageVerifier messageVerifier
|
140
|
+
IAuthorization authorization
|
143
141
|
)
|
144
142
|
{
|
145
143
|
address initialOwner = msg.sender;
|
@@ -150,8 +148,6 @@ contract FlightProduct is
|
|
150
148
|
componentName,
|
151
149
|
authorization,
|
152
150
|
initialOwner);
|
153
|
-
|
154
|
-
_flightMessageVerifier = messageVerifier;
|
155
151
|
}
|
156
152
|
|
157
153
|
//--- external functions ------------------------------------------------//
|
@@ -200,14 +196,14 @@ contract FlightProduct is
|
|
200
196
|
)
|
201
197
|
{
|
202
198
|
// process permit data
|
203
|
-
|
199
|
+
_processPermit(permit);
|
204
200
|
|
205
201
|
// create policy
|
206
202
|
address policyHolder = permit.owner;
|
207
203
|
(
|
208
204
|
riskId,
|
209
205
|
policyNftId
|
210
|
-
) =
|
206
|
+
) = _createPolicy(
|
211
207
|
policyHolder,
|
212
208
|
application.flightData,
|
213
209
|
application.departureTime,
|
@@ -216,34 +212,10 @@ contract FlightProduct is
|
|
216
212
|
application.arrivalTimeLocal,
|
217
213
|
application.premiumAmount,
|
218
214
|
application.statistics);
|
219
|
-
// application.v,
|
220
|
-
// application.r,
|
221
|
-
// application.s);
|
222
|
-
}
|
223
|
-
|
224
|
-
|
225
|
-
function processPermit(
|
226
|
-
PermitData memory permit
|
227
|
-
)
|
228
|
-
public
|
229
|
-
virtual
|
230
|
-
restricted()
|
231
|
-
{
|
232
|
-
address tokenAddress = address(getToken());
|
233
|
-
|
234
|
-
// process permit data
|
235
|
-
ERC20Permit(tokenAddress).permit(
|
236
|
-
permit.owner,
|
237
|
-
permit.spender,
|
238
|
-
permit.value,
|
239
|
-
permit.deadline,
|
240
|
-
permit.v,
|
241
|
-
permit.r,
|
242
|
-
permit.s);
|
243
215
|
}
|
244
216
|
|
245
217
|
|
246
|
-
function
|
218
|
+
function _createPolicy(
|
247
219
|
address policyHolder,
|
248
220
|
Str flightData,
|
249
221
|
Timestamp departureTime,
|
@@ -252,14 +224,9 @@ contract FlightProduct is
|
|
252
224
|
string memory arrivalTimeLocal,
|
253
225
|
Amount premiumAmount,
|
254
226
|
uint256[6] memory statistics
|
255
|
-
// signature fields
|
256
|
-
// uint8 v,
|
257
|
-
// bytes32 r,
|
258
|
-
// bytes32 s
|
259
227
|
)
|
260
|
-
|
228
|
+
internal
|
261
229
|
virtual
|
262
|
-
restricted()
|
263
230
|
returns (
|
264
231
|
RiskId riskId,
|
265
232
|
NftId policyNftId
|
@@ -267,14 +234,12 @@ contract FlightProduct is
|
|
267
234
|
{
|
268
235
|
// checks
|
269
236
|
// disabled for now - using rbac for security
|
270
|
-
FlightLib.
|
237
|
+
FlightLib.checkApplicationData(
|
271
238
|
this,
|
272
239
|
flightData,
|
273
240
|
departureTime,
|
274
241
|
arrivalTime,
|
275
|
-
premiumAmount
|
276
|
-
statistics);
|
277
|
-
// v, r, s);
|
242
|
+
premiumAmount);
|
278
243
|
|
279
244
|
(riskId, policyNftId) = _prepareApplication(
|
280
245
|
policyHolder,
|
@@ -310,53 +275,6 @@ contract FlightProduct is
|
|
310
275
|
}
|
311
276
|
|
312
277
|
|
313
|
-
function _prepareApplication(
|
314
|
-
address policyHolder,
|
315
|
-
Str flightData,
|
316
|
-
Timestamp departureTime,
|
317
|
-
string memory departureTimeLocal,
|
318
|
-
Timestamp arrivalTime,
|
319
|
-
string memory arrivalTimeLocal,
|
320
|
-
Amount premiumAmount,
|
321
|
-
uint256[6] memory statistics
|
322
|
-
)
|
323
|
-
internal
|
324
|
-
virtual
|
325
|
-
returns (
|
326
|
-
RiskId riskId,
|
327
|
-
NftId policyNftId
|
328
|
-
)
|
329
|
-
{
|
330
|
-
Amount[5] memory payoutAmounts;
|
331
|
-
Amount sumInsuredAmount;
|
332
|
-
|
333
|
-
(
|
334
|
-
riskId,
|
335
|
-
payoutAmounts,
|
336
|
-
sumInsuredAmount
|
337
|
-
) = _createRiskAndPayoutAmounts(
|
338
|
-
flightData,
|
339
|
-
departureTime,
|
340
|
-
departureTimeLocal,
|
341
|
-
arrivalTime,
|
342
|
-
arrivalTimeLocal,
|
343
|
-
premiumAmount,
|
344
|
-
statistics);
|
345
|
-
|
346
|
-
policyNftId = _createApplication(
|
347
|
-
policyHolder,
|
348
|
-
riskId,
|
349
|
-
sumInsuredAmount,
|
350
|
-
premiumAmount,
|
351
|
-
LIFETIME,
|
352
|
-
_defaultBundleNftId,
|
353
|
-
ReferralLib.zero(),
|
354
|
-
abi.encode(
|
355
|
-
premiumAmount,
|
356
|
-
payoutAmounts)); // application data
|
357
|
-
}
|
358
|
-
|
359
|
-
|
360
278
|
/// @dev Callback for flight status oracle.
|
361
279
|
/// Function may only be alled by oracle service.
|
362
280
|
function flightStatusCallback(
|
@@ -400,9 +318,27 @@ contract FlightProduct is
|
|
400
318
|
maxPoliciesToProcess);
|
401
319
|
}
|
402
320
|
|
321
|
+
|
322
|
+
/// @dev Manual fallback function for product owner.
|
323
|
+
function processPayoutsAndClosePolicies(
|
324
|
+
RiskId riskId,
|
325
|
+
uint8 maxPoliciesToProcess
|
326
|
+
)
|
327
|
+
external
|
328
|
+
virtual
|
329
|
+
restricted()
|
330
|
+
onlyOwner()
|
331
|
+
{
|
332
|
+
_processPayoutsAndClosePolicies(
|
333
|
+
riskId,
|
334
|
+
maxPoliciesToProcess);
|
335
|
+
}
|
336
|
+
|
337
|
+
|
403
338
|
//--- owner functions ---------------------------------------------------//
|
404
339
|
|
405
|
-
/// @dev Call after product registration with the instance
|
340
|
+
/// @dev Call after product registration with the instance
|
341
|
+
/// when the product token/tokenhandler is available
|
406
342
|
function completeSetup()
|
407
343
|
external
|
408
344
|
virtual
|
@@ -420,6 +356,8 @@ contract FlightProduct is
|
|
420
356
|
|
421
357
|
|
422
358
|
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
359
|
+
function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
|
360
|
+
|
423
361
|
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
424
362
|
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
425
363
|
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
@@ -427,7 +365,6 @@ contract FlightProduct is
|
|
427
365
|
|
428
366
|
//--- view functions ----------------------------------------------------//
|
429
367
|
|
430
|
-
|
431
368
|
function calculateNetPremium(
|
432
369
|
Amount, // sumInsuredAmount: not used in this product
|
433
370
|
RiskId, // riskId: not used in this product
|
@@ -443,28 +380,79 @@ contract FlightProduct is
|
|
443
380
|
}
|
444
381
|
|
445
382
|
|
446
|
-
function
|
447
|
-
|
448
|
-
|
449
|
-
|
383
|
+
function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
|
384
|
+
function isTestMode() public view returns (bool) { return _testMode; }
|
385
|
+
function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
|
386
|
+
|
387
|
+
//--- internal functions ------------------------------------------------//
|
388
|
+
|
389
|
+
|
390
|
+
function _processPermit(
|
391
|
+
PermitData memory permit
|
392
|
+
)
|
393
|
+
internal
|
394
|
+
virtual
|
395
|
+
restricted()
|
450
396
|
{
|
451
|
-
|
397
|
+
address tokenAddress = address(getToken());
|
398
|
+
|
399
|
+
// process permit data
|
400
|
+
ERC20Permit(tokenAddress).permit(
|
401
|
+
permit.owner,
|
402
|
+
permit.spender,
|
403
|
+
permit.value,
|
404
|
+
permit.deadline,
|
405
|
+
permit.v,
|
406
|
+
permit.r,
|
407
|
+
permit.s);
|
452
408
|
}
|
453
409
|
|
454
410
|
|
455
|
-
function
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
411
|
+
function _prepareApplication(
|
412
|
+
address policyHolder,
|
413
|
+
Str flightData,
|
414
|
+
Timestamp departureTime,
|
415
|
+
string memory departureTimeLocal,
|
416
|
+
Timestamp arrivalTime,
|
417
|
+
string memory arrivalTimeLocal,
|
418
|
+
Amount premiumAmount,
|
419
|
+
uint256[6] memory statistics
|
420
|
+
)
|
421
|
+
internal
|
422
|
+
virtual
|
423
|
+
returns (
|
424
|
+
RiskId riskId,
|
425
|
+
NftId policyNftId
|
426
|
+
)
|
427
|
+
{
|
428
|
+
Amount[5] memory payoutAmounts;
|
429
|
+
Amount sumInsuredAmount;
|
462
430
|
|
463
|
-
|
464
|
-
|
465
|
-
|
431
|
+
(
|
432
|
+
riskId,
|
433
|
+
payoutAmounts,
|
434
|
+
sumInsuredAmount
|
435
|
+
) = _createRiskAndPayoutAmounts(
|
436
|
+
flightData,
|
437
|
+
departureTime,
|
438
|
+
departureTimeLocal,
|
439
|
+
arrivalTime,
|
440
|
+
arrivalTimeLocal,
|
441
|
+
premiumAmount,
|
442
|
+
statistics);
|
466
443
|
|
467
|
-
|
444
|
+
policyNftId = _createApplication(
|
445
|
+
policyHolder,
|
446
|
+
riskId,
|
447
|
+
sumInsuredAmount,
|
448
|
+
premiumAmount,
|
449
|
+
LIFETIME,
|
450
|
+
_defaultBundleNftId,
|
451
|
+
ReferralLib.zero(),
|
452
|
+
abi.encode(
|
453
|
+
premiumAmount,
|
454
|
+
payoutAmounts)); // application data
|
455
|
+
}
|
468
456
|
|
469
457
|
|
470
458
|
function _createRiskAndPayoutAmounts(
|
@@ -565,16 +553,25 @@ contract FlightProduct is
|
|
565
553
|
) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
|
566
554
|
|
567
555
|
if (!exists) {
|
556
|
+
// TODO decide to switch from log to error
|
568
557
|
emit LogErrorRiskInvalid(requestId, riskId);
|
569
558
|
return;
|
559
|
+
} else {
|
560
|
+
// update status, if not yet set
|
561
|
+
if (flightRisk.statusUpdatedAt.eqz()) {
|
562
|
+
flightRisk.status = status;
|
563
|
+
flightRisk.delayMinutes = delayMinutes;
|
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?
|
570
571
|
}
|
571
572
|
|
572
|
-
uint8 payoutOption =
|
573
|
-
requestId, riskId, status, delayMinutes);
|
574
|
-
|
575
|
-
_processPayoutsAndClosePolicies(
|
573
|
+
(,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
|
576
574
|
riskId,
|
577
|
-
payoutOption,
|
578
575
|
maxPoliciesToProcess);
|
579
576
|
|
580
577
|
// logging
|
@@ -582,22 +579,32 @@ contract FlightProduct is
|
|
582
579
|
}
|
583
580
|
|
584
581
|
|
585
|
-
// REMARK caller responsible to check that risk exists.
|
586
582
|
function _processPayoutsAndClosePolicies(
|
587
583
|
RiskId riskId,
|
588
|
-
uint8 payoutOption,
|
589
584
|
uint8 maxPoliciesToProcess
|
590
585
|
)
|
591
586
|
internal
|
592
587
|
virtual
|
588
|
+
returns (
|
589
|
+
bool riskExists,
|
590
|
+
bool statusAvailable,
|
591
|
+
uint8 payoutOption
|
592
|
+
)
|
593
593
|
{
|
594
594
|
// determine numbers of policies to process
|
595
595
|
InstanceReader reader = _getInstanceReader();
|
596
|
+
(riskExists, statusAvailable, payoutOption) = FlightLib.getPayoutOption(reader, getNftId(), riskId);
|
597
|
+
|
598
|
+
// return with default values if risk does not exist or status is not yet available
|
599
|
+
if (!riskExists || !statusAvailable) {
|
600
|
+
return (riskExists, statusAvailable, payoutOption);
|
601
|
+
}
|
602
|
+
|
596
603
|
uint256 policiesToProcess = reader.policiesForRisk(riskId);
|
597
|
-
|
604
|
+
uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
|
598
605
|
|
599
606
|
// go trough policies
|
600
|
-
for (uint256 i = 0; i <
|
607
|
+
for (uint256 i = 0; i < policiesProcessed; i++) {
|
601
608
|
NftId policyNftId = reader.getPolicyForRisk(riskId, i);
|
602
609
|
|
603
610
|
// create payout (if any)
|
@@ -616,6 +623,9 @@ contract FlightProduct is
|
|
616
623
|
_expire(policyNftId, TimestampLib.current());
|
617
624
|
_close(policyNftId);
|
618
625
|
}
|
626
|
+
|
627
|
+
// logging
|
628
|
+
emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
|
619
629
|
}
|
620
630
|
|
621
631
|
|
@@ -646,7 +656,7 @@ contract FlightProduct is
|
|
646
656
|
internal
|
647
657
|
initializer
|
648
658
|
{
|
649
|
-
|
659
|
+
__Product_init(
|
650
660
|
registry,
|
651
661
|
instanceNftId,
|
652
662
|
componentName,
|