@etherisc/gif-next 0.0.2-b1fff40-773 → 0.0.2-b2070b1-995
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 +109 -9
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
- 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 +549 -209
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +183 -487
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -387
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +644 -392
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +209 -133
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -191
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +476 -137
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1208 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1476 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2609 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -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 +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- 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 +578 -65
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +395 -60
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +616 -183
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1021 -363
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +328 -92
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1799 -789
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +409 -231
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +143 -105
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +960 -1163
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +1539 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
- 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 +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +127 -355
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +424 -37
- 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 +103 -133
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +103 -323
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +160 -438
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +502 -364
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +194 -114
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +340 -112
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -236
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +129 -416
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +272 -431
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +257 -226
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -108
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +264 -423
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -48
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +565 -109
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +791 -377
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +493 -638
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +183 -133
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -93
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +103 -133
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +79 -6
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -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 +84 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +102 -322
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +85 -7
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -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 +41 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1510 -191
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
- 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 +1635 -455
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +191 -105
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1645 -790
- 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 +180 -77
- 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 +35 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -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 +28 -4
- 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 +94 -38
- 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 +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- 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 +49 -50
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- 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/RequestIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +112 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- 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 +56 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- 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 +118 -79
- 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 +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +458 -269
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +159 -208
- package/contracts/authorization/IAccess.sol +25 -6
- package/contracts/authorization/IAccessAdmin.sol +87 -79
- package/contracts/authorization/IAuthorization.sol +9 -37
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +255 -25
- package/contracts/distribution/BasicDistribution.sol +22 -30
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +44 -98
- package/contracts/distribution/DistributionService.sol +243 -132
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +4 -11
- package/contracts/distribution/IDistributionService.sol +47 -29
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/flight/FlightOracle.sol +167 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
- package/contracts/examples/flight/FlightPool.sol +89 -0
- package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
- package/contracts/examples/flight/FlightProduct.sol +728 -0
- package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
- package/contracts/examples/flight/FlightUSD.sol +26 -0
- package/contracts/examples/flight/originalV1.sol +396 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +113 -43
- package/contracts/instance/IInstanceService.sol +61 -34
- package/contracts/instance/Instance.sol +201 -104
- package/contracts/instance/InstanceAdmin.sol +275 -162
- package/contracts/instance/InstanceAuthorizationV3.sol +142 -71
- package/contracts/instance/InstanceReader.sol +502 -251
- package/contracts/instance/InstanceService.sol +333 -262
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +27 -36
- package/contracts/instance/ProductStore.sol +119 -0
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +13 -10
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +30 -19
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +2 -5
- package/contracts/oracle/BasicOracleAuthorization.sol +14 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +14 -13
- package/contracts/oracle/Oracle.sol +11 -27
- package/contracts/oracle/OracleService.sol +119 -87
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +39 -41
- package/contracts/pool/BasicPoolAuthorization.sol +39 -13
- package/contracts/pool/BundleService.sol +200 -155
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +42 -46
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +97 -77
- package/contracts/pool/Pool.sol +143 -138
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +413 -233
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +144 -47
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +13 -46
- package/contracts/product/BasicProductAuthorization.sol +33 -12
- package/contracts/product/ClaimService.sol +394 -185
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +29 -3
- package/contracts/product/IClaimService.sol +48 -11
- package/contracts/product/IPolicyService.sol +61 -37
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/IRiskService.sol +48 -0
- package/contracts/product/PolicyService.sol +445 -276
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +90 -84
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +201 -100
- package/contracts/product/RiskService.sol +190 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +70 -32
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +367 -207
- package/contracts/registry/RegistryAdmin.sol +114 -288
- package/contracts/registry/RegistryAuthorization.sol +336 -0
- package/contracts/registry/RegistryService.sol +38 -49
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +279 -241
- package/contracts/registry/ServiceAuthorizationV3.sol +205 -63
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +70 -136
- package/contracts/shared/ComponentService.sol +423 -387
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ContractLib.sol +312 -0
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +43 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- package/contracts/shared/IKeyValueStore.sol +9 -1
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +4 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
- package/contracts/shared/InstanceLinkedComponent.sol +116 -54
- package/contracts/shared/KeyValueStore.sol +4 -4
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +33 -11
- package/contracts/shared/PolicyHolder.sol +20 -59
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -35
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +271 -71
- package/contracts/staking/IStakingService.sol +45 -78
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +525 -243
- package/contracts/staking/StakingLib.sol +195 -0
- package/contracts/staking/StakingManager.sol +12 -9
- package/contracts/staking/StakingReader.sol +70 -82
- package/contracts/staking/StakingService.sol +62 -152
- package/contracts/staking/StakingServiceManager.sol +7 -5
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +73 -46
- package/contracts/type/Amount.sol +19 -0
- package/contracts/type/Blocknumber.sol +22 -16
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +74 -67
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +6 -0
- package/contracts/type/RequestIdSet.sol +62 -0
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +44 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/String.sol +42 -0
- package/contracts/type/Timestamp.sol +24 -8
- package/contracts/type/UFixed.sol +38 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +93 -45
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +8 -5
- package/package.json +5 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/IProductService.sol +0 -33
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/staking/StakeManagerLib.sol +0 -231
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -0,0 +1,728 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
7
|
+
import {IComponents} from "../../instance/module/IComponents.sol";
|
8
|
+
|
9
|
+
import {Amount, AmountLib} from "../../type/Amount.sol";
|
10
|
+
import {BasicProduct} from "../../product/BasicProduct.sol";
|
11
|
+
import {ClaimId} from "../../type/ClaimId.sol";
|
12
|
+
import {FeeLib} from "../../type/Fee.sol";
|
13
|
+
import {FlightOracle} from "./FlightOracle.sol";
|
14
|
+
import {InstanceReader} from "../../instance/InstanceReader.sol";
|
15
|
+
import {NftId, NftIdLib} from "../../type/NftId.sol";
|
16
|
+
import {PayoutId} from "../../type/PayoutId.sol";
|
17
|
+
import {ReferralLib} from "../../type/Referral.sol";
|
18
|
+
import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
|
19
|
+
import {RequestId} from "../../type/RequestId.sol";
|
20
|
+
import {Seconds, SecondsLib} from "../../type/Seconds.sol";
|
21
|
+
import {Str} from "../../type/String.sol";
|
22
|
+
import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
23
|
+
// import {UFixed, UFixedLib} from "../../type/UFixed.sol";
|
24
|
+
|
25
|
+
|
26
|
+
/// @dev FlightProduct implements the flight delay product.
|
27
|
+
contract FlightProduct is
|
28
|
+
BasicProduct
|
29
|
+
{
|
30
|
+
|
31
|
+
event LogRequestFlightRatings(uint256 requestId, bytes32 carrierFlightNumber, uint256 departureTime, uint256 arrivalTime, bytes32 riskId);
|
32
|
+
event LogRequestFlightStatus(uint256 requestId, uint256 arrivalTime, bytes32 carrierFlightNumber, bytes32 departureYearMonthDay);
|
33
|
+
event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
|
34
|
+
event LogFlightStatusProcessed(RequestId requrestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
|
35
|
+
|
36
|
+
// TODO convert error logs to custom errors
|
37
|
+
event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
|
38
|
+
event LogPolicyExpired(bytes32 bpKey);
|
39
|
+
|
40
|
+
event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
|
41
|
+
event LogErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
|
42
|
+
event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
|
43
|
+
|
44
|
+
// solhint-disable
|
45
|
+
// Minimum observations for valid prediction
|
46
|
+
uint256 public immutable MIN_OBSERVATIONS = 10;
|
47
|
+
// Minimum time before departure for applying
|
48
|
+
Seconds public MIN_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(14);
|
49
|
+
// Maximum time before departure for applying
|
50
|
+
Seconds public MAX_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(90);
|
51
|
+
// Maximum duration of flight
|
52
|
+
Seconds public MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
|
53
|
+
// Check for delay after .. minutes after scheduled arrival
|
54
|
+
Seconds public CHECK_OFFSET = SecondsLib.fromHours(1);
|
55
|
+
// Max time to process claims after departure
|
56
|
+
Seconds public LIFETIME = SecondsLib.fromDays(30);
|
57
|
+
|
58
|
+
// uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
|
59
|
+
// All amounts in cent = multiplier is 10 ** 16!
|
60
|
+
Amount public MIN_PREMIUM;
|
61
|
+
Amount public MAX_PREMIUM;
|
62
|
+
Amount public MAX_PAYOUT;
|
63
|
+
Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight is 3x max payout.
|
64
|
+
|
65
|
+
// Maximum cumulated weighted premium per risk
|
66
|
+
uint256 public MARGIN_PERCENT = 30;
|
67
|
+
|
68
|
+
// Maximum number of policies to process in one callback
|
69
|
+
uint8 public MAX_POLICIES_TO_PROCESS = 5;
|
70
|
+
|
71
|
+
// ['observations','late15','late30','late45','cancelled','diverted']
|
72
|
+
// no payouts for delays of 30' or less
|
73
|
+
uint8[6] public WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
|
74
|
+
uint8 public constant MAX_WEIGHT = 50;
|
75
|
+
|
76
|
+
// GIF V3 specifics
|
77
|
+
NftId internal _defaultBundleNftId;
|
78
|
+
|
79
|
+
// TODO add product (base contract) functions
|
80
|
+
// - getOracleNftId(idx)
|
81
|
+
// - getDistributionNftId()
|
82
|
+
// - getPoolNftId()
|
83
|
+
NftId internal _oracleNftId; // TODO refactor to getOracleNftId(0)
|
84
|
+
// solhint-enable
|
85
|
+
|
86
|
+
struct FlightRisk {
|
87
|
+
Str carrierFlightNumber;
|
88
|
+
Str departureYearMonthDay;
|
89
|
+
Timestamp departureTime;
|
90
|
+
Timestamp arrivalTime;
|
91
|
+
Amount sumOfSumInsuredAmounts;
|
92
|
+
uint256 premiumMultiplier; // what is this? UFixed?
|
93
|
+
uint256 weight; // what is this? UFixed?
|
94
|
+
bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
|
95
|
+
int256 delayMinutes;
|
96
|
+
}
|
97
|
+
|
98
|
+
|
99
|
+
constructor(
|
100
|
+
address registry,
|
101
|
+
NftId instanceNftid,
|
102
|
+
string memory componentName,
|
103
|
+
IAuthorization authorization
|
104
|
+
)
|
105
|
+
{
|
106
|
+
address initialOwner = msg.sender;
|
107
|
+
|
108
|
+
_initialize(
|
109
|
+
registry,
|
110
|
+
instanceNftid,
|
111
|
+
componentName,
|
112
|
+
authorization,
|
113
|
+
initialOwner);
|
114
|
+
}
|
115
|
+
|
116
|
+
//--- external functions ------------------------------------------------//
|
117
|
+
//--- unpermissioned functions ------------------------------------------//
|
118
|
+
|
119
|
+
function setOracleNftId()
|
120
|
+
external
|
121
|
+
{
|
122
|
+
_oracleNftId = _getInstanceReader().getProductInfo(
|
123
|
+
getNftId()).oracleNftId[0];
|
124
|
+
}
|
125
|
+
|
126
|
+
|
127
|
+
// TODO add payout amount testing
|
128
|
+
event LogFlightDebug(string message, uint256 value);
|
129
|
+
|
130
|
+
function createPolicy(
|
131
|
+
address policyHolder,
|
132
|
+
Str carrierFlightNumber,
|
133
|
+
Str departureYearMonthDay,
|
134
|
+
Timestamp departureTime,
|
135
|
+
Timestamp arrivalTime,
|
136
|
+
Amount premiumAmount,
|
137
|
+
uint256[6] memory statistics
|
138
|
+
)
|
139
|
+
external
|
140
|
+
virtual
|
141
|
+
restricted()
|
142
|
+
returns (
|
143
|
+
NftId policyNftId,
|
144
|
+
Amount[5] memory payoutAmounts
|
145
|
+
)
|
146
|
+
{
|
147
|
+
// check application parameters and calculate payouts
|
148
|
+
checkParameters(
|
149
|
+
departureTime,
|
150
|
+
arrivalTime,
|
151
|
+
premiumAmount); // TODO remove? checked here and in checkAndCalculatePayouts
|
152
|
+
|
153
|
+
(
|
154
|
+
uint256 weight,
|
155
|
+
Amount[5] memory payoutAmounts,
|
156
|
+
Amount sumInsuredAmount
|
157
|
+
) = calculatePayoutAmounts(
|
158
|
+
premiumAmount,
|
159
|
+
statistics);
|
160
|
+
|
161
|
+
emit LogFlightDebug("payoutAmounts[0]", payoutAmounts[0].toInt());
|
162
|
+
emit LogFlightDebug("payoutAmounts[1]", payoutAmounts[1].toInt());
|
163
|
+
emit LogFlightDebug("payoutAmounts[2]", payoutAmounts[2].toInt());
|
164
|
+
emit LogFlightDebug("payoutAmounts[3]", payoutAmounts[3].toInt());
|
165
|
+
emit LogFlightDebug("payoutAmounts[4]", payoutAmounts[4].toInt());
|
166
|
+
|
167
|
+
// more checks and risk handling
|
168
|
+
RiskId riskId = _checkAndUpdateFlightRisk(
|
169
|
+
carrierFlightNumber,
|
170
|
+
departureYearMonthDay,
|
171
|
+
departureTime,
|
172
|
+
arrivalTime,
|
173
|
+
sumInsuredAmount,
|
174
|
+
weight);
|
175
|
+
|
176
|
+
// effects
|
177
|
+
policyNftId = _createApplication(
|
178
|
+
policyHolder,
|
179
|
+
riskId,
|
180
|
+
sumInsuredAmount,
|
181
|
+
premiumAmount,
|
182
|
+
LIFETIME,
|
183
|
+
_defaultBundleNftId,
|
184
|
+
ReferralLib.zero(),
|
185
|
+
abi.encode(
|
186
|
+
premiumAmount,
|
187
|
+
payoutAmounts)); // application data
|
188
|
+
|
189
|
+
_createPolicy(
|
190
|
+
policyNftId,
|
191
|
+
TimestampLib.zero(), // do not ativate yet
|
192
|
+
premiumAmount); // max premium amount
|
193
|
+
|
194
|
+
// interactions (token transfer + callback to token holder, if contract)
|
195
|
+
_collectPremium(
|
196
|
+
policyNftId,
|
197
|
+
departureTime); // activate at scheduled departure time of flight
|
198
|
+
|
199
|
+
// send oracle request for flight status (interacts with flight oracle contrac)
|
200
|
+
_sendRequest(
|
201
|
+
_oracleNftId,
|
202
|
+
abi.encode(
|
203
|
+
FlightOracle.FlightStatusRequest(
|
204
|
+
riskId,
|
205
|
+
carrierFlightNumber,
|
206
|
+
departureYearMonthDay,
|
207
|
+
departureTime)),
|
208
|
+
// allow up to 30 days to process the claim
|
209
|
+
arrivalTime.addSeconds(SecondsLib.fromDays(30)),
|
210
|
+
"flightStatusCallback");
|
211
|
+
}
|
212
|
+
|
213
|
+
|
214
|
+
/// @dev Callback for flight status oracle.
|
215
|
+
/// Function may only be alled by oracle service.
|
216
|
+
function flightStatusCallback(
|
217
|
+
RequestId requrestId,
|
218
|
+
bytes memory responseData
|
219
|
+
)
|
220
|
+
external
|
221
|
+
virtual
|
222
|
+
restricted()
|
223
|
+
{
|
224
|
+
FlightOracle.FlightStatusResponse memory response = abi.decode(
|
225
|
+
responseData, (FlightOracle.FlightStatusResponse));
|
226
|
+
|
227
|
+
_flightStatusProcess(
|
228
|
+
requrestId,
|
229
|
+
response.riskId,
|
230
|
+
response.status,
|
231
|
+
response.delayMinutes,
|
232
|
+
MAX_POLICIES_TO_PROCESS);
|
233
|
+
}
|
234
|
+
|
235
|
+
|
236
|
+
/// @dev Manual fallback function for product owner.
|
237
|
+
function flightStatusProcess(
|
238
|
+
RequestId requrestId,
|
239
|
+
RiskId riskId,
|
240
|
+
bytes1 status,
|
241
|
+
int256 delayMinutes,
|
242
|
+
uint8 maxPoliciesToProcess
|
243
|
+
)
|
244
|
+
external
|
245
|
+
virtual
|
246
|
+
restricted()
|
247
|
+
onlyOwner()
|
248
|
+
{
|
249
|
+
_flightStatusProcess(
|
250
|
+
requrestId,
|
251
|
+
riskId,
|
252
|
+
status,
|
253
|
+
delayMinutes,
|
254
|
+
maxPoliciesToProcess);
|
255
|
+
}
|
256
|
+
|
257
|
+
|
258
|
+
/// @dev calculates payout option based on flight status and delay minutes.
|
259
|
+
/// Is not a view function as it emits log evens in case of unexpected status.
|
260
|
+
// TODO decide if reverts instead of log events could work too (and convert the function into a view function)
|
261
|
+
function checkAndGetPayoutOption(
|
262
|
+
RequestId requrestId,
|
263
|
+
RiskId riskId,
|
264
|
+
bytes1 status,
|
265
|
+
int256 delayMinutes
|
266
|
+
)
|
267
|
+
public
|
268
|
+
virtual
|
269
|
+
returns (uint8 payoutOption)
|
270
|
+
{
|
271
|
+
// default: no payout
|
272
|
+
payoutOption = type(uint8).max;
|
273
|
+
|
274
|
+
// check status
|
275
|
+
if (status != "L" && status != "A" && status != "C" && status != "D") {
|
276
|
+
emit LogErrorUnprocessableStatus(requrestId, riskId, status);
|
277
|
+
return payoutOption;
|
278
|
+
}
|
279
|
+
|
280
|
+
if (status == "A") {
|
281
|
+
// todo: active, reschedule oracle call + 45 min
|
282
|
+
emit LogErrorUnexpectedStatus(requrestId, riskId, status, delayMinutes);
|
283
|
+
return payoutOption;
|
284
|
+
}
|
285
|
+
|
286
|
+
// trigger payout if applicable
|
287
|
+
if (status == "C") { payoutOption = 3; }
|
288
|
+
else if (status == "D") { payoutOption = 4; }
|
289
|
+
else if (delayMinutes >= 15 && delayMinutes < 30) { payoutOption = 0; }
|
290
|
+
else if (delayMinutes >= 30 && delayMinutes < 45) { payoutOption = 1; }
|
291
|
+
else if (delayMinutes >= 45) { payoutOption = 2; }
|
292
|
+
}
|
293
|
+
|
294
|
+
//--- owner functions ---------------------------------------------------//
|
295
|
+
|
296
|
+
/// @dev Call after product registration with the instance, when the product token/tokenhandler is available
|
297
|
+
function completeSetup()
|
298
|
+
external
|
299
|
+
virtual
|
300
|
+
restricted()
|
301
|
+
onlyOwner()
|
302
|
+
{
|
303
|
+
IERC20Metadata token = IERC20Metadata(getToken());
|
304
|
+
uint256 tokenMultiplier = 10 ** token.decimals();
|
305
|
+
|
306
|
+
MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
|
307
|
+
MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
|
308
|
+
MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
|
309
|
+
MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
|
310
|
+
}
|
311
|
+
|
312
|
+
|
313
|
+
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
314
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
315
|
+
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
316
|
+
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
317
|
+
|
318
|
+
|
319
|
+
//--- view functions ----------------------------------------------------//
|
320
|
+
|
321
|
+
// TODO where do we need this
|
322
|
+
function checkApplication(
|
323
|
+
Str carrierFlightNumber,
|
324
|
+
Timestamp departureTime,
|
325
|
+
Timestamp arrivalTime,
|
326
|
+
Amount premium
|
327
|
+
)
|
328
|
+
external
|
329
|
+
virtual
|
330
|
+
view
|
331
|
+
returns (uint256 errors)
|
332
|
+
{
|
333
|
+
// Validate input parameters
|
334
|
+
if (premium < MIN_PREMIUM) { errors = errors | (uint256(1) << 0); }
|
335
|
+
if (premium > MAX_PREMIUM) { errors = errors | (uint256(1) << 1); }
|
336
|
+
if (arrivalTime < departureTime) { errors = errors | (uint256(1) << 2); }
|
337
|
+
if (arrivalTime > departureTime.addSeconds(MAX_FLIGHT_DURATION)) { errors = errors | (uint256(1) << 3); }
|
338
|
+
if (departureTime < TimestampLib.current().addSeconds(MIN_TIME_BEFORE_DEPARTURE)) { errors = errors | (uint256(1) << 4); }
|
339
|
+
if (departureTime > TimestampLib.current().addSeconds(MAX_TIME_BEFORE_DEPARTURE)) { errors = errors | (uint256(1) << 5); }
|
340
|
+
|
341
|
+
(, bool exists, FlightRisk memory flightRisk) = getFlightRisk(carrierFlightNumber, departureTime, arrivalTime);
|
342
|
+
if (exists) {
|
343
|
+
Amount sumInsured = AmountLib.toAmount(premium.toInt() * flightRisk.premiumMultiplier);
|
344
|
+
if (flightRisk.sumOfSumInsuredAmounts + sumInsured > MAX_TOTAL_PAYOUT) {
|
345
|
+
errors = errors | (uint256(1) << 6);
|
346
|
+
}
|
347
|
+
}
|
348
|
+
|
349
|
+
return errors;
|
350
|
+
}
|
351
|
+
|
352
|
+
|
353
|
+
function checkParameters(
|
354
|
+
Timestamp departureTime,
|
355
|
+
Timestamp arrivalTime,
|
356
|
+
Amount premium
|
357
|
+
)
|
358
|
+
internal
|
359
|
+
view
|
360
|
+
{
|
361
|
+
// solhint-disable
|
362
|
+
require(premium >= MIN_PREMIUM, "ERROR:FDD-001:INVALID_PREMIUM");
|
363
|
+
require(premium <= MAX_PREMIUM, "ERROR:FDD-002:INVALID_PREMIUM");
|
364
|
+
require(arrivalTime > departureTime, "ERROR:FDD-003:ARRIVAL_BEFORE_DEPARTURE_TIME");
|
365
|
+
|
366
|
+
// TODO decide how to handle demo mode
|
367
|
+
require(
|
368
|
+
arrivalTime <= departureTime.addSeconds(MAX_FLIGHT_DURATION),
|
369
|
+
"ERROR:FDD-004:INVALID_ARRIVAL/DEPARTURE_TIME");
|
370
|
+
require(
|
371
|
+
TimestampLib.current() >= departureTime.subtractSeconds(MAX_TIME_BEFORE_DEPARTURE),
|
372
|
+
"ERROR:FDD-005:INVALID_ARRIVAL/DEPARTURE_TIME");
|
373
|
+
require(
|
374
|
+
TimestampLib.current() <= departureTime.subtractSeconds(MIN_TIME_BEFORE_DEPARTURE),
|
375
|
+
"ERROR:FDD-012:INVALID_ARRIVAL/DEPARTURE_TIME");
|
376
|
+
// solhint-enable
|
377
|
+
}
|
378
|
+
|
379
|
+
|
380
|
+
function calculateNetPremium(
|
381
|
+
Amount, // sumInsuredAmount: not used in this product
|
382
|
+
RiskId, // riskId: not used in this product
|
383
|
+
Seconds, // lifetime: not used in this product, a flight is a one time risk
|
384
|
+
bytes memory applicationData // holds the premium amount the customer is willing to pay
|
385
|
+
)
|
386
|
+
external
|
387
|
+
virtual override
|
388
|
+
view
|
389
|
+
returns (Amount netPremiumAmount)
|
390
|
+
{
|
391
|
+
(netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
|
392
|
+
}
|
393
|
+
|
394
|
+
|
395
|
+
function calculateWeight(
|
396
|
+
uint256[6] memory statistics
|
397
|
+
)
|
398
|
+
public
|
399
|
+
view
|
400
|
+
returns (uint256 weight)
|
401
|
+
{
|
402
|
+
// check we have enough observations
|
403
|
+
require(statistics[0] >= MIN_OBSERVATIONS, "ERROR:FDD-011:LOW_OBSERVATIONS");
|
404
|
+
|
405
|
+
weight = 0;
|
406
|
+
for (uint256 i = 1; i < 6; i++) {
|
407
|
+
weight += WEIGHT_PATTERN[i] * statistics[i] * 10000 / statistics[0];
|
408
|
+
}
|
409
|
+
|
410
|
+
// To avoid div0 in the payout section, we have to make a minimal assumption on weight
|
411
|
+
if (weight == 0) {
|
412
|
+
weight = 100000 / statistics[0];
|
413
|
+
}
|
414
|
+
|
415
|
+
// TODO comment on intended effect
|
416
|
+
weight = (weight * (100 + MARGIN_PERCENT)) / 100;
|
417
|
+
}
|
418
|
+
|
419
|
+
|
420
|
+
// REMARK: each flight may get different payouts depending on the latest statics
|
421
|
+
function calculatePayoutAmounts(
|
422
|
+
Amount premium,
|
423
|
+
uint256[6] memory statistics
|
424
|
+
)
|
425
|
+
public
|
426
|
+
view
|
427
|
+
returns (
|
428
|
+
uint256 weight,
|
429
|
+
Amount[5] memory payoutAmounts,
|
430
|
+
Amount sumInsuredAmount // simply the max of payoutAmounts
|
431
|
+
)
|
432
|
+
{
|
433
|
+
require(premium >= MIN_PREMIUM, "ERROR:FDD-009:INVALID_PREMIUM");
|
434
|
+
require(premium <= MAX_PREMIUM, "ERROR:FDD-010:INVALID_PREMIUM");
|
435
|
+
|
436
|
+
sumInsuredAmount = AmountLib.zero();
|
437
|
+
weight = calculateWeight(statistics);
|
438
|
+
|
439
|
+
for (uint256 i = 0; i < 5; i++) {
|
440
|
+
Amount payoutAmount = AmountLib.toAmount(
|
441
|
+
premium.toInt() * WEIGHT_PATTERN[i + 1] * 10000 / weight);
|
442
|
+
|
443
|
+
// cap payout and update sum insured if applicable
|
444
|
+
if (payoutAmount > MAX_PAYOUT) { payoutAmount = MAX_PAYOUT; }
|
445
|
+
if (payoutAmount > sumInsuredAmount) { sumInsuredAmount = payoutAmount; }
|
446
|
+
|
447
|
+
payoutAmounts[i] = payoutAmount;
|
448
|
+
}
|
449
|
+
}
|
450
|
+
|
451
|
+
|
452
|
+
function getFlightRisk(
|
453
|
+
Str carrierFlightNumber,
|
454
|
+
Timestamp departureTime,
|
455
|
+
Timestamp arrivalTime
|
456
|
+
)
|
457
|
+
public
|
458
|
+
view
|
459
|
+
returns (
|
460
|
+
RiskId riskId,
|
461
|
+
bool exists,
|
462
|
+
FlightRisk memory flightRisk
|
463
|
+
)
|
464
|
+
{
|
465
|
+
riskId = getRiskId(carrierFlightNumber, departureTime, arrivalTime);
|
466
|
+
(exists, flightRisk) = getFlightRisk(riskId);
|
467
|
+
}
|
468
|
+
|
469
|
+
|
470
|
+
function getFlightRisk(RiskId riskId)
|
471
|
+
public
|
472
|
+
view
|
473
|
+
returns (
|
474
|
+
bool exists,
|
475
|
+
FlightRisk memory flightRisk
|
476
|
+
)
|
477
|
+
{
|
478
|
+
// check if risk exists
|
479
|
+
InstanceReader reader = _getInstanceReader();
|
480
|
+
exists = reader.isProductRisk(getNftId(), riskId);
|
481
|
+
|
482
|
+
// get risk data if risk exists
|
483
|
+
if (exists) {
|
484
|
+
flightRisk = abi.decode(
|
485
|
+
reader.getRiskInfo(riskId).data, (FlightRisk));
|
486
|
+
}
|
487
|
+
}
|
488
|
+
|
489
|
+
|
490
|
+
function getRiskId(
|
491
|
+
Str carrierFlightNumber,
|
492
|
+
Timestamp departureTime,
|
493
|
+
Timestamp arrivalTime
|
494
|
+
)
|
495
|
+
public
|
496
|
+
virtual
|
497
|
+
view
|
498
|
+
returns (RiskId riskId)
|
499
|
+
{
|
500
|
+
bytes32 riskKey = _getRiskKey(carrierFlightNumber, departureTime, arrivalTime);
|
501
|
+
riskId = _getRiskId(riskKey);
|
502
|
+
}
|
503
|
+
|
504
|
+
|
505
|
+
function getOracleNftId()
|
506
|
+
public
|
507
|
+
view
|
508
|
+
returns (NftId oracleNftId)
|
509
|
+
{
|
510
|
+
return _oracleNftId;
|
511
|
+
}
|
512
|
+
|
513
|
+
|
514
|
+
//--- internal functions ------------------------------------------------//
|
515
|
+
|
516
|
+
function _checkAndUpdateFlightRisk(
|
517
|
+
Str carrierFlightNumber,
|
518
|
+
Str departureYearMonthDay,
|
519
|
+
Timestamp departureTime,
|
520
|
+
Timestamp arrivalTime,
|
521
|
+
Amount sumInsuredAmount,
|
522
|
+
uint256 weight
|
523
|
+
)
|
524
|
+
internal
|
525
|
+
virtual
|
526
|
+
returns (RiskId riskId)
|
527
|
+
{
|
528
|
+
bool exists;
|
529
|
+
FlightRisk memory flightRisk;
|
530
|
+
(riskId, exists, flightRisk) = getFlightRisk(carrierFlightNumber, departureTime, arrivalTime);
|
531
|
+
|
532
|
+
// first flight for this risk
|
533
|
+
if (!exists) {
|
534
|
+
uint256 multiplier = (uint256(MAX_WEIGHT) * 10000) / weight;
|
535
|
+
|
536
|
+
flightRisk = FlightRisk({
|
537
|
+
carrierFlightNumber: carrierFlightNumber,
|
538
|
+
departureYearMonthDay: departureYearMonthDay,
|
539
|
+
departureTime: departureTime,
|
540
|
+
arrivalTime: arrivalTime,
|
541
|
+
sumOfSumInsuredAmounts: sumInsuredAmount,
|
542
|
+
premiumMultiplier: multiplier,
|
543
|
+
weight: weight,
|
544
|
+
status: bytes1(0),
|
545
|
+
delayMinutes: 0
|
546
|
+
});
|
547
|
+
|
548
|
+
// create new risk including 1st sum insured amount
|
549
|
+
bytes32 riskKey = _getRiskKey(carrierFlightNumber, departureTime, arrivalTime);
|
550
|
+
_createRisk(riskKey, abi.encode(flightRisk));
|
551
|
+
|
552
|
+
// additional flights for this risk
|
553
|
+
} else {
|
554
|
+
// check for cluster risk: additional sum insured amount must not exceed MAX_TOTAL_PAYOUT
|
555
|
+
require (
|
556
|
+
flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount <= MAX_TOTAL_PAYOUT,
|
557
|
+
"ERROR:FDD-006:CLUSTER_RISK"
|
558
|
+
);
|
559
|
+
|
560
|
+
// update existing risk with additional sum insured amount
|
561
|
+
flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
|
562
|
+
_updateRisk(riskId, abi.encode(flightRisk));
|
563
|
+
}
|
564
|
+
}
|
565
|
+
|
566
|
+
|
567
|
+
|
568
|
+
|
569
|
+
function _flightStatusProcess(
|
570
|
+
RequestId requrestId,
|
571
|
+
RiskId riskId,
|
572
|
+
bytes1 status,
|
573
|
+
int256 delayMinutes,
|
574
|
+
uint8 maxPoliciesToProcess
|
575
|
+
)
|
576
|
+
internal
|
577
|
+
virtual
|
578
|
+
{
|
579
|
+
// check risk exists
|
580
|
+
(
|
581
|
+
bool exists,
|
582
|
+
FlightRisk memory flightRisk
|
583
|
+
) = getFlightRisk(riskId);
|
584
|
+
|
585
|
+
if (!exists) {
|
586
|
+
emit LogErrorRiskInvalid(requrestId, riskId);
|
587
|
+
return;
|
588
|
+
}
|
589
|
+
|
590
|
+
uint8 payoutOption = checkAndGetPayoutOption(
|
591
|
+
requrestId, riskId, status, delayMinutes);
|
592
|
+
|
593
|
+
_processPayoutsAndClosePolicies(
|
594
|
+
riskId,
|
595
|
+
payoutOption,
|
596
|
+
maxPoliciesToProcess);
|
597
|
+
|
598
|
+
// logging
|
599
|
+
emit LogFlightStatusProcessed(requrestId, riskId, status, delayMinutes, payoutOption);
|
600
|
+
}
|
601
|
+
|
602
|
+
|
603
|
+
// REMARK caller responsible to check that risk exists.
|
604
|
+
function _processPayoutsAndClosePolicies(
|
605
|
+
RiskId riskId,
|
606
|
+
uint8 payoutOption,
|
607
|
+
uint8 maxPoliciesToProcess
|
608
|
+
)
|
609
|
+
internal
|
610
|
+
virtual
|
611
|
+
{
|
612
|
+
// determine numbers of policies to process
|
613
|
+
InstanceReader reader = _getInstanceReader();
|
614
|
+
uint256 policiesToProcess = reader.policiesForRisk(riskId);
|
615
|
+
policiesToProcess = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
|
616
|
+
|
617
|
+
// go trough policies
|
618
|
+
for (uint256 i = 0; i < policiesToProcess; i++) {
|
619
|
+
NftId policyNftId = reader.getPolicyForRisk(riskId, i);
|
620
|
+
|
621
|
+
// create payout (if any)
|
622
|
+
if (payoutOption < type(uint8).max) {
|
623
|
+
bytes memory applicationData = reader.getPolicyInfo(
|
624
|
+
policyNftId).applicationData;
|
625
|
+
|
626
|
+
_resolvePayout(
|
627
|
+
policyNftId,
|
628
|
+
_getPayoutAmount(
|
629
|
+
applicationData,
|
630
|
+
payoutOption));
|
631
|
+
}
|
632
|
+
|
633
|
+
// expire and close policy
|
634
|
+
_expire(policyNftId, TimestampLib.current());
|
635
|
+
_close(policyNftId);
|
636
|
+
}
|
637
|
+
}
|
638
|
+
|
639
|
+
|
640
|
+
function _getPayoutAmount(
|
641
|
+
bytes memory applicationData,
|
642
|
+
uint8 payoutOption
|
643
|
+
)
|
644
|
+
internal
|
645
|
+
virtual
|
646
|
+
returns (Amount payoutAmount)
|
647
|
+
{
|
648
|
+
// retrieve payout amounts from application data
|
649
|
+
(, Amount[5] memory payoutAmounts) = abi.decode(
|
650
|
+
applicationData, (Amount, Amount[5]));
|
651
|
+
|
652
|
+
// get payout amount for selected option
|
653
|
+
payoutAmount = payoutAmounts[payoutOption];
|
654
|
+
}
|
655
|
+
|
656
|
+
|
657
|
+
function _resolvePayout(
|
658
|
+
NftId policyNftId,
|
659
|
+
Amount payoutAmount
|
660
|
+
)
|
661
|
+
internal
|
662
|
+
virtual
|
663
|
+
{
|
664
|
+
// create confirmed claim
|
665
|
+
ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
|
666
|
+
_confirmClaim(policyNftId, claimId, payoutAmount, "");
|
667
|
+
|
668
|
+
// create and execute payout
|
669
|
+
PayoutId payoutId = _createPayout(policyNftId, claimId, payoutAmount, "");
|
670
|
+
_processPayout(policyNftId, payoutId);
|
671
|
+
}
|
672
|
+
|
673
|
+
|
674
|
+
function _getRiskKey(
|
675
|
+
Str carrierFlightNumber,
|
676
|
+
Timestamp departureTime,
|
677
|
+
Timestamp arrivalTime
|
678
|
+
)
|
679
|
+
internal
|
680
|
+
pure
|
681
|
+
returns (bytes32 riskKey)
|
682
|
+
{
|
683
|
+
return keccak256(abi.encode(carrierFlightNumber, departureTime, arrivalTime));
|
684
|
+
}
|
685
|
+
|
686
|
+
|
687
|
+
function _getRiskId(bytes32 riskKey) internal view returns (RiskId riskId) {
|
688
|
+
return RiskIdLib.toRiskId(getNftId(), riskKey);
|
689
|
+
}
|
690
|
+
|
691
|
+
|
692
|
+
function _initialize(
|
693
|
+
address registry,
|
694
|
+
NftId instanceNftId,
|
695
|
+
string memory componentName,
|
696
|
+
IAuthorization authorization,
|
697
|
+
address initialOwner
|
698
|
+
)
|
699
|
+
internal
|
700
|
+
initializer
|
701
|
+
{
|
702
|
+
_initializeBasicProduct(
|
703
|
+
registry,
|
704
|
+
instanceNftId,
|
705
|
+
componentName,
|
706
|
+
IComponents.ProductInfo({
|
707
|
+
isProcessingFundedClaims: false,
|
708
|
+
isInterceptingPolicyTransfers: false,
|
709
|
+
hasDistribution: false,
|
710
|
+
expectedNumberOfOracles: 1,
|
711
|
+
numberOfOracles: 0,
|
712
|
+
poolNftId: NftIdLib.zero(),
|
713
|
+
distributionNftId: NftIdLib.zero(),
|
714
|
+
oracleNftId: new NftId[](0)
|
715
|
+
}),
|
716
|
+
IComponents.FeeInfo({
|
717
|
+
productFee: FeeLib.zero(),
|
718
|
+
processingFee: FeeLib.zero(),
|
719
|
+
distributionFee: FeeLib.zero(),
|
720
|
+
minDistributionOwnerFee: FeeLib.zero(),
|
721
|
+
poolFee: FeeLib.zero(),
|
722
|
+
stakingFee: FeeLib.zero(),
|
723
|
+
performanceFee: FeeLib.zero()
|
724
|
+
}),
|
725
|
+
authorization,
|
726
|
+
initialOwner); // number of oracles
|
727
|
+
}
|
728
|
+
}
|