@etherisc/gif-next 0.0.2-ffa91a6-022 → 3.0.0-06d5e8b-738
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 +124 -332
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +370 -141
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1582 -202
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +266 -64
- 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/IAccessAdmin.sol/IAccessAdmin.json +263 -87
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +102 -19
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +63 -38
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +269 -69
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -12
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +376 -147
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +160 -78
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -11
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +232 -19
- 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 +108 -79
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +268 -68
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +136 -95
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +268 -68
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +728 -0
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +229 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1234 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +896 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2497 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +891 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +586 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +86 -45
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +268 -68
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +35 -26
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -105
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +268 -68
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +333 -147
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +268 -68
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- 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 +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +374 -35
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +305 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +425 -97
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +753 -401
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +236 -80
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +747 -553
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +331 -31
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -42
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1323 -2012
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- 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/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
- 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 +25 -16
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +282 -65
- 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/IOracleComponent.sol/IOracleComponent.json +19 -10
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -10
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +83 -38
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -58
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +268 -68
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +300 -123
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +186 -33
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -20
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +238 -19
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -20
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +100 -34
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +338 -79
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +216 -59
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +113 -43
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -37
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +268 -68
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -31
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +511 -21
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +93 -112
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +115 -65
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +40 -31
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -43
- 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/IRegistry.sol/IRegistry.json +33 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- 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 +71 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +539 -314
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +335 -76
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +41 -12
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +551 -246
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +169 -111
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -10
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +196 -201
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -64
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +76 -41
- 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/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/{ComponentVerifyingService.sol/ComponentVerifyingService.json → IAuthorizedComponent.sol/IAuthorizedComponent.json} +238 -90
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -10
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +111 -132
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -10
- 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/INftOwnable.sol/INftOwnable.json +19 -0
- 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/IRegisterable.sol/IRegisterable.json +19 -0
- 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/IService.sol/IService.json +29 -0
- 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/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -10
- 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/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1390 -134
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +97 -117
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1479 -192
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +77 -76
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -64
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +296 -152
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +131 -167
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -46
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1615 -815
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +153 -91
- 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/Amount.sol/AmountLib.json +10 -10
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +22 -25
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
- 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/String.sol/StrLib.json +69 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
- 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/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +15 -3
- package/contracts/accounting/IAccountingService.sol +4 -2
- package/contracts/authorization/AccessAdmin.sol +303 -326
- package/contracts/authorization/AccessAdminLib.sol +535 -23
- package/contracts/authorization/AccessManagerCloneable.sol +0 -18
- package/contracts/authorization/Authorization.sol +64 -239
- package/contracts/authorization/IAccess.sol +29 -12
- package/contracts/authorization/IAccessAdmin.sol +25 -53
- package/contracts/authorization/IAuthorization.sol +3 -57
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +3 -4
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +9 -8
- package/contracts/distribution/DistributionService.sol +125 -62
- package/contracts/distribution/IDistributionComponent.sol +3 -1
- package/contracts/distribution/IDistributionService.sol +20 -8
- package/contracts/examples/fire/FireProduct.sol +6 -6
- package/contracts/examples/flight/FlightLib.sol +300 -0
- package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
- package/contracts/examples/flight/FlightOracle.sol +171 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +53 -0
- package/contracts/examples/flight/FlightPool.sol +89 -0
- package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
- package/contracts/examples/flight/FlightProduct.sol +685 -0
- package/contracts/examples/flight/FlightProductAuthorization.sol +69 -0
- package/contracts/examples/flight/FlightUSD.sol +28 -0
- package/contracts/examples/flight/originalV1.sol +396 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +57 -6
- package/contracts/instance/IInstanceService.sol +42 -7
- package/contracts/instance/Instance.sol +111 -56
- package/contracts/instance/InstanceAdmin.sol +150 -294
- package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
- package/contracts/instance/InstanceReader.sol +376 -392
- package/contracts/instance/InstanceService.sol +186 -134
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +15 -5
- package/contracts/instance/module/IDistribution.sol +17 -7
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +2 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +12 -12
- package/contracts/oracle/Oracle.sol +4 -6
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -16
- package/contracts/pool/BasicPoolAuthorization.sol +10 -5
- package/contracts/pool/BundleService.sol +34 -43
- package/contracts/pool/IBundleService.sol +14 -13
- package/contracts/pool/IPoolService.sol +7 -2
- package/contracts/pool/Pool.sol +6 -18
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +40 -181
- package/contracts/product/ApplicationService.sol +64 -11
- package/contracts/product/BasicProduct.sol +2 -3
- package/contracts/product/BasicProductAuthorization.sol +13 -5
- package/contracts/product/ClaimService.sol +99 -105
- package/contracts/product/IApplicationService.sol +21 -2
- package/contracts/product/IClaimService.sol +5 -4
- package/contracts/product/IPolicyService.sol +9 -2
- package/contracts/product/IRiskService.sol +18 -3
- package/contracts/product/PolicyService.sol +40 -59
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +28 -31
- package/contracts/product/Product.sol +40 -16
- package/contracts/product/RiskService.sol +50 -15
- package/contracts/registry/IRegistry.sol +15 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +15 -9
- package/contracts/registry/RegistryAdmin.sol +39 -118
- package/contracts/registry/RegistryAuthorization.sol +139 -69
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +59 -106
- package/contracts/registry/ReleaseRegistry.sol +20 -12
- package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +8 -8
- package/contracts/shared/ComponentService.sol +245 -262
- package/contracts/shared/ContractLib.sol +106 -75
- package/contracts/shared/EcdsaChecker.sol +5 -0
- package/contracts/shared/IAuthorizedComponent.sol +15 -0
- package/contracts/shared/IComponent.sol +1 -1
- package/contracts/shared/IComponentService.sol +14 -15
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InstanceLinkedComponent.sol +64 -26
- package/contracts/shared/NftOwnable.sol +3 -1
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Service.sol +6 -4
- package/contracts/staking/IStaking.sol +261 -70
- package/contracts/staking/IStakingService.sol +39 -84
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +468 -217
- package/contracts/staking/StakingLib.sol +38 -124
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +62 -71
- package/contracts/staking/StakingService.sol +42 -185
- package/contracts/staking/StakingServiceManager.sol +1 -0
- package/contracts/staking/StakingStore.sol +1093 -331
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +17 -33
- package/contracts/type/Referral.sol +6 -0
- package/contracts/type/RequestIdSet.sol +62 -0
- package/contracts/type/RoleId.sol +57 -59
- package/contracts/type/Seconds.sol +23 -0
- package/contracts/type/String.sol +42 -0
- package/contracts/type/Timestamp.sol +14 -3
- package/contracts/type/UFixed.sol +28 -10
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +2 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -0,0 +1,69 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IAccess} from "../../../contracts/authorization/IAccess.sol";
|
5
|
+
|
6
|
+
import {AccessAdminLib} from "../../authorization/AccessAdminLib.sol";
|
7
|
+
import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
|
8
|
+
import {FlightProduct} from "./FlightProduct.sol";
|
9
|
+
import {ORACLE} from "../../../contracts/type/ObjectType.sol";
|
10
|
+
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
|
11
|
+
|
12
|
+
|
13
|
+
contract FlightProductAuthorization
|
14
|
+
is BasicProductAuthorization
|
15
|
+
{
|
16
|
+
|
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
|
+
|
42
|
+
|
43
|
+
function _setupTargetAuthorizations()
|
44
|
+
internal
|
45
|
+
virtual override
|
46
|
+
{
|
47
|
+
super._setupTargetAuthorizations();
|
48
|
+
IAccess.FunctionInfo[] storage functions;
|
49
|
+
|
50
|
+
// authorize oracle service
|
51
|
+
functions = _authorizeForTarget(getMainTargetName(), getServiceRole(ORACLE()));
|
52
|
+
_authorize(functions, FlightProduct.flightStatusCallback.selector, "flightStatusCallback");
|
53
|
+
|
54
|
+
// authorize statistics provider role
|
55
|
+
functions = _authorizeForTarget(getMainTargetName(), STATISTICS_PROVIDER_ROLE);
|
56
|
+
_authorize(functions, FlightProduct.createPolicyWithPermit.selector, "createPolicyWithPermit");
|
57
|
+
|
58
|
+
// authorize public role (additional authz via onlyOwner)
|
59
|
+
functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
|
60
|
+
_authorize(functions, FlightProduct.processFlightStatus.selector, "processFlightStatus");
|
61
|
+
_authorize(functions, FlightProduct.processPayoutsAndClosePolicies.selector, "processPayoutsAndClosePolicies");
|
62
|
+
_authorize(functions, FlightProduct.completeSetup.selector, "completeSetup");
|
63
|
+
_authorize(functions, FlightProduct.setDefaultBundle.selector, "setDefaultBundle");
|
64
|
+
_authorize(functions, FlightProduct.approveTokenHandler.selector, "approveTokenHandler");
|
65
|
+
_authorize(functions, FlightProduct.setLocked.selector, "setLocked");
|
66
|
+
_authorize(functions, FlightProduct.setWallet.selector, "setWallet");
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
5
|
+
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
|
6
|
+
|
7
|
+
/// @dev FireUSD is a stablecoin with 6 decimals and an initial supply of 1 Billion tokens.
|
8
|
+
contract FlightUSD is ERC20Permit {
|
9
|
+
|
10
|
+
string public constant NAME = "FlightUSD";
|
11
|
+
string public constant SYMBOL = "FLTD";
|
12
|
+
uint8 public constant DECIMALS = 6;
|
13
|
+
uint256 public constant INITIAL_SUPPLY = 10**12 * 10**DECIMALS; // 1'000'000'000'000
|
14
|
+
|
15
|
+
constructor()
|
16
|
+
ERC20Permit(NAME)
|
17
|
+
ERC20(NAME, SYMBOL)
|
18
|
+
{
|
19
|
+
_mint(
|
20
|
+
_msgSender(),
|
21
|
+
INITIAL_SUPPLY
|
22
|
+
);
|
23
|
+
}
|
24
|
+
|
25
|
+
function decimals() public pure override returns(uint8) {
|
26
|
+
return DECIMALS;
|
27
|
+
}
|
28
|
+
}
|
@@ -0,0 +1,396 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
// pragma solidity ^0.8.20;
|
3
|
+
pragma solidity ^0.8.20;
|
4
|
+
|
5
|
+
// import "@etherisc/gif-interface/contracts/0.7/Product.sol";
|
6
|
+
|
7
|
+
// contract FlightDelayChainlink is Product {
|
8
|
+
contract FlightDelayChainlink {
|
9
|
+
|
10
|
+
bytes32 public constant NAME = "FlightDelayChainlink";
|
11
|
+
bytes32 public constant VERSION = "0.1.6";
|
12
|
+
|
13
|
+
event LogRequestFlightRatings(uint256 requestId, bytes32 carrierFlightNumber, uint256 departureTime, uint256 arrivalTime, bytes32 riskId);
|
14
|
+
event LogRequestFlightStatus(uint256 requestId, uint256 arrivalTime, bytes32 carrierFlightNumber, bytes32 departureYearMonthDay);
|
15
|
+
event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
|
16
|
+
event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
|
17
|
+
event LogUnprocessableStatus(bytes32 bpKey, uint256 requestId);
|
18
|
+
event LogPolicyExpired(bytes32 bpKey);
|
19
|
+
event LogRequestPayment(bytes32 bpKey, uint256 requestId);
|
20
|
+
event LogUnexpectedStatus(bytes32 bpKey, uint256 requestId, bytes1 status, int256 delay, address customer);
|
21
|
+
|
22
|
+
event LogCallback(bytes32 _bytes, bytes _data);
|
23
|
+
|
24
|
+
|
25
|
+
bytes32 public constant POLICY_FLOW = "PolicyFlowDefault";
|
26
|
+
|
27
|
+
// Minimum observations for valid prediction
|
28
|
+
uint256 public constant MIN_OBSERVATIONS = 10;
|
29
|
+
// Minimum time before departure for applying
|
30
|
+
uint256 public constant MIN_TIME_BEFORE_DEPARTURE = 14 * 24 hours;
|
31
|
+
// Maximum time before departure for applying
|
32
|
+
uint256 public constant MAX_TIME_BEFORE_DEPARTURE = 90 * 24 hours;
|
33
|
+
// Maximum duration of flight
|
34
|
+
uint256 public constant MAX_FLIGHT_DURATION = 2 days;
|
35
|
+
// Check for delay after .. minutes after scheduled arrival
|
36
|
+
uint256 public constant CHECK_OFFSET = 1 hours;
|
37
|
+
|
38
|
+
// uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
|
39
|
+
// All amounts in cent = multiplier is 10 ** 16!
|
40
|
+
uint256 public constant MIN_PREMIUM = 1500 * 10 ** 16; // for testing purposes
|
41
|
+
uint256 public constant MAX_PREMIUM = 1500 * 10 ** 16; // in cent
|
42
|
+
uint256 public constant MAX_PAYOUT = 75000 * 10 ** 16; // in cent
|
43
|
+
uint256 public constant MARGIN_PERCENT = 30;
|
44
|
+
string public constant RATINGS_CALLBACK = "flightRatingsCallback";
|
45
|
+
string public constant STATUSES_CALLBACK = "flightStatusCallback";
|
46
|
+
|
47
|
+
// ['observations','late15','late30','late45','cancelled','diverted']
|
48
|
+
uint8[6] public weightPattern = [0, 0, 0, 30, 50, 50];
|
49
|
+
uint8 public constant maxWeight = 50;
|
50
|
+
|
51
|
+
// Maximum cumulated weighted premium per risk
|
52
|
+
uint256 public constant MAX_TOTAL_PAYOUT = 3 * MAX_PAYOUT; // Maximum risk per flight is 3x max payout.
|
53
|
+
|
54
|
+
struct Risk {
|
55
|
+
bytes32 carrierFlightNumber;
|
56
|
+
bytes32 departureYearMonthDay;
|
57
|
+
uint256 departureTime;
|
58
|
+
uint256 arrivalTime;
|
59
|
+
uint delayInMinutes;
|
60
|
+
uint8 delay;
|
61
|
+
uint256 estimatedMaxTotalPayout;
|
62
|
+
uint256 premiumMultiplier;
|
63
|
+
uint256 weight;
|
64
|
+
}
|
65
|
+
|
66
|
+
mapping(bytes32 => Risk) public risks;
|
67
|
+
mapping(bytes32 => address) public bpKeyToAddress;
|
68
|
+
mapping(address => bytes32[]) public addressToBpKeys;
|
69
|
+
mapping(address => uint256) public addressToPolicyCount;
|
70
|
+
|
71
|
+
uint256 public uniqueIndex;
|
72
|
+
bytes32 public ratingsOracleType;
|
73
|
+
uint256 public ratingsOracleId;
|
74
|
+
bytes32 public statusesOracleType;
|
75
|
+
uint256 public statusesOracleId;
|
76
|
+
|
77
|
+
address public owner;
|
78
|
+
|
79
|
+
uint256 public productId;
|
80
|
+
|
81
|
+
// empty modifier to support compiling without inheritance from V1 product
|
82
|
+
modifier onlyOwner() { _; }
|
83
|
+
modifier onlyOracle() { _; }
|
84
|
+
|
85
|
+
constructor(
|
86
|
+
address _productServiceAddress,
|
87
|
+
bytes32 _ratingsOracleType,
|
88
|
+
uint256 _ratingsOracleId,
|
89
|
+
bytes32 _statusesOracleType,
|
90
|
+
uint256 _statusesOracleId
|
91
|
+
)
|
92
|
+
// Product(_productServiceAddress, NAME, POLICY_FLOW)
|
93
|
+
{
|
94
|
+
setOracles(_ratingsOracleType, _ratingsOracleId, _statusesOracleType, _statusesOracleId);
|
95
|
+
}
|
96
|
+
|
97
|
+
function setOracles(
|
98
|
+
bytes32 _ratingsOracleType,
|
99
|
+
uint256 _ratingsOracleId,
|
100
|
+
bytes32 _statusesOracleType,
|
101
|
+
uint256 _statusesOracleId
|
102
|
+
)
|
103
|
+
public
|
104
|
+
onlyOwner
|
105
|
+
{
|
106
|
+
ratingsOracleType = _ratingsOracleType;
|
107
|
+
ratingsOracleId = _ratingsOracleId;
|
108
|
+
statusesOracleType = _statusesOracleType;
|
109
|
+
statusesOracleId = _statusesOracleId;
|
110
|
+
}
|
111
|
+
|
112
|
+
function uniqueId(address _addr)
|
113
|
+
internal
|
114
|
+
returns (bytes32 _uniqueId)
|
115
|
+
{
|
116
|
+
uniqueIndex += 1;
|
117
|
+
return keccak256(abi.encode(_addr, productId, uniqueIndex));
|
118
|
+
}
|
119
|
+
|
120
|
+
function getValue() internal returns(uint256) {
|
121
|
+
return msg.value;
|
122
|
+
}
|
123
|
+
|
124
|
+
function applyForPolicy(
|
125
|
+
// domain specific
|
126
|
+
bytes32 _carrierFlightNumber,
|
127
|
+
bytes32 _departureYearMonthDay,
|
128
|
+
uint256 _departureTime,
|
129
|
+
uint256 _arrivalTime,
|
130
|
+
uint256[5] memory _payouts
|
131
|
+
) external payable {
|
132
|
+
// Validate input parameters
|
133
|
+
|
134
|
+
uint256 premium = getValue();
|
135
|
+
bytes32 bpKey = uniqueId(msg.sender);
|
136
|
+
|
137
|
+
require(premium >= MIN_PREMIUM, "ERROR:FDD-001:INVALID_PREMIUM");
|
138
|
+
require(premium <= MAX_PREMIUM, "ERROR:FDD-002:INVALID_PREMIUM");
|
139
|
+
require(_arrivalTime > _departureTime, "ERROR:FDD-003:ARRIVAL_BEFORE_DEPARTURE_TIME");
|
140
|
+
/* for demo uncommented ********************************************************/
|
141
|
+
require(
|
142
|
+
_arrivalTime <= _departureTime + MAX_FLIGHT_DURATION,
|
143
|
+
"ERROR:FDD-004:INVALID_ARRIVAL/DEPARTURE_TIME"
|
144
|
+
);
|
145
|
+
require(
|
146
|
+
_departureTime >= block.timestamp + MIN_TIME_BEFORE_DEPARTURE,
|
147
|
+
"ERROR:FDD-012:INVALID_ARRIVAL/DEPARTURE_TIME"
|
148
|
+
);
|
149
|
+
require(
|
150
|
+
_departureTime <= block.timestamp + MAX_TIME_BEFORE_DEPARTURE,
|
151
|
+
"ERROR:FDD-005:INVALID_ARRIVAL/DEPARTURE_TIME"
|
152
|
+
);
|
153
|
+
|
154
|
+
// Create risk if not exists
|
155
|
+
bytes32 riskId = keccak256(abi.encode(_carrierFlightNumber, _departureTime, _arrivalTime));
|
156
|
+
Risk storage risk = risks[riskId];
|
157
|
+
|
158
|
+
if (risk.carrierFlightNumber == "") {
|
159
|
+
risk.carrierFlightNumber = _carrierFlightNumber;
|
160
|
+
risk.departureYearMonthDay = _departureYearMonthDay;
|
161
|
+
risk.departureTime = _departureTime;
|
162
|
+
risk.arrivalTime = _arrivalTime;
|
163
|
+
}
|
164
|
+
|
165
|
+
require (
|
166
|
+
premium * risk.premiumMultiplier + risk.estimatedMaxTotalPayout < MAX_TOTAL_PAYOUT,
|
167
|
+
"ERROR:FDD-006:CLUSTER_RISK"
|
168
|
+
);
|
169
|
+
|
170
|
+
// if this is the first policy for this flight,
|
171
|
+
// we "block" this risk by setting risk.estimatedMaxTotalPayout to
|
172
|
+
// the maximum. Next flight for this risk can only be insured after this one has been underwritten.
|
173
|
+
if (risk.estimatedMaxTotalPayout == 0) {
|
174
|
+
risk.estimatedMaxTotalPayout = MAX_TOTAL_PAYOUT;
|
175
|
+
}
|
176
|
+
|
177
|
+
// Create new application
|
178
|
+
// _newApplication(bpKey, abi.encode(premium, _payouts, msg.sender, riskId));
|
179
|
+
|
180
|
+
// // Request flight ratings
|
181
|
+
uint256 requestId; // = _request(
|
182
|
+
// bpKey,
|
183
|
+
// abi.encode(_carrierFlightNumber),
|
184
|
+
// RATINGS_CALLBACK,
|
185
|
+
// ratingsOracleType,
|
186
|
+
// ratingsOracleId
|
187
|
+
// );
|
188
|
+
|
189
|
+
emit LogRequestFlightRatings(
|
190
|
+
requestId,
|
191
|
+
_carrierFlightNumber,
|
192
|
+
_departureTime,
|
193
|
+
_arrivalTime,
|
194
|
+
riskId
|
195
|
+
);
|
196
|
+
|
197
|
+
/**
|
198
|
+
* Record bpKey to address relation for easier lookup.
|
199
|
+
*/
|
200
|
+
bpKeyToAddress[bpKey] = msg.sender;
|
201
|
+
addressToBpKeys[msg.sender].push(bpKey);
|
202
|
+
addressToPolicyCount[msg.sender] += 1;
|
203
|
+
|
204
|
+
}
|
205
|
+
|
206
|
+
function checkApplication(
|
207
|
+
bytes32 _carrierFlightNumber,
|
208
|
+
uint256 _departureTime,
|
209
|
+
uint256 _arrivalTime,
|
210
|
+
uint256 _premium
|
211
|
+
)
|
212
|
+
external view
|
213
|
+
returns (uint256 errors)
|
214
|
+
{
|
215
|
+
// Validate input parameters
|
216
|
+
if (_premium < MIN_PREMIUM) errors = errors | (uint256(1) << 0);
|
217
|
+
if (_premium > MAX_PREMIUM) errors = errors | (uint256(1) << 1);
|
218
|
+
if (_arrivalTime < _departureTime) errors = errors | (uint256(1) << 2);
|
219
|
+
if (_arrivalTime > _departureTime + MAX_FLIGHT_DURATION) errors = errors | (uint256(1) << 3);
|
220
|
+
if (_departureTime < block.timestamp + MIN_TIME_BEFORE_DEPARTURE) errors = errors | (uint256(1) << 4);
|
221
|
+
if (_departureTime > block.timestamp + MAX_TIME_BEFORE_DEPARTURE) errors = errors | (uint256(1) << 5);
|
222
|
+
bytes32 riskId = keccak256(abi.encode(_carrierFlightNumber, _departureTime, _arrivalTime));
|
223
|
+
Risk storage risk = risks[riskId];
|
224
|
+
if (_premium * risk.premiumMultiplier + risk.estimatedMaxTotalPayout >= MAX_TOTAL_PAYOUT) errors = errors | (uint256(1) << 6);
|
225
|
+
|
226
|
+
return errors;
|
227
|
+
}
|
228
|
+
|
229
|
+
function declineAndPayback(bytes32 _bpKey, address payable _customer, uint256 _premium)
|
230
|
+
internal
|
231
|
+
{
|
232
|
+
// _decline(_bpKey);
|
233
|
+
// _customer.transfer(_premium);
|
234
|
+
}
|
235
|
+
|
236
|
+
function flightRatingsCallback(
|
237
|
+
uint256 _requestId,
|
238
|
+
bytes32 _bpKey,
|
239
|
+
bytes calldata _response
|
240
|
+
) external onlyOracle {
|
241
|
+
|
242
|
+
// Statistics: ['observations','late15','late30','late45','cancelled','diverted']
|
243
|
+
uint256[6] memory _statistics = abi.decode(_response, (uint256[6]));
|
244
|
+
uint256 premium;
|
245
|
+
uint256[5] memory payouts;
|
246
|
+
address payable customer;
|
247
|
+
// (uint256 premium, uint256[5] memory payouts, address payable customer, bytes32 riskId) =
|
248
|
+
// abi.decode(_getApplicationData(_bpKey), (uint256,uint256[5],address,bytes32));
|
249
|
+
// if (_statistics[0] < MIN_OBSERVATIONS) {
|
250
|
+
// declineAndPayback(_bpKey, customer, premium);
|
251
|
+
// return;
|
252
|
+
// }
|
253
|
+
|
254
|
+
(uint256 weight, uint256[5] memory calculatedPayouts) = calculatePayouts(premium, _statistics);
|
255
|
+
Risk storage risk; // = risks[riskId];
|
256
|
+
|
257
|
+
for (uint256 i = 0; i < 5; i++) {
|
258
|
+
if (calculatedPayouts[i] > MAX_PAYOUT) {
|
259
|
+
emit LogError("ERROR:FDD-007:PAYOUT_GT_MAXPAYOUT", i, payouts[i], calculatedPayouts[i]);
|
260
|
+
declineAndPayback(_bpKey, customer, premium);
|
261
|
+
return;
|
262
|
+
}
|
263
|
+
if (calculatedPayouts[i] != payouts[i]) {
|
264
|
+
emit LogError("ERROR:FDD-008:INVALID_PAYOUT_OPTION", i, payouts[i], calculatedPayouts[i]);
|
265
|
+
declineAndPayback(_bpKey, customer, premium);
|
266
|
+
return;
|
267
|
+
}
|
268
|
+
}
|
269
|
+
|
270
|
+
// It's the first policy for this risk, we accept any premium
|
271
|
+
// REMARK: all policy holders for this flight will share the same max payout estimates
|
272
|
+
// trends during the onboarding of policies are not considered
|
273
|
+
// if (risk.premiumMultiplier == 0) {
|
274
|
+
// risk.premiumMultiplier = maxWeight * 10000 / weight;
|
275
|
+
// risk.estimatedMaxTotalPayout = 0;
|
276
|
+
// }
|
277
|
+
// uint256 estimatedMaxPayout = premium * risk.premiumMultiplier;
|
278
|
+
// if (estimatedMaxPayout > MAX_PAYOUT) { estimatedMaxPayout = MAX_PAYOUT; }
|
279
|
+
// risk.estimatedMaxTotalPayout = risk.estimatedMaxTotalPayout + estimatedMaxPayout;
|
280
|
+
// risk.weight = weight;
|
281
|
+
|
282
|
+
// _underwrite(_bpKey);
|
283
|
+
|
284
|
+
// uint256 requestId = _request(
|
285
|
+
// _bpKey,
|
286
|
+
// abi.encode(
|
287
|
+
// risk.arrivalTime + CHECK_OFFSET,
|
288
|
+
// risk.carrierFlightNumber,
|
289
|
+
// risk.departureYearMonthDay
|
290
|
+
// ),
|
291
|
+
// STATUSES_CALLBACK,
|
292
|
+
// statusesOracleType,
|
293
|
+
// statusesOracleId
|
294
|
+
// );
|
295
|
+
|
296
|
+
// Now everything is prepared
|
297
|
+
// address(RiskPool).transfer(premium);
|
298
|
+
|
299
|
+
// emit LogRequestFlightStatus(
|
300
|
+
// requestId,
|
301
|
+
// risk.arrivalTime + CHECK_OFFSET,
|
302
|
+
// risk.carrierFlightNumber,
|
303
|
+
// risk.departureYearMonthDay
|
304
|
+
// );
|
305
|
+
}
|
306
|
+
|
307
|
+
function flightStatusCallback(uint256 _requestId, bytes32 _bpKey, bytes calldata _response)
|
308
|
+
external
|
309
|
+
onlyOracle
|
310
|
+
{
|
311
|
+
(bytes1 status, int256 delay) = abi.decode(_response, (bytes1, int256));
|
312
|
+
// (/* uint256 premium */, uint256[5] memory payouts, address payable customer, /* bytes32 riskId */) =
|
313
|
+
// abi.decode(_getApplicationData(_bpKey), (uint256,uint256[5],address,bytes32));
|
314
|
+
|
315
|
+
if (status != "L" && status != "A" && status != "C" && status != "D") {
|
316
|
+
emit LogUnprocessableStatus(_bpKey, _requestId);
|
317
|
+
return;
|
318
|
+
}
|
319
|
+
|
320
|
+
if (status == "A") {
|
321
|
+
// todo: active, reschedule oracle call + 45 min
|
322
|
+
// emit LogUnexpectedStatus(_bpKey, _requestId, status, delay, customer);
|
323
|
+
return;
|
324
|
+
}
|
325
|
+
|
326
|
+
// if (status == "C") {
|
327
|
+
// resolvePayout(_bpKey, payouts[3], customer);
|
328
|
+
// } else if (status == "D") {
|
329
|
+
// resolvePayout(_bpKey, payouts[4], customer);
|
330
|
+
// } else if (delay >= 15 && delay < 30) {
|
331
|
+
// resolvePayout(_bpKey, payouts[0], customer);
|
332
|
+
// } else if (delay >= 30 && delay < 45) {
|
333
|
+
// resolvePayout(_bpKey, payouts[1], customer);
|
334
|
+
// } else if (delay >= 45) {
|
335
|
+
// resolvePayout(_bpKey, payouts[2], customer);
|
336
|
+
// } else {
|
337
|
+
// resolvePayout(_bpKey, 0, customer);
|
338
|
+
// }
|
339
|
+
}
|
340
|
+
|
341
|
+
function resolvePayout(bytes32 _bpKey, uint256 _payoutAmount, address payable _customer) internal {
|
342
|
+
if (_payoutAmount == 0) {
|
343
|
+
// _expire(_bpKey);
|
344
|
+
emit LogPolicyExpired(_bpKey);
|
345
|
+
} else {
|
346
|
+
// uint256 claimId = _newClaim(_bpKey, abi.encode(_payoutAmount));
|
347
|
+
// uint256 payoutId = _confirmClaim(_bpKey, claimId, abi.encode(_payoutAmount));
|
348
|
+
// _payout(_bpKey, payoutId, true, abi.encode(_payoutAmount));
|
349
|
+
_customer.transfer(_payoutAmount);
|
350
|
+
// emit LogPayoutTransferred(_bpKey, claimId, payoutId, _payoutAmount);
|
351
|
+
}
|
352
|
+
}
|
353
|
+
|
354
|
+
function calculatePayouts(uint256 _premium, uint256[6] memory _statistics)
|
355
|
+
public
|
356
|
+
view
|
357
|
+
returns (uint256 _weight, uint256[5] memory _payoutOptions)
|
358
|
+
{
|
359
|
+
require(_premium >= MIN_PREMIUM, "ERROR:FDD-009:INVALID_PREMIUM");
|
360
|
+
require(_premium <= MAX_PREMIUM, "ERROR:FDD-010:INVALID_PREMIUM");
|
361
|
+
require(_statistics[0] >= MIN_OBSERVATIONS, "ERROR:FDD-011:LOW_OBSERVATIONS");
|
362
|
+
|
363
|
+
_weight = 0;
|
364
|
+
_payoutOptions = [uint256(0), 0, 0, 0, 0];
|
365
|
+
|
366
|
+
for (uint256 i = 1; i < 6; i++) {
|
367
|
+
_weight += weightPattern[i] * _statistics[i] * 10000 / _statistics[0];
|
368
|
+
// 1% = 100 / 100% = 10,000
|
369
|
+
}
|
370
|
+
|
371
|
+
// To avoid div0 in the payout section, we have to make a minimal assumption on weight
|
372
|
+
if (_weight == 0) {
|
373
|
+
_weight = 100000 / _statistics[0];
|
374
|
+
}
|
375
|
+
|
376
|
+
_weight = _weight * (100 + MARGIN_PERCENT) / 100;
|
377
|
+
|
378
|
+
for (uint256 i = 0; i < 5; i++) {
|
379
|
+
_payoutOptions[i] = _premium * weightPattern[i + 1] * 10000 / _weight;
|
380
|
+
|
381
|
+
if (_payoutOptions[i] > MAX_PAYOUT) {
|
382
|
+
_payoutOptions[i] = MAX_PAYOUT;
|
383
|
+
}
|
384
|
+
}
|
385
|
+
}
|
386
|
+
|
387
|
+
function faucet(uint256 _amount) // for testing only
|
388
|
+
public
|
389
|
+
onlyOwner
|
390
|
+
{
|
391
|
+
require(_amount <= address(this).balance);
|
392
|
+
address payable receiver;
|
393
|
+
receiver = payable(owner);
|
394
|
+
receiver.transfer(_amount);
|
395
|
+
}
|
396
|
+
}
|
@@ -100,16 +100,22 @@ contract SimpleProduct is
|
|
100
100
|
);
|
101
101
|
}
|
102
102
|
|
103
|
-
function
|
103
|
+
function setRiskLocked(
|
104
104
|
RiskId id,
|
105
|
-
|
105
|
+
bool locked
|
106
106
|
) public {
|
107
|
-
|
107
|
+
_setRiskLocked(
|
108
108
|
id,
|
109
|
-
|
109
|
+
locked
|
110
110
|
);
|
111
111
|
}
|
112
112
|
|
113
|
+
function closeRisk(
|
114
|
+
RiskId id
|
115
|
+
) public {
|
116
|
+
_closeRisk(id);
|
117
|
+
}
|
118
|
+
|
113
119
|
function createApplication(
|
114
120
|
address applicationOwner,
|
115
121
|
RiskId riskId,
|
@@ -143,12 +149,55 @@ contract SimpleProduct is
|
|
143
149
|
);
|
144
150
|
}
|
145
151
|
|
152
|
+
function createApplication2(
|
153
|
+
address applicationOwner,
|
154
|
+
RiskId riskId,
|
155
|
+
Amount sumInsuredAmount,
|
156
|
+
Amount premiumAmount,
|
157
|
+
Seconds lifetime,
|
158
|
+
bytes memory applicationData,
|
159
|
+
NftId bundleNftId,
|
160
|
+
ReferralId referralId
|
161
|
+
)
|
162
|
+
public
|
163
|
+
returns (NftId nftId)
|
164
|
+
{
|
165
|
+
return _createApplication(
|
166
|
+
applicationOwner,
|
167
|
+
riskId,
|
168
|
+
sumInsuredAmount,
|
169
|
+
premiumAmount,
|
170
|
+
lifetime,
|
171
|
+
bundleNftId,
|
172
|
+
referralId,
|
173
|
+
applicationData
|
174
|
+
);
|
175
|
+
}
|
176
|
+
|
177
|
+
function revoke(
|
178
|
+
NftId applicationNftId
|
179
|
+
) public {
|
180
|
+
_revoke(applicationNftId);
|
181
|
+
}
|
182
|
+
|
146
183
|
function createPolicy(
|
147
184
|
NftId applicationNftId,
|
148
185
|
bool requirePremiumPayment,
|
149
186
|
Timestamp activateAt
|
150
187
|
) public {
|
151
|
-
_createPolicy(applicationNftId, activateAt);
|
188
|
+
_createPolicy(applicationNftId, activateAt, AmountLib.max());
|
189
|
+
if (requirePremiumPayment == true) {
|
190
|
+
_collectPremium(applicationNftId, activateAt);
|
191
|
+
}
|
192
|
+
}
|
193
|
+
|
194
|
+
function createPolicy2(
|
195
|
+
NftId applicationNftId,
|
196
|
+
bool requirePremiumPayment,
|
197
|
+
Timestamp activateAt,
|
198
|
+
Amount maxPremiumAmount
|
199
|
+
) public {
|
200
|
+
_createPolicy(applicationNftId, activateAt, maxPremiumAmount);
|
152
201
|
if (requirePremiumPayment == true) {
|
153
202
|
_collectPremium(applicationNftId, activateAt);
|
154
203
|
}
|
@@ -229,11 +278,11 @@ contract SimpleProduct is
|
|
229
278
|
_declineClaim(policyNftId, claimId, processData);
|
230
279
|
}
|
231
280
|
|
232
|
-
function
|
281
|
+
function cancelConfirmedClaim(
|
233
282
|
NftId policyNftId,
|
234
283
|
ClaimId claimId
|
235
284
|
) public {
|
236
|
-
|
285
|
+
_cancelConfirmedClaim(policyNftId, claimId);
|
237
286
|
}
|
238
287
|
|
239
288
|
function createPayout(
|
@@ -266,8 +315,8 @@ contract SimpleProduct is
|
|
266
315
|
function processPayout(
|
267
316
|
NftId policyNftId,
|
268
317
|
PayoutId payoutId
|
269
|
-
) public {
|
270
|
-
_processPayout(policyNftId, payoutId);
|
318
|
+
) public returns (Amount netPayoutAmount, Amount processingFeeAmount) {
|
319
|
+
(netPayoutAmount, processingFeeAmount) = _processPayout(policyNftId, payoutId);
|
271
320
|
}
|
272
321
|
|
273
322
|
function createOracleRequest(
|
@@ -299,6 +348,28 @@ contract SimpleProduct is
|
|
299
348
|
}
|
300
349
|
}
|
301
350
|
|
351
|
+
function createOracleRequest2(
|
352
|
+
NftId oracleNftId,
|
353
|
+
string memory requestText,
|
354
|
+
Timestamp expiryAt,
|
355
|
+
bool synchronous,
|
356
|
+
string memory callbackMethod
|
357
|
+
)
|
358
|
+
public
|
359
|
+
// restricted()
|
360
|
+
returns (RequestId)
|
361
|
+
{
|
362
|
+
bytes memory requestData = abi.encode(SimpleOracle.SimpleRequest(
|
363
|
+
synchronous,
|
364
|
+
requestText));
|
365
|
+
|
366
|
+
return _oracleService.request(
|
367
|
+
oracleNftId,
|
368
|
+
requestData,
|
369
|
+
expiryAt,
|
370
|
+
callbackMethod);
|
371
|
+
}
|
372
|
+
|
302
373
|
function cancelOracleRequest(
|
303
374
|
RequestId requestId
|
304
375
|
)
|
@@ -329,7 +400,7 @@ contract SimpleProduct is
|
|
329
400
|
SimpleOracle.SimpleResponse memory response = abi.decode(
|
330
401
|
responseData, (SimpleOracle.SimpleResponse));
|
331
402
|
|
332
|
-
if (response.revertInCall && response.revertUntil >= TimestampLib.
|
403
|
+
if (response.revertInCall && response.revertUntil >= TimestampLib.current()) {
|
333
404
|
revert ErrorSimpleProductRevertedWhileProcessingResponse(requestId);
|
334
405
|
}
|
335
406
|
|
@@ -347,21 +418,14 @@ contract SimpleProduct is
|
|
347
418
|
}
|
348
419
|
|
349
420
|
|
350
|
-
function
|
421
|
+
function doSomethingOnlyWhenActive()
|
351
422
|
public
|
352
|
-
|
423
|
+
onlyActive()
|
353
424
|
returns (bool)
|
354
425
|
{
|
355
426
|
return true;
|
356
427
|
}
|
357
428
|
|
358
|
-
function doWhenNotLocked()
|
359
|
-
public
|
360
|
-
restricted()
|
361
|
-
returns (bool)
|
362
|
-
{
|
363
|
-
return true;
|
364
|
-
}
|
365
429
|
|
366
430
|
function getOracleService() public view returns (IOracleService) {
|
367
431
|
return _oracleService;
|