@etherisc/gif-next 3.0.0-f9be4a0-294 → 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 +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/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 +372 -73
- 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 +183 -28
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +2 -2
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +545 -445
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +212 -2
- 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 +102 -114
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +93 -34
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +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 +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 +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 +4 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +633 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/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 +6 -25
- package/contracts/authorization/AccessAdminLib.sol +20 -3
- 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 +106 -80
- package/contracts/examples/flight/FlightNft.sol +234 -0
- package/contracts/examples/flight/FlightOracle.sol +68 -9
- package/contracts/examples/flight/FlightOracleAuthorization.sol +28 -5
- package/contracts/examples/flight/FlightPool.sol +1 -1
- package/contracts/examples/flight/FlightProduct.sol +357 -215
- package/contracts/examples/flight/FlightProductAuthorization.sol +36 -10
- package/contracts/examples/flight/FlightProductManager.sol +49 -0
- package/contracts/examples/flight/FlightUSD.sol +3 -1
- package/contracts/instance/BaseStore.sol +4 -0
- package/contracts/instance/IBaseStore.sol +8 -0
- package/contracts/instance/IInstanceService.sol +2 -0
- package/contracts/instance/InstanceAdmin.sol +0 -1
- package/contracts/instance/InstanceReader.sol +16 -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/registry/RegistryAdmin.sol +7 -1
- package/contracts/registry/ReleaseAdmin.sol +8 -1
- package/contracts/shared/ComponentService.sol +5 -0
- package/contracts/shared/IAuthorizedComponent.sol +15 -0
- package/contracts/shared/IComponentService.sol +1 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
- package/contracts/shared/InstanceLinkedComponent.sol +2 -1
- 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,20 +6,19 @@ import {Amount} from "../type/Amount.sol";
|
|
6
6
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
7
7
|
import {IService} from "../shared/IService.sol";
|
8
8
|
import {NftId} from "../type/NftId.sol";
|
9
|
-
import {
|
9
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
10
10
|
|
11
11
|
/// @dev component base class
|
12
12
|
/// component examples are staking, product, distribution, pool and oracle
|
13
13
|
interface IAccountingService is
|
14
14
|
IService
|
15
15
|
{
|
16
|
-
event
|
17
|
-
NftId nftId,
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
Amount newFixedFee
|
16
|
+
event LogAccountingServiceBalanceChanged(
|
17
|
+
NftId indexed nftId,
|
18
|
+
Amount indexed amount,
|
19
|
+
Amount indexed feeAmount,
|
20
|
+
bool increase,
|
21
|
+
ObjectType objectType
|
23
22
|
);
|
24
23
|
|
25
24
|
function decreaseComponentFees(InstanceStore instanceStore, NftId componentNftId, Amount feeAmount) external;
|
@@ -279,10 +279,11 @@ contract AccessAdmin is
|
|
279
279
|
{
|
280
280
|
Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
|
281
281
|
func = _functionInfo[target][selector];
|
282
|
-
roleId =
|
283
|
-
|
284
|
-
|
285
|
-
|
282
|
+
roleId = AccessAdminLib.getFunctionRoleId(_authority, target, selector);
|
283
|
+
// roleId = RoleIdLib.toRoleId(
|
284
|
+
// _authority.getTargetFunctionRole(
|
285
|
+
// target,
|
286
|
+
// selector.toBytes4()));
|
286
287
|
}
|
287
288
|
|
288
289
|
|
@@ -318,7 +319,7 @@ contract AccessAdmin is
|
|
318
319
|
(RoleId roleId, bool exists) = getRoleForName(roleInfo.name.toString());
|
319
320
|
|
320
321
|
if (!exists) {
|
321
|
-
if (!AccessAdminLib.isDynamicRoleId(authzRoleId)) {
|
322
|
+
if (!AccessAdminLib.isDynamicRoleId(authzRoleId) || roleInfo.targetType == TargetType.Custom) {
|
322
323
|
roleId = authzRoleId;
|
323
324
|
}
|
324
325
|
|
@@ -656,24 +657,4 @@ contract AccessAdmin is
|
|
656
657
|
AccessAdminLib.toFunctionGrantingString(this, func.name, roleId),
|
657
658
|
lastUpdateIn);
|
658
659
|
}
|
659
|
-
|
660
|
-
|
661
|
-
function _checkAuthorization(
|
662
|
-
address authorization,
|
663
|
-
ObjectType expectedDomain,
|
664
|
-
VersionPart expectedRelease,
|
665
|
-
bool expectServiceAuthorization,
|
666
|
-
bool checkAlreadyInitialized
|
667
|
-
)
|
668
|
-
internal
|
669
|
-
view
|
670
|
-
{
|
671
|
-
AccessAdminLib.checkAuthorization(
|
672
|
-
address(_authorization),
|
673
|
-
authorization,
|
674
|
-
expectedDomain,
|
675
|
-
expectedRelease,
|
676
|
-
expectServiceAuthorization,
|
677
|
-
checkAlreadyInitialized);
|
678
|
-
}
|
679
660
|
}
|
@@ -7,16 +7,17 @@ import {IAccess} from "./IAccess.sol";
|
|
7
7
|
import {IAccessAdmin} from "./IAccessAdmin.sol";
|
8
8
|
import {IAuthorization} from "./IAuthorization.sol";
|
9
9
|
import {IComponent} from "../shared/IComponent.sol";
|
10
|
-
import {
|
10
|
+
import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
|
11
11
|
import {IRegistry} from "../registry/IRegistry.sol";
|
12
12
|
import {IService} from "../shared/IService.sol";
|
13
13
|
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
14
14
|
|
15
|
+
import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
|
15
16
|
import {BlocknumberLib} from "../type/Blocknumber.sol";
|
16
17
|
import {ContractLib} from "../shared/ContractLib.sol";
|
17
18
|
import {ObjectType} from "../type/ObjectType.sol";
|
18
19
|
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
19
|
-
import {SelectorLib} from "../type/Selector.sol";
|
20
|
+
import {Selector, SelectorLib} from "../type/Selector.sol";
|
20
21
|
import {Str, StrLib} from "../type/String.sol";
|
21
22
|
import {TimestampLib} from "../type/Timestamp.sol";
|
22
23
|
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
@@ -338,7 +339,7 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB
|
|
338
339
|
checkIsRegistered(address(accessAdmin.getRegistry()), componentAddress, expectedType);
|
339
340
|
|
340
341
|
VersionPart expecteRelease = accessAdmin.getRelease();
|
341
|
-
|
342
|
+
IAuthorizedComponent component = IAuthorizedComponent(componentAddress);
|
342
343
|
componentAuthorization = component.getAuthorization();
|
343
344
|
|
344
345
|
checkAuthorization(
|
@@ -481,6 +482,22 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB
|
|
481
482
|
}
|
482
483
|
|
483
484
|
|
485
|
+
function getFunctionRoleId(
|
486
|
+
AccessManagerCloneable authority,
|
487
|
+
address target,
|
488
|
+
Selector selector
|
489
|
+
)
|
490
|
+
public
|
491
|
+
view
|
492
|
+
returns (RoleId functionRoleId)
|
493
|
+
{
|
494
|
+
return RoleIdLib.toRoleId(
|
495
|
+
authority.getTargetFunctionRole(
|
496
|
+
target,
|
497
|
+
selector.toBytes4()));
|
498
|
+
}
|
499
|
+
|
500
|
+
|
484
501
|
function getServiceRoleId(
|
485
502
|
address serviceAddress,
|
486
503
|
IAccess.TargetType serviceTargetType
|
@@ -24,6 +24,8 @@ contract AccessManagerCloneable is
|
|
24
24
|
error ErrorAccessManagerTargetAdminLocked(address target);
|
25
25
|
error ErrorAccessManagerCallerAdminLocked(address caller);
|
26
26
|
|
27
|
+
event LogAccessManagerLocked(address indexed accessManager, bool indexed locked);
|
28
|
+
|
27
29
|
VersionPart private _release;
|
28
30
|
bool private _isLocked;
|
29
31
|
|
@@ -94,6 +96,7 @@ contract AccessManagerCloneable is
|
|
94
96
|
onlyAdminRole()
|
95
97
|
{
|
96
98
|
_isLocked = locked;
|
99
|
+
emit LogAccessManagerLocked(address(this), locked);
|
97
100
|
}
|
98
101
|
|
99
102
|
|
@@ -112,7 +112,7 @@ contract DistributionService is
|
|
112
112
|
|
113
113
|
instance.getInstanceStore().createDistributorType(distributorType, info);
|
114
114
|
|
115
|
-
emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name);
|
115
|
+
emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name, commissionPercentage);
|
116
116
|
}
|
117
117
|
|
118
118
|
|
@@ -236,7 +236,7 @@ contract DistributionService is
|
|
236
236
|
|
237
237
|
instance.getInstanceStore().createReferral(referralId, info);
|
238
238
|
|
239
|
-
emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code);
|
239
|
+
emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code, discountPercentage, maxReferrals, expiryAt);
|
240
240
|
}
|
241
241
|
}
|
242
242
|
|
@@ -295,12 +295,14 @@ contract DistributionService is
|
|
295
295
|
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
296
296
|
distributorInfo.numPoliciesSold += 1;
|
297
297
|
store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
|
298
|
+
emit LogDistributionServiceSaleProcessedWithReferral(distributionNftId, referralInfo.distributorNftId, referralId, distributorInfo.numPoliciesSold, premium.premiumAmount, distributionOwnerFee, commissionAmount);
|
298
299
|
} else {
|
299
300
|
// increase distribution balance by distribution owner fee
|
300
301
|
_accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
302
|
+
emit LogDistributionServiceSaleProcessed(distributionNftId, referralId, premium.premiumAmount, distributionOwnerFee);
|
301
303
|
}
|
302
304
|
|
303
|
-
|
305
|
+
|
304
306
|
}
|
305
307
|
|
306
308
|
/// @inheritdoc IDistributionService
|
@@ -40,12 +40,13 @@ interface IDistributionService is IService {
|
|
40
40
|
error ErrorDistributionServiceReferralDistributionMismatch(ReferralId referralId, NftId referralDistributionNft, NftId distributionNftId);
|
41
41
|
|
42
42
|
event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
|
43
|
-
event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name);
|
43
|
+
event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name, UFixed commissionPercentage);
|
44
44
|
event LogDistributionServiceDistributorCreated(NftId distributionNftId, NftId distributorNftId, DistributorType distributorType, address distributor);
|
45
45
|
event LogDistributionServiceDistributorTypeChanged(NftId distributorNftId, DistributorType oldDistributorType, DistributorType newDistributorType);
|
46
|
-
event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code);
|
46
|
+
event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code, UFixed discountPercentage, uint32 maxReferrals, Timestamp expiryAt);
|
47
47
|
event LogDistributionServiceReferralProcessed(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, uint32 usedReferrals);
|
48
|
-
event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId);
|
48
|
+
event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId, Amount premium, Amount distributionOwnerFee);
|
49
|
+
event LogDistributionServiceSaleProcessedWithReferral(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, uint32 numPoliciesSold, Amount premium, Amount distributionOwnerFee, Amount commissionAmount);
|
49
50
|
|
50
51
|
function createDistributorType(
|
51
52
|
string memory name,
|
@@ -11,6 +11,7 @@ import {InstanceReader} from "../../instance/InstanceReader.sol";
|
|
11
11
|
import {NftId} from "../../type/NftId.sol";
|
12
12
|
import {RequestId} from "../../type/RequestId.sol";
|
13
13
|
import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
|
14
|
+
import {Seconds} from "../../type/Seconds.sol";
|
14
15
|
import {StateId} from "../../type/StateId.sol";
|
15
16
|
import {Str} from "../../type/String.sol";
|
16
17
|
import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
@@ -18,39 +19,30 @@ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
|
18
19
|
|
19
20
|
library FlightLib {
|
20
21
|
|
21
|
-
|
22
|
+
event LogFlightProductErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
|
23
|
+
event LogFlightProductErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
|
24
|
+
|
25
|
+
error ErrorFlightProductRiskInvalid(RiskId riskId);
|
26
|
+
error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
|
27
|
+
error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
|
28
|
+
error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
|
29
|
+
error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
|
30
|
+
error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
|
31
|
+
error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
|
32
|
+
error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
|
33
|
+
error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
|
34
|
+
|
35
|
+
function checkApplicationData(
|
22
36
|
FlightProduct flightProduct,
|
23
37
|
Str flightData,
|
24
38
|
Timestamp departureTime,
|
25
39
|
Timestamp arrivalTime,
|
26
|
-
Amount premiumAmount
|
27
|
-
uint256[6] memory statistics,
|
28
|
-
// signature fields
|
29
|
-
uint8 v,
|
30
|
-
bytes32 r,
|
31
|
-
bytes32 s
|
40
|
+
Amount premiumAmount
|
32
41
|
)
|
33
42
|
public
|
34
43
|
view
|
35
44
|
{
|
36
45
|
_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
46
|
}
|
55
47
|
|
56
48
|
|
@@ -63,62 +55,49 @@ library FlightLib {
|
|
63
55
|
internal
|
64
56
|
view
|
65
57
|
{
|
58
|
+
bool testMode = flightProduct.isTestMode();
|
59
|
+
|
66
60
|
// solhint-disable
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
61
|
+
if (premiumAmount < flightProduct.MIN_PREMIUM()) {
|
62
|
+
revert ErrorFlightProductPremiumAmountTooSmall(premiumAmount, flightProduct.MIN_PREMIUM());
|
63
|
+
}
|
64
|
+
if (premiumAmount > flightProduct.MAX_PREMIUM()) {
|
65
|
+
revert ErrorFlightProductPremiumAmountTooLarge(premiumAmount, flightProduct.MAX_PREMIUM());
|
66
|
+
}
|
67
|
+
if (arrivalTime <= departureTime) {
|
68
|
+
revert ErrorFlightProductArrivalBeforeDepartureTime(departureTime, arrivalTime);
|
69
|
+
}
|
70
|
+
if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
|
71
|
+
revert ErrorFlightProductArrivalAfterMaxFlightDuration(arrivalTime, departureTime, flightProduct.MAX_FLIGHT_DURATION());
|
72
|
+
}
|
73
|
+
|
74
|
+
// test mode allows the creation for policies that are outside restricted policy creation times
|
75
|
+
if (!testMode && departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
|
76
|
+
revert ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MIN_TIME_BEFORE_DEPARTURE());
|
77
|
+
}
|
78
|
+
if (!testMode && departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
|
79
|
+
revert ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MAX_TIME_BEFORE_DEPARTURE());
|
80
|
+
}
|
81
81
|
// solhint-enable
|
82
82
|
}
|
83
83
|
|
84
84
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
// // Validate input parameters
|
98
|
-
// if (premium < flightProduct.MIN_PREMIUM()) { errors = errors | (uint256(1) << 0); }
|
99
|
-
// if (premium > flightProduct.MAX_PREMIUM()) { errors = errors | (uint256(1) << 1); }
|
100
|
-
// if (arrivalTime < departureTime) { errors = errors | (uint256(1) << 2); }
|
101
|
-
// if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) { errors = errors | (uint256(1) << 3); }
|
102
|
-
// if (departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 4); }
|
103
|
-
// if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 5); }
|
104
|
-
|
105
|
-
// (, bool exists, FlightProduct.FlightRisk memory flightRisk) = getFlightRisk(
|
106
|
-
// flightProduct.getInstanceReader(), flightProduct.getNftId(), carrierFlightNumber, departureTime, arrivalTime);
|
107
|
-
|
108
|
-
// if (exists) {
|
109
|
-
// Amount sumInsured = AmountLib.toAmount(premium.toInt() * flightRisk.premiumMultiplier);
|
110
|
-
// if (flightRisk.sumOfSumInsuredAmounts + sumInsured > flightProduct.MAX_TOTAL_PAYOUT()) {
|
111
|
-
// errors = errors | (uint256(1) << 6);
|
112
|
-
// }
|
113
|
-
// }
|
114
|
-
|
115
|
-
// return errors;
|
116
|
-
// }
|
85
|
+
function checkClusterRisk(
|
86
|
+
Amount sumOfSumInsuredAmounts,
|
87
|
+
Amount sumInsuredAmount,
|
88
|
+
Amount maxTotalPayout
|
89
|
+
)
|
90
|
+
public
|
91
|
+
pure
|
92
|
+
{
|
93
|
+
if (sumOfSumInsuredAmounts + sumInsuredAmount > maxTotalPayout) {
|
94
|
+
revert ErrorFlightProductClusterRisk(sumOfSumInsuredAmounts + sumInsuredAmount, maxTotalPayout);
|
95
|
+
}
|
96
|
+
}
|
117
97
|
|
118
98
|
|
119
99
|
/// @dev calculates payout option based on flight status and delay minutes.
|
120
100
|
/// Is not a view function as it emits log evens in case of unexpected status.
|
121
|
-
// TODO decide if reverts instead of log events could work too (and convert the function into a view function)
|
122
101
|
function checkAndGetPayoutOption(
|
123
102
|
RequestId requestId,
|
124
103
|
RiskId riskId,
|
@@ -133,13 +112,13 @@ library FlightLib {
|
|
133
112
|
|
134
113
|
// check status
|
135
114
|
if (status != "L" && status != "A" && status != "C" && status != "D") {
|
136
|
-
emit
|
115
|
+
emit LogFlightProductErrorUnprocessableStatus(requestId, riskId, status);
|
137
116
|
return payoutOption;
|
138
117
|
}
|
139
118
|
|
140
119
|
if (status == "A") {
|
141
120
|
// todo: active, reschedule oracle call + 45 min
|
142
|
-
emit
|
121
|
+
emit LogFlightProductErrorUnexpectedStatus(requestId, riskId, status, delayMinutes);
|
143
122
|
return payoutOption;
|
144
123
|
}
|
145
124
|
|
@@ -161,7 +140,9 @@ library FlightLib {
|
|
161
140
|
returns (uint256 weight)
|
162
141
|
{
|
163
142
|
// check we have enough observations
|
164
|
-
|
143
|
+
if (statistics[0] < flightProduct.MIN_OBSERVATIONS()) {
|
144
|
+
revert ErrorFlightProductNotEnoughObservations(statistics[0], flightProduct.MIN_OBSERVATIONS());
|
145
|
+
}
|
165
146
|
|
166
147
|
weight = 0;
|
167
148
|
for (uint256 i = 1; i < 6; i++) {
|
@@ -192,8 +173,12 @@ library FlightLib {
|
|
192
173
|
Amount sumInsuredAmount // simply the max of payoutAmounts
|
193
174
|
)
|
194
175
|
{
|
195
|
-
|
196
|
-
|
176
|
+
if (premium < flightProduct.MIN_PREMIUM()) {
|
177
|
+
revert ErrorFlightProductPremiumAmountTooSmall(premium, flightProduct.MIN_PREMIUM());
|
178
|
+
}
|
179
|
+
if (premium > flightProduct.MAX_PREMIUM()) {
|
180
|
+
revert ErrorFlightProductPremiumAmountTooLarge(premium, flightProduct.MAX_PREMIUM());
|
181
|
+
}
|
197
182
|
|
198
183
|
sumInsuredAmount = AmountLib.zero();
|
199
184
|
weight = calculateWeight(flightProduct, statistics);
|
@@ -211,13 +196,43 @@ library FlightLib {
|
|
211
196
|
}
|
212
197
|
|
213
198
|
|
199
|
+
function getPayoutOption(
|
200
|
+
InstanceReader reader,
|
201
|
+
NftId productNftId,
|
202
|
+
RiskId riskId
|
203
|
+
)
|
204
|
+
public
|
205
|
+
view
|
206
|
+
returns (
|
207
|
+
bool exists,
|
208
|
+
bool statusAvailable,
|
209
|
+
uint8 payoutOption
|
210
|
+
)
|
211
|
+
{
|
212
|
+
FlightProduct.FlightRisk memory flightRisk;
|
213
|
+
(exists, flightRisk) = getFlightRisk(
|
214
|
+
reader,
|
215
|
+
productNftId,
|
216
|
+
riskId,
|
217
|
+
false);
|
218
|
+
|
219
|
+
statusAvailable = flightRisk.statusUpdatedAt.gtz();
|
220
|
+
payoutOption = flightRisk.payoutOption;
|
221
|
+
}
|
222
|
+
|
223
|
+
|
214
224
|
function getPayoutAmount(
|
215
225
|
bytes memory applicationData,
|
216
226
|
uint8 payoutOption
|
217
227
|
)
|
218
228
|
public
|
229
|
+
pure
|
219
230
|
returns (Amount payoutAmount)
|
220
231
|
{
|
232
|
+
if (payoutOption == type(uint8).max) {
|
233
|
+
return AmountLib.zero();
|
234
|
+
}
|
235
|
+
|
221
236
|
// retrieve payout amounts from application data
|
222
237
|
(, Amount[5] memory payoutAmounts) = abi.decode(
|
223
238
|
applicationData, (Amount, Amount[5]));
|
@@ -232,7 +247,9 @@ library FlightLib {
|
|
232
247
|
NftId productNftId,
|
233
248
|
Str flightData,
|
234
249
|
Timestamp departureTime,
|
235
|
-
|
250
|
+
string memory departureTimeLocal,
|
251
|
+
Timestamp arrivalTime,
|
252
|
+
string memory arrivalTimeLocal
|
236
253
|
)
|
237
254
|
public
|
238
255
|
view
|
@@ -243,17 +260,21 @@ library FlightLib {
|
|
243
260
|
)
|
244
261
|
{
|
245
262
|
riskId = getRiskId(productNftId, flightData);
|
246
|
-
(exists, flightRisk) = getFlightRisk(reader, productNftId, riskId);
|
263
|
+
(exists, flightRisk) = getFlightRisk(reader, productNftId, riskId, false);
|
247
264
|
|
248
265
|
// create new risk if not existing
|
249
266
|
if (!exists) {
|
250
267
|
flightRisk = FlightProduct.FlightRisk({
|
251
268
|
flightData: flightData,
|
252
269
|
departureTime: departureTime,
|
270
|
+
departureTimeLocal: departureTimeLocal,
|
253
271
|
arrivalTime: arrivalTime,
|
272
|
+
arrivalTimeLocal: arrivalTimeLocal,
|
254
273
|
sumOfSumInsuredAmounts: AmountLib.toAmount(0),
|
255
274
|
status: bytes1(0),
|
256
|
-
delayMinutes: 0
|
275
|
+
delayMinutes: 0,
|
276
|
+
payoutOption: uint8(0),
|
277
|
+
statusUpdatedAt: TimestampLib.zero()});
|
257
278
|
}
|
258
279
|
}
|
259
280
|
|
@@ -261,7 +282,8 @@ library FlightLib {
|
|
261
282
|
function getFlightRisk(
|
262
283
|
InstanceReader reader,
|
263
284
|
NftId productNftId,
|
264
|
-
RiskId riskId
|
285
|
+
RiskId riskId,
|
286
|
+
bool requireRiskExists
|
265
287
|
)
|
266
288
|
public
|
267
289
|
view
|
@@ -273,6 +295,10 @@ library FlightLib {
|
|
273
295
|
// check if risk exists
|
274
296
|
exists = reader.isProductRisk(productNftId, riskId);
|
275
297
|
|
298
|
+
if (!exists && requireRiskExists) {
|
299
|
+
revert ErrorFlightProductRiskInvalid(riskId);
|
300
|
+
}
|
301
|
+
|
276
302
|
// get risk data if risk exists
|
277
303
|
if (exists) {
|
278
304
|
flightRisk = abi.decode(
|