@etherisc/gif-next 3.0.0-b45deea-213 → 3.0.0-bd6db59-832
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +2 -2
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +2 -2
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +44 -56
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +2 -2
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +2 -2
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +2 -2
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +2 -2
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2 -2
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +160 -67
- 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 +64 -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 +242 -259
- 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 +4 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +633 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2 -2
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +2 -2
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -2
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +25 -23
- package/contracts/authorization/AccessAdminLib.sol +20 -3
- package/contracts/examples/flight/FlightLib.sol +41 -63
- package/contracts/examples/flight/FlightOracle.sol +4 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +24 -5
- package/contracts/examples/flight/FlightProduct.sol +162 -128
- 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/contracts/shared/IAuthorizedComponent.sol +15 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
- package/contracts/shared/InstanceLinkedComponent.sol +2 -1
- package/package.json +1 -1
@@ -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,41 +86,42 @@ 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"
|
103
99
|
Timestamp departureTime;
|
100
|
+
// this field contains static data required by the frontend and is not directly used by the product
|
101
|
+
string departureTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
104
102
|
Timestamp arrivalTime;
|
103
|
+
// this field contains static data required by the frontend and is not directly used by the product
|
104
|
+
string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
105
105
|
Amount sumOfSumInsuredAmounts;
|
106
106
|
// uint256 premiumMultiplier; // what is this? UFixed?
|
107
107
|
// uint256 weight; // what is this? UFixed?
|
108
108
|
bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
|
109
109
|
int256 delayMinutes;
|
110
|
+
uint8 payoutOption;
|
111
|
+
Timestamp statusUpdatedAt;
|
110
112
|
}
|
111
113
|
|
112
114
|
struct ApplicationData {
|
113
115
|
Str flightData;
|
114
116
|
Timestamp departureTime;
|
117
|
+
string departureTimeLocal;
|
115
118
|
Timestamp arrivalTime;
|
119
|
+
string arrivalTimeLocal;
|
116
120
|
Amount premiumAmount;
|
117
121
|
uint256[6] statistics;
|
118
|
-
uint8 v;
|
119
|
-
bytes32 r;
|
120
|
-
bytes32 s;
|
121
122
|
}
|
122
123
|
|
124
|
+
|
123
125
|
struct PermitData {
|
124
126
|
address owner;
|
125
127
|
address spender;
|
@@ -135,8 +137,7 @@ contract FlightProduct is
|
|
135
137
|
address registry,
|
136
138
|
NftId instanceNftid,
|
137
139
|
string memory componentName,
|
138
|
-
IAuthorization authorization
|
139
|
-
FlightMessageVerifier messageVerifier
|
140
|
+
IAuthorization authorization
|
140
141
|
)
|
141
142
|
{
|
142
143
|
address initialOwner = msg.sender;
|
@@ -147,8 +148,6 @@ contract FlightProduct is
|
|
147
148
|
componentName,
|
148
149
|
authorization,
|
149
150
|
initialOwner);
|
150
|
-
|
151
|
-
_flightMessageVerifier = messageVerifier;
|
152
151
|
}
|
153
152
|
|
154
153
|
//--- external functions ------------------------------------------------//
|
@@ -197,62 +196,37 @@ contract FlightProduct is
|
|
197
196
|
)
|
198
197
|
{
|
199
198
|
// process permit data
|
200
|
-
|
199
|
+
_processPermit(permit);
|
201
200
|
|
202
201
|
// create policy
|
203
202
|
address policyHolder = permit.owner;
|
204
203
|
(
|
205
204
|
riskId,
|
206
205
|
policyNftId
|
207
|
-
) =
|
206
|
+
) = _createPolicy(
|
208
207
|
policyHolder,
|
209
208
|
application.flightData,
|
210
209
|
application.departureTime,
|
210
|
+
application.departureTimeLocal,
|
211
211
|
application.arrivalTime,
|
212
|
+
application.arrivalTimeLocal,
|
212
213
|
application.premiumAmount,
|
213
214
|
application.statistics);
|
214
|
-
// application.v,
|
215
|
-
// application.r,
|
216
|
-
// application.s);
|
217
215
|
}
|
218
216
|
|
219
217
|
|
220
|
-
function
|
221
|
-
PermitData memory permit
|
222
|
-
)
|
223
|
-
public
|
224
|
-
virtual
|
225
|
-
restricted()
|
226
|
-
{
|
227
|
-
address tokenAddress = address(getToken());
|
228
|
-
|
229
|
-
// process permit data
|
230
|
-
ERC20Permit(tokenAddress).permit(
|
231
|
-
permit.owner,
|
232
|
-
permit.spender,
|
233
|
-
permit.value,
|
234
|
-
permit.deadline,
|
235
|
-
permit.v,
|
236
|
-
permit.r,
|
237
|
-
permit.s);
|
238
|
-
}
|
239
|
-
|
240
|
-
|
241
|
-
function createPolicy(
|
218
|
+
function _createPolicy(
|
242
219
|
address policyHolder,
|
243
220
|
Str flightData,
|
244
221
|
Timestamp departureTime,
|
222
|
+
string memory departureTimeLocal,
|
245
223
|
Timestamp arrivalTime,
|
224
|
+
string memory arrivalTimeLocal,
|
246
225
|
Amount premiumAmount,
|
247
226
|
uint256[6] memory statistics
|
248
|
-
// signature fields
|
249
|
-
// uint8 v,
|
250
|
-
// bytes32 r,
|
251
|
-
// bytes32 s
|
252
227
|
)
|
253
|
-
|
228
|
+
internal
|
254
229
|
virtual
|
255
|
-
restricted()
|
256
230
|
returns (
|
257
231
|
RiskId riskId,
|
258
232
|
NftId policyNftId
|
@@ -260,20 +234,20 @@ contract FlightProduct is
|
|
260
234
|
{
|
261
235
|
// checks
|
262
236
|
// disabled for now - using rbac for security
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
// statistics,
|
270
|
-
// v, r, s);
|
237
|
+
FlightLib.checkApplicationData(
|
238
|
+
this,
|
239
|
+
flightData,
|
240
|
+
departureTime,
|
241
|
+
arrivalTime,
|
242
|
+
premiumAmount);
|
271
243
|
|
272
244
|
(riskId, policyNftId) = _prepareApplication(
|
273
245
|
policyHolder,
|
274
246
|
flightData,
|
275
247
|
departureTime,
|
248
|
+
departureTimeLocal,
|
276
249
|
arrivalTime,
|
250
|
+
arrivalTimeLocal,
|
277
251
|
premiumAmount,
|
278
252
|
statistics);
|
279
253
|
|
@@ -301,49 +275,6 @@ contract FlightProduct is
|
|
301
275
|
}
|
302
276
|
|
303
277
|
|
304
|
-
function _prepareApplication(
|
305
|
-
address policyHolder,
|
306
|
-
Str flightData,
|
307
|
-
Timestamp departureTime,
|
308
|
-
Timestamp arrivalTime,
|
309
|
-
Amount premiumAmount,
|
310
|
-
uint256[6] memory statistics
|
311
|
-
)
|
312
|
-
internal
|
313
|
-
virtual
|
314
|
-
returns (
|
315
|
-
RiskId riskId,
|
316
|
-
NftId policyNftId
|
317
|
-
)
|
318
|
-
{
|
319
|
-
Amount[5] memory payoutAmounts;
|
320
|
-
Amount sumInsuredAmount;
|
321
|
-
|
322
|
-
(
|
323
|
-
riskId,
|
324
|
-
payoutAmounts,
|
325
|
-
sumInsuredAmount
|
326
|
-
) = _createRiskAndPayoutAmounts(
|
327
|
-
flightData,
|
328
|
-
departureTime,
|
329
|
-
arrivalTime,
|
330
|
-
premiumAmount,
|
331
|
-
statistics);
|
332
|
-
|
333
|
-
policyNftId = _createApplication(
|
334
|
-
policyHolder,
|
335
|
-
riskId,
|
336
|
-
sumInsuredAmount,
|
337
|
-
premiumAmount,
|
338
|
-
LIFETIME,
|
339
|
-
_defaultBundleNftId,
|
340
|
-
ReferralLib.zero(),
|
341
|
-
abi.encode(
|
342
|
-
premiumAmount,
|
343
|
-
payoutAmounts)); // application data
|
344
|
-
}
|
345
|
-
|
346
|
-
|
347
278
|
/// @dev Callback for flight status oracle.
|
348
279
|
/// Function may only be alled by oracle service.
|
349
280
|
function flightStatusCallback(
|
@@ -387,9 +318,27 @@ contract FlightProduct is
|
|
387
318
|
maxPoliciesToProcess);
|
388
319
|
}
|
389
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
|
+
|
390
338
|
//--- owner functions ---------------------------------------------------//
|
391
339
|
|
392
|
-
/// @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
|
393
342
|
function completeSetup()
|
394
343
|
external
|
395
344
|
virtual
|
@@ -407,6 +356,8 @@ contract FlightProduct is
|
|
407
356
|
|
408
357
|
|
409
358
|
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
359
|
+
function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
|
360
|
+
|
410
361
|
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
411
362
|
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
412
363
|
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
@@ -414,7 +365,6 @@ contract FlightProduct is
|
|
414
365
|
|
415
366
|
//--- view functions ----------------------------------------------------//
|
416
367
|
|
417
|
-
|
418
368
|
function calculateNetPremium(
|
419
369
|
Amount, // sumInsuredAmount: not used in this product
|
420
370
|
RiskId, // riskId: not used in this product
|
@@ -430,31 +380,87 @@ contract FlightProduct is
|
|
430
380
|
}
|
431
381
|
|
432
382
|
|
433
|
-
function
|
434
|
-
|
435
|
-
|
436
|
-
|
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()
|
437
396
|
{
|
438
|
-
|
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);
|
439
408
|
}
|
440
409
|
|
441
410
|
|
442
|
-
function
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
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;
|
449
430
|
|
431
|
+
(
|
432
|
+
riskId,
|
433
|
+
payoutAmounts,
|
434
|
+
sumInsuredAmount
|
435
|
+
) = _createRiskAndPayoutAmounts(
|
436
|
+
flightData,
|
437
|
+
departureTime,
|
438
|
+
departureTimeLocal,
|
439
|
+
arrivalTime,
|
440
|
+
arrivalTimeLocal,
|
441
|
+
premiumAmount,
|
442
|
+
statistics);
|
450
443
|
|
451
|
-
|
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
|
+
}
|
452
456
|
|
453
457
|
|
454
458
|
function _createRiskAndPayoutAmounts(
|
455
459
|
Str flightData,
|
456
460
|
Timestamp departureTime,
|
461
|
+
string memory departureTimeLocal,
|
457
462
|
Timestamp arrivalTime,
|
463
|
+
string memory arrivalTimeLocal,
|
458
464
|
Amount premiumAmount,
|
459
465
|
uint256[6] memory statistics
|
460
466
|
)
|
@@ -480,7 +486,9 @@ contract FlightProduct is
|
|
480
486
|
riskId = _checkAndUpdateFlightRisk(
|
481
487
|
flightData,
|
482
488
|
departureTime,
|
489
|
+
departureTimeLocal,
|
483
490
|
arrivalTime,
|
491
|
+
arrivalTimeLocal,
|
484
492
|
sumInsuredAmount,
|
485
493
|
weight);
|
486
494
|
}
|
@@ -489,7 +497,9 @@ contract FlightProduct is
|
|
489
497
|
function _checkAndUpdateFlightRisk(
|
490
498
|
Str flightData,
|
491
499
|
Timestamp departureTime,
|
500
|
+
string memory departureTimeLocal,
|
492
501
|
Timestamp arrivalTime,
|
502
|
+
string memory arrivalTimeLocal,
|
493
503
|
Amount sumInsuredAmount,
|
494
504
|
uint256 weight
|
495
505
|
)
|
@@ -504,7 +514,9 @@ contract FlightProduct is
|
|
504
514
|
getNftId(),
|
505
515
|
flightData,
|
506
516
|
departureTime,
|
507
|
-
|
517
|
+
departureTimeLocal,
|
518
|
+
arrivalTime,
|
519
|
+
arrivalTimeLocal);
|
508
520
|
|
509
521
|
// create risk, if new
|
510
522
|
if (!exists) {
|
@@ -541,16 +553,25 @@ contract FlightProduct is
|
|
541
553
|
) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
|
542
554
|
|
543
555
|
if (!exists) {
|
556
|
+
// TODO decide to switch from log to error
|
544
557
|
emit LogErrorRiskInvalid(requestId, riskId);
|
545
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?
|
546
571
|
}
|
547
572
|
|
548
|
-
uint8 payoutOption =
|
549
|
-
requestId, riskId, status, delayMinutes);
|
550
|
-
|
551
|
-
_processPayoutsAndClosePolicies(
|
573
|
+
(,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
|
552
574
|
riskId,
|
553
|
-
payoutOption,
|
554
575
|
maxPoliciesToProcess);
|
555
576
|
|
556
577
|
// logging
|
@@ -558,22 +579,32 @@ contract FlightProduct is
|
|
558
579
|
}
|
559
580
|
|
560
581
|
|
561
|
-
// REMARK caller responsible to check that risk exists.
|
562
582
|
function _processPayoutsAndClosePolicies(
|
563
583
|
RiskId riskId,
|
564
|
-
uint8 payoutOption,
|
565
584
|
uint8 maxPoliciesToProcess
|
566
585
|
)
|
567
586
|
internal
|
568
587
|
virtual
|
588
|
+
returns (
|
589
|
+
bool riskExists,
|
590
|
+
bool statusAvailable,
|
591
|
+
uint8 payoutOption
|
592
|
+
)
|
569
593
|
{
|
570
594
|
// determine numbers of policies to process
|
571
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
|
+
|
572
603
|
uint256 policiesToProcess = reader.policiesForRisk(riskId);
|
573
|
-
|
604
|
+
uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
|
574
605
|
|
575
606
|
// go trough policies
|
576
|
-
for (uint256 i = 0; i <
|
607
|
+
for (uint256 i = 0; i < policiesProcessed; i++) {
|
577
608
|
NftId policyNftId = reader.getPolicyForRisk(riskId, i);
|
578
609
|
|
579
610
|
// create payout (if any)
|
@@ -592,6 +623,9 @@ contract FlightProduct is
|
|
592
623
|
_expire(policyNftId, TimestampLib.current());
|
593
624
|
_close(policyNftId);
|
594
625
|
}
|
626
|
+
|
627
|
+
// logging
|
628
|
+
emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
|
595
629
|
}
|
596
630
|
|
597
631
|
|
@@ -622,7 +656,7 @@ contract FlightProduct is
|
|
622
656
|
internal
|
623
657
|
initializer
|
624
658
|
{
|
625
|
-
|
659
|
+
__Product_init(
|
626
660
|
registry,
|
627
661
|
instanceNftId,
|
628
662
|
componentName,
|
@@ -3,19 +3,42 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IAccess} from "../../../contracts/authorization/IAccess.sol";
|
5
5
|
|
6
|
+
import {AccessAdminLib} from "../../authorization/AccessAdminLib.sol";
|
6
7
|
import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
|
7
8
|
import {FlightProduct} from "./FlightProduct.sol";
|
8
9
|
import {ORACLE} from "../../../contracts/type/ObjectType.sol";
|
9
|
-
import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
|
10
|
+
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
|
10
11
|
|
11
12
|
|
12
13
|
contract FlightProductAuthorization
|
13
14
|
is BasicProductAuthorization
|
14
15
|
{
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
uint64 public constant STATISTICS_PROVIDER_ROLE_IDX = 1; // 1st custom role for flight product
|
18
|
+
string public constant STATISTICS_PROVIDER_ROLE_NAME = "StatisticsProviderRole";
|
19
|
+
RoleId public STATISTICS_PROVIDER_ROLE;
|
20
|
+
|
21
|
+
|
22
|
+
constructor(string memory productName)
|
23
|
+
BasicProductAuthorization(productName)
|
24
|
+
{ }
|
25
|
+
|
26
|
+
|
27
|
+
function _setupRoles()
|
28
|
+
internal
|
29
|
+
override
|
30
|
+
{
|
31
|
+
STATISTICS_PROVIDER_ROLE = AccessAdminLib.getCustomRoleId(STATISTICS_PROVIDER_ROLE_IDX);
|
32
|
+
|
33
|
+
_addRole(
|
34
|
+
STATISTICS_PROVIDER_ROLE,
|
35
|
+
AccessAdminLib.roleInfo(
|
36
|
+
ADMIN_ROLE(),
|
37
|
+
TargetType.Custom,
|
38
|
+
1, // max member count special case: instance nft owner is sole role owner
|
39
|
+
STATISTICS_PROVIDER_ROLE_NAME));
|
40
|
+
}
|
41
|
+
|
19
42
|
|
20
43
|
function _setupTargetAuthorizations()
|
21
44
|
internal
|
@@ -28,13 +51,14 @@ contract FlightProductAuthorization
|
|
28
51
|
functions = _authorizeForTarget(getMainTargetName(), getServiceRole(ORACLE()));
|
29
52
|
_authorize(functions, FlightProduct.flightStatusCallback.selector, "flightStatusCallback");
|
30
53
|
|
31
|
-
// authorize
|
32
|
-
functions = _authorizeForTarget(getMainTargetName(),
|
33
|
-
_authorize(functions, FlightProduct.createPolicy.selector, "createPolicy");
|
54
|
+
// authorize statistics provider role
|
55
|
+
functions = _authorizeForTarget(getMainTargetName(), STATISTICS_PROVIDER_ROLE);
|
34
56
|
_authorize(functions, FlightProduct.createPolicyWithPermit.selector, "createPolicyWithPermit");
|
35
57
|
|
36
|
-
//
|
58
|
+
// authorize public role (additional authz via onlyOwner)
|
59
|
+
functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
|
37
60
|
_authorize(functions, FlightProduct.processFlightStatus.selector, "processFlightStatus");
|
61
|
+
_authorize(functions, FlightProduct.processPayoutsAndClosePolicies.selector, "processPayoutsAndClosePolicies");
|
38
62
|
_authorize(functions, FlightProduct.completeSetup.selector, "completeSetup");
|
39
63
|
_authorize(functions, FlightProduct.setDefaultBundle.selector, "setDefaultBundle");
|
40
64
|
_authorize(functions, FlightProduct.approveTokenHandler.selector, "approveTokenHandler");
|
@@ -130,7 +130,6 @@ contract InstanceAdmin is
|
|
130
130
|
_createTarget(target, name, TargetType.Instance, true);
|
131
131
|
}
|
132
132
|
|
133
|
-
|
134
133
|
/// @dev Initializes the authorization for the specified component.
|
135
134
|
/// Important: The component MUST be registered.
|
136
135
|
function initializeComponentAuthorization(
|
@@ -466,6 +466,12 @@ contract InstanceReader {
|
|
466
466
|
}
|
467
467
|
|
468
468
|
|
469
|
+
/// @dev Returns the role ID for the given index.
|
470
|
+
function getRoleForName(string memory name) public view returns (RoleId roleId, bool exists) {
|
471
|
+
return _instanceAdmin.getRoleForName(name);
|
472
|
+
}
|
473
|
+
|
474
|
+
|
469
475
|
/// @dev Returns the role ID for the instance owner role.
|
470
476
|
/// This role may be used as a "root" admin role for other custom roles defined for this instance.
|
471
477
|
function getInstanceOwnerRole() public pure returns (RoleId roleId) {
|
@@ -85,7 +85,13 @@ contract RegistryAdmin is
|
|
85
85
|
registry,
|
86
86
|
release);
|
87
87
|
|
88
|
-
|
88
|
+
AccessAdminLib.checkAuthorization(
|
89
|
+
address(_authorization),
|
90
|
+
authorization,
|
91
|
+
REGISTRY(),
|
92
|
+
release,
|
93
|
+
false, // expectServiceAuthorization
|
94
|
+
false); // checkAlreadyInitialized);
|
89
95
|
|
90
96
|
_registry = registry;
|
91
97
|
_authorization = IAuthorization(authorization);
|
@@ -72,7 +72,14 @@ contract ReleaseAdmin is
|
|
72
72
|
release);
|
73
73
|
|
74
74
|
IServiceAuthorization serviceAuthorization = IServiceAuthorization(authorization);
|
75
|
-
|
75
|
+
AccessAdminLib.checkAuthorization(
|
76
|
+
address(_authorization),
|
77
|
+
address(serviceAuthorization),
|
78
|
+
RELEASE(),
|
79
|
+
release,
|
80
|
+
true, // expectServiceAuthorization
|
81
|
+
true); // checkAlreadyInitialized);
|
82
|
+
|
76
83
|
_serviceAuthorization = serviceAuthorization;
|
77
84
|
|
78
85
|
// link nft ownability to registry
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IComponent} from "../shared/IComponent.sol";
|
5
|
+
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
6
|
+
|
7
|
+
/// @dev component base class
|
8
|
+
/// component examples are product, distribution, pool and oracle
|
9
|
+
interface IAuthorizedComponent is
|
10
|
+
IComponent
|
11
|
+
{
|
12
|
+
/// @dev returns the initial component authorization specification.
|
13
|
+
function getAuthorization() external view returns (IAuthorization authorization);
|
14
|
+
|
15
|
+
}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
-
import {
|
5
|
+
import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
|
6
6
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
7
7
|
import {IInstance} from "../instance/IInstance.sol";
|
8
8
|
import {NftId} from "../type/NftId.sol";
|
@@ -11,7 +11,7 @@ import {ObjectType} from "../type/ObjectType.sol";
|
|
11
11
|
/// @dev component base class
|
12
12
|
/// component examples are product, distribution, pool and oracle
|
13
13
|
interface IInstanceLinkedComponent is
|
14
|
-
|
14
|
+
IAuthorizedComponent
|
15
15
|
{
|
16
16
|
error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
|
17
17
|
error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
|
@@ -24,7 +24,4 @@ interface IInstanceLinkedComponent is
|
|
24
24
|
/// @dev defines the instance to which this component is linked to
|
25
25
|
function getInstance() external view returns (IInstance instance);
|
26
26
|
|
27
|
-
/// @dev returns the initial component authorization specification.
|
28
|
-
function getAuthorization() external view returns (IAuthorization authorization);
|
29
|
-
|
30
27
|
}
|