@etherisc/gif-next 3.0.0-1b49bd6-565 → 3.0.0-1c2086e-623
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +83 -164
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +119 -117
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +46 -91
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +145 -168
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +150 -126
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +101 -43
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +55 -31
- 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 +85 -83
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +42 -18
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +77 -222
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +65 -41
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +59 -168
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +252 -238
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +154 -144
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +58 -180
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +145 -111
- package/artifacts/contracts/examples/crop/AccountingToken.sol/AccountingToken.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/AccountingToken.sol/AccountingToken.json +376 -0
- package/artifacts/contracts/examples/crop/CropPool.sol/CropPool.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/CropPool.sol/CropPool.json +1391 -0
- package/artifacts/contracts/examples/crop/CropPoolAuthorization.sol/CropPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/CropPoolAuthorization.sol/CropPoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/crop/CropProduct.sol/CropProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/CropProduct.sol/CropProduct.json +2433 -0
- package/artifacts/contracts/examples/crop/CropProductAuthorization.sol/CropProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/CropProductAuthorization.sol/CropProductAuthorization.json +891 -0
- package/artifacts/contracts/examples/crop/Location.sol/LocationLib.dbg.json +4 -0
- package/artifacts/contracts/examples/crop/Location.sol/LocationLib.json +199 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +2 -2
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +108 -245
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +141 -283
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +2 -2
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +221 -86
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +2 -2
- package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +253 -275
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +112 -41
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +112 -249
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +461 -866
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +113 -42
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +2 -2
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +104 -255
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +177 -226
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +124 -256
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +124 -261
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +65 -41
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +69 -77
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +52 -91
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -92
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +82 -158
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +226 -248
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +67 -43
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +186 -44
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +201 -149
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +116 -108
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +171 -121
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +166 -107
- package/artifacts/contracts/instance/RequestSet.sol/RequestSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RequestSet.sol/RequestSet.json +466 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +98 -106
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +9 -9
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.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 +9 -4
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +40 -4
- 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 +152 -195
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +65 -41
- 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 +132 -152
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +102 -93
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +138 -145
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +167 -162
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +133 -115
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +77 -167
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +65 -41
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +149 -203
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -133
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +64 -98
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +75 -178
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +136 -132
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +77 -167
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +244 -26
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +215 -271
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +134 -144
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +81 -156
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +116 -114
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +61 -151
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +65 -41
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +139 -200
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +142 -136
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +50 -89
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +56 -89
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +85 -91
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +47 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +60 -163
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +63 -120
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +148 -182
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +25 -17
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +132 -126
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +98 -165
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +126 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +61 -151
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -205
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +110 -120
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +58 -8
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +86 -179
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +218 -204
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +15 -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 +176 -328
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +221 -242
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +77 -82
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +246 -287
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +114 -119
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +236 -245
- 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 +219 -158
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +56 -32
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +38 -22
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +41 -161
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +552 -180
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +145 -119
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +169 -421
- 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 +1 -1
- 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/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +40 -173
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +40 -173
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +455 -95
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +58 -161
- 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 +30 -3
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +12 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +27 -79
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +12 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +34 -73
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +59 -149
- 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 +36 -17
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +14 -3
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +26 -78
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +37 -3
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +33 -72
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +42 -82
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +30 -70
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +147 -248
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +51 -296
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +200 -317
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +31 -31
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +128 -116
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +22 -5
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +80 -353
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +115 -109
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +234 -242
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +20 -33
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -21
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -7
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
- 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 +2 -7
- 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 +6 -6
- 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 +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +23 -4
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +17 -22
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -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 +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -7
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +6 -19
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{IUpgradeable.sol/IUpgradeable.json → IVersionable.sol/IVersionable.json} +4 -54
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +90 -67
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{Upgradeable.sol/Upgradeable.json → Versionable.sol/Versionable.json} +4 -54
- package/contracts/accounting/AccountingService.sol +22 -33
- package/contracts/accounting/AccountingServiceManager.sol +6 -4
- package/contracts/accounting/IAccountingService.sol +7 -8
- package/contracts/authorization/AccessAdmin.sol +35 -55
- package/contracts/authorization/AccessAdminLib.sol +27 -13
- package/contracts/authorization/AccessManagerCloneable.sol +52 -24
- package/contracts/authorization/Authorization.sol +2 -2
- package/contracts/authorization/IAccessAdmin.sol +11 -10
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +2 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +4 -5
- package/contracts/distribution/Distribution.sol +2 -0
- package/contracts/distribution/DistributionService.sol +44 -43
- package/contracts/distribution/DistributionServiceManager.sol +6 -4
- package/contracts/distribution/IDistributionComponent.sol +0 -2
- package/contracts/distribution/IDistributionService.sol +8 -7
- package/contracts/examples/crop/AccountingToken.sol +26 -0
- package/contracts/examples/crop/CropPool.sol +89 -0
- package/contracts/examples/crop/CropPoolAuthorization.sol +37 -0
- package/contracts/examples/crop/CropProduct.sol +512 -0
- package/contracts/examples/crop/CropProductAuthorization.sol +69 -0
- package/contracts/examples/crop/Location.sol +50 -0
- package/contracts/examples/fire/FirePool.sol +4 -0
- package/contracts/examples/fire/FireProduct.sol +5 -1
- package/contracts/examples/flight/FlightLib.sol +95 -108
- package/contracts/examples/flight/FlightNft.sol +234 -0
- package/contracts/examples/flight/FlightOracle.sol +26 -60
- package/contracts/examples/flight/FlightOracleAuthorization.sol +27 -5
- package/contracts/examples/flight/FlightPool.sol +5 -1
- package/contracts/examples/flight/FlightProduct.sol +292 -252
- package/contracts/examples/flight/FlightProductAuthorization.sol +35 -10
- package/contracts/examples/flight/FlightProductManager.sol +49 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +5 -5
- package/contracts/instance/BaseStore.sol +4 -0
- package/contracts/instance/BundleSet.sol +7 -8
- package/contracts/instance/IBaseStore.sol +8 -0
- package/contracts/instance/IInstance.sol +10 -7
- package/contracts/instance/IInstanceService.sol +11 -4
- package/contracts/instance/Instance.sol +19 -7
- package/contracts/instance/InstanceAdmin.sol +18 -11
- package/contracts/instance/InstanceAuthorizationV3.sol +17 -5
- package/contracts/instance/InstanceReader.sol +70 -23
- package/contracts/instance/InstanceService.sol +88 -54
- package/contracts/instance/InstanceServiceManager.sol +6 -4
- package/contracts/instance/InstanceStore.sol +14 -14
- package/contracts/instance/ProductStore.sol +16 -15
- package/contracts/instance/RequestSet.sol +63 -0
- package/contracts/instance/RiskSet.sol +6 -7
- package/contracts/instance/TargetNames.sol +1 -0
- package/contracts/instance/base/BalanceStore.sol +7 -7
- package/contracts/instance/base/Cloneable.sol +10 -4
- package/contracts/instance/base/ObjectCounter.sol +7 -5
- package/contracts/instance/base/ObjectSet.sol +11 -3
- package/contracts/instance/base/ObjectSetHelperLib.sol +5 -1
- package/contracts/oracle/BasicOracle.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +1 -3
- package/contracts/oracle/IOracleComponent.sol +10 -0
- package/contracts/oracle/IOracleService.sol +9 -5
- package/contracts/oracle/Oracle.sol +54 -29
- package/contracts/oracle/OracleService.sol +89 -56
- package/contracts/oracle/OracleServiceManager.sol +6 -4
- package/contracts/pool/BasicPool.sol +4 -2
- package/contracts/pool/BasicPoolAuthorization.sol +4 -5
- package/contracts/pool/BundleService.sol +22 -28
- package/contracts/pool/BundleServiceManager.sol +7 -5
- package/contracts/pool/IBundleService.sol +9 -10
- package/contracts/pool/IPoolComponent.sol +1 -1
- package/contracts/pool/IPoolService.sol +14 -13
- package/contracts/pool/Pool.sol +3 -1
- package/contracts/pool/PoolLib.sol +102 -5
- package/contracts/pool/PoolService.sol +101 -67
- package/contracts/pool/PoolServiceManager.sol +6 -4
- package/contracts/product/ApplicationService.sol +34 -13
- package/contracts/product/ApplicationServiceManager.sol +6 -4
- package/contracts/product/BasicProduct.sol +2 -0
- package/contracts/product/BasicProductAuthorization.sol +4 -5
- package/contracts/product/ClaimService.sol +35 -11
- package/contracts/product/ClaimServiceManager.sol +7 -5
- package/contracts/product/IApplicationService.sol +8 -8
- package/contracts/product/IClaimService.sol +9 -9
- package/contracts/product/IPolicyService.sol +8 -7
- package/contracts/product/IRiskService.sol +4 -6
- package/contracts/product/PolicyService.sol +58 -45
- package/contracts/product/PolicyServiceLib.sol +5 -3
- package/contracts/product/PolicyServiceManager.sol +6 -4
- package/contracts/product/PricingService.sol +8 -7
- package/contracts/product/PricingServiceManager.sol +6 -4
- package/contracts/product/Product.sol +3 -5
- package/contracts/product/RiskService.sol +43 -16
- package/contracts/product/RiskServiceManager.sol +6 -4
- package/contracts/registry/ChainNft.sol +10 -9
- package/contracts/registry/IRegistry.sol +23 -28
- package/contracts/registry/IRegistryService.sol +14 -10
- package/contracts/registry/IRelease.sol +3 -0
- package/contracts/registry/Registry.sol +93 -136
- package/contracts/registry/RegistryAdmin.sol +29 -12
- package/contracts/registry/RegistryAuthorization.sol +3 -6
- package/contracts/registry/RegistryService.sol +82 -99
- package/contracts/registry/RegistryServiceManager.sol +11 -4
- package/contracts/registry/ReleaseAdmin.sol +27 -13
- package/contracts/registry/ReleaseRegistry.sol +81 -72
- package/contracts/registry/ServiceAuthorizationV3.sol +3 -4
- package/contracts/registry/TokenRegistry.sol +18 -9
- package/contracts/shared/Component.sol +22 -27
- package/contracts/shared/ComponentService.sol +168 -49
- package/contracts/shared/ComponentServiceManager.sol +7 -5
- package/contracts/shared/ContractLib.sol +93 -359
- package/contracts/shared/IComponent.sol +3 -9
- package/contracts/shared/IComponentService.sol +44 -8
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -3
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IRegisterable.sol +3 -14
- package/contracts/shared/IRegistryLinked.sol +3 -1
- package/contracts/shared/IService.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +65 -30
- package/contracts/shared/NftOwnable.sol +22 -9
- package/contracts/shared/PolicyHolder.sol +4 -2
- package/contracts/shared/Registerable.sol +20 -37
- package/contracts/shared/RegistryLinked.sol +23 -4
- package/contracts/shared/Service.sol +9 -8
- package/contracts/shared/TokenHandler.sol +6 -9
- package/contracts/staking/IStaking.sol +35 -33
- package/contracts/staking/IStakingService.sol +7 -16
- package/contracts/staking/Staking.sol +38 -32
- package/contracts/staking/StakingLib.sol +1 -3
- package/contracts/staking/StakingManager.sol +6 -3
- package/contracts/staking/StakingReader.sol +17 -9
- package/contracts/staking/StakingService.sol +15 -19
- package/contracts/staking/StakingServiceManager.sol +8 -4
- package/contracts/staking/StakingStore.sol +11 -11
- package/contracts/staking/TargetHandler.sol +7 -6
- package/contracts/type/RequestId.sol +6 -0
- package/contracts/type/RiskId.sol +8 -8
- package/contracts/type/Version.sol +16 -15
- package/contracts/upgradeability/{IUpgradeable.sol → IVersionable.sol} +19 -13
- package/contracts/upgradeability/ProxyManager.sol +54 -46
- package/contracts/upgradeability/{Upgradeable.sol → Versionable.sol} +14 -25
- package/package.json +3 -3
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -74
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -74
- package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +0 -4
- package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +0 -4
- package/contracts/shared/IVersionable.sol +0 -19
- package/contracts/shared/Versionable.sol +0 -47
@@ -6,10 +6,11 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
|
|
6
6
|
|
7
7
|
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
8
8
|
import {IComponents} from "../../instance/module/IComponents.sol";
|
9
|
+
import {IPolicy} from "../../instance/module/IPolicy.sol";
|
9
10
|
|
10
11
|
import {Amount, AmountLib} from "../../type/Amount.sol";
|
11
|
-
import {BasicProduct} from "../../product/BasicProduct.sol";
|
12
12
|
import {ClaimId} from "../../type/ClaimId.sol";
|
13
|
+
import {Component} from "../../shared/Component.sol";
|
13
14
|
import {FeeLib} from "../../type/Fee.sol";
|
14
15
|
import {FlightLib} from "./FlightLib.sol";
|
15
16
|
import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
|
@@ -17,109 +18,89 @@ import {FlightOracle} from "./FlightOracle.sol";
|
|
17
18
|
import {InstanceReader} from "../../instance/InstanceReader.sol";
|
18
19
|
import {NftId, NftIdLib} from "../../type/NftId.sol";
|
19
20
|
import {PayoutId} from "../../type/PayoutId.sol";
|
21
|
+
import {Product} from "../../product/Product.sol";
|
20
22
|
import {ReferralLib} from "../../type/Referral.sol";
|
21
23
|
import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
|
22
24
|
import {RequestId} from "../../type/RequestId.sol";
|
23
25
|
import {Seconds, SecondsLib} from "../../type/Seconds.sol";
|
24
|
-
import {Str} from "../../type/String.sol";
|
26
|
+
import {Str, StrLib} from "../../type/String.sol";
|
25
27
|
import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
26
28
|
|
27
29
|
|
28
30
|
/// @dev FlightProduct implements the flight delay product.
|
29
31
|
contract FlightProduct is
|
30
|
-
|
32
|
+
Product
|
31
33
|
{
|
32
34
|
|
33
|
-
event
|
34
|
-
event
|
35
|
-
event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
|
36
|
-
event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
|
37
|
-
|
38
|
-
// TODO convert error logs to custom errors
|
39
|
-
event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
|
40
|
-
event LogPolicyExpired(bytes32 bpKey);
|
35
|
+
event LogFlightPolicyPurchased(NftId policyNftId, string flightData, Amount premiumAmount);
|
36
|
+
event LogFlightPolicyClosed(NftId policyNftId, Amount payoutAmount);
|
41
37
|
|
42
|
-
event
|
43
|
-
event
|
44
|
-
event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
|
45
|
-
|
46
|
-
error ErrorApplicationDataSignatureMismatch(address expectedSigner, address actualSigner);
|
47
|
-
error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
|
48
|
-
error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
|
49
|
-
error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
|
50
|
-
error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
|
51
|
-
error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
|
52
|
-
error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
|
53
|
-
error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
|
54
|
-
error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
|
38
|
+
event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
|
39
|
+
event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
|
55
40
|
|
56
41
|
// solhint-disable
|
57
|
-
|
58
|
-
|
42
|
+
Amount public MIN_PREMIUM;
|
43
|
+
Amount public MAX_PREMIUM;
|
44
|
+
Amount public MAX_PAYOUT;
|
45
|
+
Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight/risk
|
46
|
+
|
59
47
|
// Minimum time before departure for applying
|
60
|
-
Seconds public MIN_TIME_BEFORE_DEPARTURE
|
48
|
+
Seconds public MIN_TIME_BEFORE_DEPARTURE;
|
61
49
|
// Maximum time before departure for applying
|
62
|
-
Seconds public MAX_TIME_BEFORE_DEPARTURE
|
50
|
+
Seconds public MAX_TIME_BEFORE_DEPARTURE;
|
63
51
|
// Maximum duration of flight
|
64
|
-
Seconds public MAX_FLIGHT_DURATION
|
65
|
-
// Check for delay after .. minutes after scheduled arrival
|
66
|
-
Seconds public CHECK_OFFSET = SecondsLib.fromHours(1);
|
52
|
+
Seconds public MAX_FLIGHT_DURATION;
|
67
53
|
// Max time to process claims after departure
|
68
|
-
Seconds public LIFETIME
|
69
|
-
|
70
|
-
// uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
|
71
|
-
// All amounts in cent = multiplier is 10 ** 16!
|
72
|
-
Amount public MIN_PREMIUM;
|
73
|
-
Amount public MAX_PREMIUM;
|
74
|
-
Amount public MAX_PAYOUT;
|
75
|
-
Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight is 3x max payout.
|
54
|
+
Seconds public LIFETIME;
|
76
55
|
|
56
|
+
// ['observations','late15','late30','late45','cancelled','diverted']
|
57
|
+
// no payouts for delays of 30' or less
|
58
|
+
uint8[6] public WEIGHT_PATTERN;
|
59
|
+
// Minimum number of observations for valid prediction/premium calculation
|
60
|
+
uint256 public MIN_OBSERVATIONS;
|
77
61
|
// Maximum cumulated weighted premium per risk
|
78
|
-
uint256 public MARGIN_PERCENT
|
79
|
-
|
62
|
+
uint256 public MARGIN_PERCENT;
|
80
63
|
// Maximum number of policies to process in one callback
|
81
|
-
uint8 public MAX_POLICIES_TO_PROCESS
|
64
|
+
uint8 public MAX_POLICIES_TO_PROCESS;
|
65
|
+
// solhint-enable
|
82
66
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
67
|
+
bool internal _testMode;
|
68
|
+
|
69
|
+
mapping(RiskId riskId => RequestId requestId) internal _requests;
|
70
|
+
mapping(bytes32 encodedRisk => RiskId) internal _risks;
|
87
71
|
|
88
72
|
// GIF V3 specifics
|
89
73
|
NftId internal _defaultBundleNftId;
|
90
|
-
|
91
|
-
// TODO add product (base contract) functions
|
92
|
-
// - getOracleNftId(idx)
|
93
|
-
// - getDistributionNftId()
|
94
|
-
// - getPoolNftId()
|
95
|
-
NftId internal _oracleNftId; // TODO refactor to getOracleNftId(0)
|
96
|
-
// solhint-enable
|
97
|
-
|
98
|
-
FlightMessageVerifier internal _flightMessageVerifier;
|
74
|
+
NftId internal _oracleNftId;
|
99
75
|
|
100
76
|
|
101
77
|
struct FlightRisk {
|
102
78
|
Str flightData; // example: "LX 180 ZRH BKK 20241104"
|
103
79
|
Timestamp departureTime;
|
80
|
+
// this field contains static data required by the frontend and is not directly used by the product
|
81
|
+
string departureTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
104
82
|
Timestamp arrivalTime;
|
83
|
+
// this field contains static data required by the frontend and is not directly used by the product
|
84
|
+
string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
|
105
85
|
Amount sumOfSumInsuredAmounts;
|
106
|
-
// uint256 premiumMultiplier; // what is this? UFixed?
|
107
|
-
// uint256 weight; // what is this? UFixed?
|
108
86
|
bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
|
109
87
|
int256 delayMinutes;
|
88
|
+
uint8 payoutOption;
|
89
|
+
Timestamp statusUpdatedAt;
|
110
90
|
}
|
111
91
|
|
92
|
+
|
112
93
|
struct ApplicationData {
|
113
|
-
|
94
|
+
string flightData;
|
114
95
|
Timestamp departureTime;
|
96
|
+
string departureTimeLocal;
|
115
97
|
Timestamp arrivalTime;
|
98
|
+
string arrivalTimeLocal;
|
116
99
|
Amount premiumAmount;
|
117
100
|
uint256[6] statistics;
|
118
|
-
uint8 v;
|
119
|
-
bytes32 r;
|
120
|
-
bytes32 s;
|
121
101
|
}
|
122
102
|
|
103
|
+
|
123
104
|
struct PermitData {
|
124
105
|
address owner;
|
125
106
|
address spender;
|
@@ -132,23 +113,23 @@ contract FlightProduct is
|
|
132
113
|
|
133
114
|
|
134
115
|
constructor(
|
135
|
-
|
116
|
+
address registry,
|
117
|
+
NftId instanceNftId,
|
136
118
|
string memory componentName,
|
137
|
-
IAuthorization authorization
|
138
|
-
FlightMessageVerifier messageVerifier
|
119
|
+
IAuthorization authorization
|
139
120
|
)
|
140
121
|
{
|
141
122
|
address initialOwner = msg.sender;
|
142
123
|
|
143
124
|
_initialize(
|
144
|
-
|
125
|
+
registry,
|
126
|
+
instanceNftId,
|
145
127
|
componentName,
|
146
128
|
authorization,
|
147
129
|
initialOwner);
|
148
|
-
|
149
|
-
_flightMessageVerifier = messageVerifier;
|
150
130
|
}
|
151
131
|
|
132
|
+
|
152
133
|
//--- external functions ------------------------------------------------//
|
153
134
|
//--- unpermissioned functions ------------------------------------------//
|
154
135
|
|
@@ -159,6 +140,7 @@ contract FlightProduct is
|
|
159
140
|
getNftId()).oracleNftId[0];
|
160
141
|
}
|
161
142
|
|
143
|
+
|
162
144
|
function calculatePayoutAmounts(
|
163
145
|
FlightProduct flightProduct,
|
164
146
|
Amount premium,
|
@@ -195,30 +177,156 @@ contract FlightProduct is
|
|
195
177
|
)
|
196
178
|
{
|
197
179
|
// process permit data
|
198
|
-
|
180
|
+
_processPermit(permit);
|
199
181
|
|
200
182
|
// create policy
|
201
183
|
address policyHolder = permit.owner;
|
202
184
|
(
|
203
185
|
riskId,
|
204
186
|
policyNftId
|
205
|
-
) =
|
187
|
+
) = _createPolicy(
|
206
188
|
policyHolder,
|
207
|
-
application.flightData,
|
189
|
+
StrLib.toStr(application.flightData),
|
208
190
|
application.departureTime,
|
191
|
+
application.departureTimeLocal,
|
209
192
|
application.arrivalTime,
|
193
|
+
application.arrivalTimeLocal,
|
210
194
|
application.premiumAmount,
|
211
195
|
application.statistics);
|
212
|
-
// application.v,
|
213
|
-
// application.r,
|
214
|
-
// application.s);
|
215
196
|
}
|
216
197
|
|
217
198
|
|
218
|
-
|
219
|
-
|
199
|
+
/// @dev Callback for flight status oracle.
|
200
|
+
/// Function may only be alled by oracle service.
|
201
|
+
function flightStatusCallback(
|
202
|
+
RequestId requestId,
|
203
|
+
bytes memory responseData
|
204
|
+
)
|
205
|
+
external
|
206
|
+
virtual
|
207
|
+
restricted()
|
208
|
+
{
|
209
|
+
FlightOracle.FlightStatusResponse memory response = abi.decode(
|
210
|
+
responseData, (FlightOracle.FlightStatusResponse));
|
211
|
+
|
212
|
+
_processFlightStatus(
|
213
|
+
requestId,
|
214
|
+
response.riskId,
|
215
|
+
response.status,
|
216
|
+
response.delayMinutes);
|
217
|
+
}
|
218
|
+
|
219
|
+
|
220
|
+
function resendResponse(RequestId requestId)
|
221
|
+
external
|
222
|
+
virtual
|
223
|
+
restricted()
|
224
|
+
{
|
225
|
+
_resendResponse(requestId);
|
226
|
+
}
|
227
|
+
|
228
|
+
|
229
|
+
/// @dev Manual fallback function for product owner.
|
230
|
+
function processPayoutsAndClosePolicies(
|
231
|
+
RiskId riskId,
|
232
|
+
uint8 maxPoliciesToProcess
|
233
|
+
)
|
234
|
+
external
|
235
|
+
virtual
|
236
|
+
restricted()
|
237
|
+
onlyOwner()
|
238
|
+
{
|
239
|
+
_processPayoutsAndClosePolicies(
|
240
|
+
riskId,
|
241
|
+
maxPoliciesToProcess);
|
242
|
+
}
|
243
|
+
|
244
|
+
|
245
|
+
//--- owner functions ---------------------------------------------------//
|
246
|
+
|
247
|
+
/// @dev Call after product registration with the instance
|
248
|
+
/// when the product token/tokenhandler is available
|
249
|
+
function setConstants(
|
250
|
+
Amount minPremium,
|
251
|
+
Amount maxPremium,
|
252
|
+
Amount maxPayout,
|
253
|
+
Amount maxTotalPayout,
|
254
|
+
Seconds minTimeBeforeDeparture,
|
255
|
+
Seconds maxTimeBeforeDeparture,
|
256
|
+
uint8 maxPoliciesToProcess
|
257
|
+
)
|
258
|
+
external
|
259
|
+
virtual
|
260
|
+
restricted()
|
261
|
+
onlyOwner()
|
262
|
+
{
|
263
|
+
MIN_PREMIUM = minPremium;
|
264
|
+
MAX_PREMIUM = maxPremium;
|
265
|
+
MAX_PAYOUT = maxPayout;
|
266
|
+
MAX_TOTAL_PAYOUT = maxTotalPayout;
|
267
|
+
|
268
|
+
MIN_TIME_BEFORE_DEPARTURE = minTimeBeforeDeparture;
|
269
|
+
MAX_TIME_BEFORE_DEPARTURE = maxTimeBeforeDeparture;
|
270
|
+
MAX_POLICIES_TO_PROCESS = maxPoliciesToProcess;
|
271
|
+
}
|
272
|
+
|
273
|
+
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
274
|
+
function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
|
275
|
+
|
276
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
277
|
+
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
278
|
+
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
279
|
+
|
280
|
+
|
281
|
+
//--- view functions ----------------------------------------------------//
|
282
|
+
|
283
|
+
function calculateNetPremium(
|
284
|
+
Amount, // sumInsuredAmount: not used in this product
|
285
|
+
RiskId, // riskId: not used in this product
|
286
|
+
Seconds, // lifetime: not used in this product, a flight is a one time risk
|
287
|
+
bytes memory applicationData // holds the premium amount the customer is willing to pay
|
288
|
+
)
|
289
|
+
external
|
290
|
+
virtual override
|
291
|
+
view
|
292
|
+
returns (Amount netPremiumAmount)
|
293
|
+
{
|
294
|
+
(netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
|
295
|
+
}
|
296
|
+
|
297
|
+
|
298
|
+
function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
|
299
|
+
function isTestMode() public view returns (bool) { return _testMode; }
|
300
|
+
|
301
|
+
|
302
|
+
function getFlightRisk(
|
303
|
+
RiskId riskId,
|
304
|
+
bool requireRiskExists
|
220
305
|
)
|
221
306
|
public
|
307
|
+
view
|
308
|
+
returns (
|
309
|
+
bool exists,
|
310
|
+
FlightRisk memory flightRisk
|
311
|
+
)
|
312
|
+
{
|
313
|
+
(exists, flightRisk) = FlightLib.getFlightRisk(
|
314
|
+
_getInstanceReader(),
|
315
|
+
getNftId(),
|
316
|
+
riskId,
|
317
|
+
requireRiskExists);
|
318
|
+
}
|
319
|
+
|
320
|
+
function getRequestForRisk(RiskId riskId) public view returns (RequestId requestId) { return _requests[riskId]; }
|
321
|
+
function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
|
322
|
+
|
323
|
+
//--- internal functions ------------------------------------------------//
|
324
|
+
|
325
|
+
|
326
|
+
function _processPermit(
|
327
|
+
PermitData memory permit
|
328
|
+
)
|
329
|
+
internal
|
222
330
|
virtual
|
223
331
|
restricted()
|
224
332
|
{
|
@@ -236,21 +344,18 @@ contract FlightProduct is
|
|
236
344
|
}
|
237
345
|
|
238
346
|
|
239
|
-
function
|
347
|
+
function _createPolicy(
|
240
348
|
address policyHolder,
|
241
349
|
Str flightData,
|
242
350
|
Timestamp departureTime,
|
351
|
+
string memory departureTimeLocal,
|
243
352
|
Timestamp arrivalTime,
|
353
|
+
string memory arrivalTimeLocal,
|
244
354
|
Amount premiumAmount,
|
245
355
|
uint256[6] memory statistics
|
246
|
-
// signature fields
|
247
|
-
// uint8 v,
|
248
|
-
// bytes32 r,
|
249
|
-
// bytes32 s
|
250
356
|
)
|
251
|
-
|
357
|
+
internal
|
252
358
|
virtual
|
253
|
-
restricted()
|
254
359
|
returns (
|
255
360
|
RiskId riskId,
|
256
361
|
NftId policyNftId
|
@@ -258,20 +363,20 @@ contract FlightProduct is
|
|
258
363
|
{
|
259
364
|
// checks
|
260
365
|
// disabled for now - using rbac for security
|
261
|
-
FlightLib.
|
366
|
+
FlightLib.checkApplicationData(
|
262
367
|
this,
|
263
368
|
flightData,
|
264
369
|
departureTime,
|
265
370
|
arrivalTime,
|
266
|
-
premiumAmount
|
267
|
-
statistics);
|
268
|
-
// v, r, s);
|
371
|
+
premiumAmount);
|
269
372
|
|
270
373
|
(riskId, policyNftId) = _prepareApplication(
|
271
374
|
policyHolder,
|
272
375
|
flightData,
|
273
376
|
departureTime,
|
377
|
+
departureTimeLocal,
|
274
378
|
arrivalTime,
|
379
|
+
arrivalTimeLocal,
|
275
380
|
premiumAmount,
|
276
381
|
statistics);
|
277
382
|
|
@@ -285,17 +390,21 @@ contract FlightProduct is
|
|
285
390
|
policyNftId,
|
286
391
|
departureTime); // activate at scheduled departure time of flight
|
287
392
|
|
288
|
-
// send oracle request for flight status (interacts with flight oracle contract)
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
393
|
+
// send oracle request for for new risk to obtain flight status (interacts with flight oracle contract)
|
394
|
+
if (_requests[riskId].eqz()) {
|
395
|
+
_requests[riskId] = _sendRequest(
|
396
|
+
_oracleNftId,
|
397
|
+
abi.encode(
|
398
|
+
FlightOracle.FlightStatusRequest(
|
399
|
+
riskId,
|
400
|
+
flightData,
|
401
|
+
departureTime)),
|
402
|
+
// allow up to 30 days to process the claim
|
403
|
+
arrivalTime.addSeconds(SecondsLib.fromDays(30)),
|
404
|
+
"flightStatusCallback");
|
405
|
+
}
|
406
|
+
|
407
|
+
emit LogFlightPolicyPurchased(policyNftId, flightData.toString(), premiumAmount);
|
299
408
|
}
|
300
409
|
|
301
410
|
|
@@ -303,7 +412,9 @@ contract FlightProduct is
|
|
303
412
|
address policyHolder,
|
304
413
|
Str flightData,
|
305
414
|
Timestamp departureTime,
|
415
|
+
string memory departureTimeLocal,
|
306
416
|
Timestamp arrivalTime,
|
417
|
+
string memory arrivalTimeLocal,
|
307
418
|
Amount premiumAmount,
|
308
419
|
uint256[6] memory statistics
|
309
420
|
)
|
@@ -324,7 +435,9 @@ contract FlightProduct is
|
|
324
435
|
) = _createRiskAndPayoutAmounts(
|
325
436
|
flightData,
|
326
437
|
departureTime,
|
438
|
+
departureTimeLocal,
|
327
439
|
arrivalTime,
|
440
|
+
arrivalTimeLocal,
|
328
441
|
premiumAmount,
|
329
442
|
statistics);
|
330
443
|
|
@@ -342,120 +455,12 @@ contract FlightProduct is
|
|
342
455
|
}
|
343
456
|
|
344
457
|
|
345
|
-
/// @dev Callback for flight status oracle.
|
346
|
-
/// Function may only be alled by oracle service.
|
347
|
-
function flightStatusCallback(
|
348
|
-
RequestId requestId,
|
349
|
-
bytes memory responseData
|
350
|
-
)
|
351
|
-
external
|
352
|
-
virtual
|
353
|
-
restricted()
|
354
|
-
{
|
355
|
-
FlightOracle.FlightStatusResponse memory response = abi.decode(
|
356
|
-
responseData, (FlightOracle.FlightStatusResponse));
|
357
|
-
|
358
|
-
_processFlightStatus(
|
359
|
-
requestId,
|
360
|
-
response.riskId,
|
361
|
-
response.status,
|
362
|
-
response.delayMinutes,
|
363
|
-
MAX_POLICIES_TO_PROCESS);
|
364
|
-
}
|
365
|
-
|
366
|
-
|
367
|
-
/// @dev Manual fallback function for product owner.
|
368
|
-
function processFlightStatus(
|
369
|
-
RequestId requestId,
|
370
|
-
RiskId riskId,
|
371
|
-
bytes1 status,
|
372
|
-
int256 delayMinutes,
|
373
|
-
uint8 maxPoliciesToProcess
|
374
|
-
)
|
375
|
-
external
|
376
|
-
virtual
|
377
|
-
restricted()
|
378
|
-
onlyOwner()
|
379
|
-
{
|
380
|
-
_processFlightStatus(
|
381
|
-
requestId,
|
382
|
-
riskId,
|
383
|
-
status,
|
384
|
-
delayMinutes,
|
385
|
-
maxPoliciesToProcess);
|
386
|
-
}
|
387
|
-
|
388
|
-
//--- owner functions ---------------------------------------------------//
|
389
|
-
|
390
|
-
/// @dev Call after product registration with the instance, when the product token/tokenhandler is available
|
391
|
-
function completeSetup()
|
392
|
-
external
|
393
|
-
virtual
|
394
|
-
restricted()
|
395
|
-
onlyOwner()
|
396
|
-
{
|
397
|
-
IERC20Metadata token = IERC20Metadata(getToken());
|
398
|
-
uint256 tokenMultiplier = 10 ** token.decimals();
|
399
|
-
|
400
|
-
MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
|
401
|
-
MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
|
402
|
-
MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
|
403
|
-
MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
|
404
|
-
}
|
405
|
-
|
406
|
-
|
407
|
-
function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
|
408
|
-
function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
|
409
|
-
function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
|
410
|
-
function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
|
411
|
-
|
412
|
-
|
413
|
-
//--- view functions ----------------------------------------------------//
|
414
|
-
|
415
|
-
|
416
|
-
function calculateNetPremium(
|
417
|
-
Amount, // sumInsuredAmount: not used in this product
|
418
|
-
RiskId, // riskId: not used in this product
|
419
|
-
Seconds, // lifetime: not used in this product, a flight is a one time risk
|
420
|
-
bytes memory applicationData // holds the premium amount the customer is willing to pay
|
421
|
-
)
|
422
|
-
external
|
423
|
-
virtual override
|
424
|
-
view
|
425
|
-
returns (Amount netPremiumAmount)
|
426
|
-
{
|
427
|
-
(netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
|
428
|
-
}
|
429
|
-
|
430
|
-
|
431
|
-
function getFlightMessageVerifier()
|
432
|
-
external
|
433
|
-
view
|
434
|
-
returns (FlightMessageVerifier)
|
435
|
-
{
|
436
|
-
return _flightMessageVerifier;
|
437
|
-
}
|
438
|
-
|
439
|
-
|
440
|
-
function getOracleNftId()
|
441
|
-
public
|
442
|
-
view
|
443
|
-
returns (NftId oracleNftId)
|
444
|
-
{
|
445
|
-
return _oracleNftId;
|
446
|
-
}
|
447
|
-
|
448
|
-
function decodeFlightRiskData(bytes memory data) external pure returns (FlightRisk memory) {
|
449
|
-
return abi.decode(data, (FlightRisk));
|
450
|
-
}
|
451
|
-
|
452
|
-
//--- internal functions ------------------------------------------------//
|
453
|
-
|
454
|
-
|
455
458
|
function _createRiskAndPayoutAmounts(
|
456
459
|
Str flightData,
|
457
460
|
Timestamp departureTime,
|
461
|
+
string memory departureTimeLocal,
|
458
462
|
Timestamp arrivalTime,
|
463
|
+
string memory arrivalTimeLocal,
|
459
464
|
Amount premiumAmount,
|
460
465
|
uint256[6] memory statistics
|
461
466
|
)
|
@@ -481,7 +486,9 @@ contract FlightProduct is
|
|
481
486
|
riskId = _checkAndUpdateFlightRisk(
|
482
487
|
flightData,
|
483
488
|
departureTime,
|
489
|
+
departureTimeLocal,
|
484
490
|
arrivalTime,
|
491
|
+
arrivalTimeLocal,
|
485
492
|
sumInsuredAmount,
|
486
493
|
weight);
|
487
494
|
}
|
@@ -490,7 +497,9 @@ contract FlightProduct is
|
|
490
497
|
function _checkAndUpdateFlightRisk(
|
491
498
|
Str flightData,
|
492
499
|
Timestamp departureTime,
|
500
|
+
string memory departureTimeLocal,
|
493
501
|
Timestamp arrivalTime,
|
502
|
+
string memory arrivalTimeLocal,
|
494
503
|
Amount sumInsuredAmount,
|
495
504
|
uint256 weight
|
496
505
|
)
|
@@ -499,24 +508,28 @@ contract FlightProduct is
|
|
499
508
|
returns (RiskId riskId)
|
500
509
|
{
|
501
510
|
bool exists;
|
502
|
-
FlightRisk memory flightRisk
|
503
|
-
(riskId, exists, flightRisk) = FlightLib.getFlightRisk(
|
504
|
-
_getInstanceReader(),
|
505
|
-
getNftId(),
|
511
|
+
FlightRisk memory flightRisk = FlightLib.getFlightRisk(
|
506
512
|
flightData,
|
507
513
|
departureTime,
|
508
|
-
|
514
|
+
departureTimeLocal,
|
515
|
+
arrivalTime,
|
516
|
+
arrivalTimeLocal);
|
517
|
+
|
518
|
+
bytes32 riskKey = FlightLib.getRiskKey(flightData);
|
519
|
+
exists = _risks[riskKey].gtz();
|
509
520
|
|
510
521
|
// create risk, if new
|
511
522
|
if (!exists) {
|
512
|
-
|
513
|
-
|
523
|
+
riskId = _createRisk(abi.encode(flightRisk));
|
524
|
+
_risks[riskKey] = riskId;
|
525
|
+
} else {
|
526
|
+
riskId = _risks[riskKey];
|
514
527
|
}
|
515
528
|
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
529
|
+
FlightLib.checkClusterRisk(
|
530
|
+
flightRisk.sumOfSumInsuredAmounts,
|
531
|
+
sumInsuredAmount,
|
532
|
+
MAX_TOTAL_PAYOUT);
|
520
533
|
|
521
534
|
// update existing risk with additional sum insured amount
|
522
535
|
flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
|
@@ -528,71 +541,85 @@ contract FlightProduct is
|
|
528
541
|
RequestId requestId,
|
529
542
|
RiskId riskId,
|
530
543
|
bytes1 status,
|
531
|
-
int256 delayMinutes
|
532
|
-
uint8 maxPoliciesToProcess
|
544
|
+
int256 delayMinutes
|
533
545
|
)
|
534
546
|
internal
|
535
547
|
virtual
|
536
548
|
{
|
537
549
|
// check risk exists
|
538
|
-
|
539
|
-
(
|
540
|
-
bool exists,
|
541
|
-
FlightRisk memory flightRisk
|
542
|
-
) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
|
550
|
+
(, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
|
543
551
|
|
544
|
-
if
|
545
|
-
|
546
|
-
|
547
|
-
|
552
|
+
// update status, if not yet set
|
553
|
+
if (flightRisk.statusUpdatedAt.eqz()) {
|
554
|
+
flightRisk.statusUpdatedAt = TimestampLib.current();
|
555
|
+
flightRisk.status = status;
|
556
|
+
flightRisk.delayMinutes = delayMinutes;
|
557
|
+
flightRisk.payoutOption = FlightLib.checkAndGetPayoutOption(
|
558
|
+
requestId, riskId, status, delayMinutes);
|
548
559
|
|
549
|
-
|
550
|
-
|
560
|
+
_updateRisk(riskId, abi.encode(flightRisk));
|
561
|
+
}
|
551
562
|
|
552
|
-
_processPayoutsAndClosePolicies(
|
563
|
+
(,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
|
553
564
|
riskId,
|
554
|
-
|
555
|
-
maxPoliciesToProcess);
|
565
|
+
MAX_POLICIES_TO_PROCESS);
|
556
566
|
|
557
567
|
// logging
|
558
568
|
emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
|
559
569
|
}
|
560
570
|
|
561
571
|
|
562
|
-
// REMARK caller responsible to check that risk exists.
|
563
572
|
function _processPayoutsAndClosePolicies(
|
564
573
|
RiskId riskId,
|
565
|
-
uint8 payoutOption,
|
566
574
|
uint8 maxPoliciesToProcess
|
567
575
|
)
|
568
576
|
internal
|
569
577
|
virtual
|
578
|
+
returns (
|
579
|
+
bool riskExists,
|
580
|
+
bool statusAvailable,
|
581
|
+
uint8 payoutOption
|
582
|
+
)
|
570
583
|
{
|
571
584
|
// determine numbers of policies to process
|
572
585
|
InstanceReader reader = _getInstanceReader();
|
586
|
+
(riskExists, statusAvailable, payoutOption) = FlightLib.getPayoutOption(reader, getNftId(), riskId);
|
587
|
+
|
588
|
+
// return with default values if risk does not exist or status is not yet available
|
589
|
+
if (!riskExists || !statusAvailable) {
|
590
|
+
return (riskExists, statusAvailable, payoutOption);
|
591
|
+
}
|
592
|
+
|
573
593
|
uint256 policiesToProcess = reader.policiesForRisk(riskId);
|
574
|
-
|
594
|
+
uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
|
575
595
|
|
576
|
-
//
|
577
|
-
|
578
|
-
|
596
|
+
// assemble array with policies to process
|
597
|
+
NftId [] memory policies = new NftId[](policiesProcessed);
|
598
|
+
for (uint256 i = 0; i < policiesProcessed; i++) {
|
599
|
+
policies[i] = reader.getPolicyForRisk(riskId, i);
|
600
|
+
}
|
579
601
|
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
602
|
+
// go through policies
|
603
|
+
for (uint256 i = 0; i < policiesProcessed; i++) {
|
604
|
+
NftId policyNftId = policies[i];
|
605
|
+
Amount payoutAmount = FlightLib.getPayoutAmount(
|
606
|
+
reader.getPolicyInfo(policyNftId).applicationData,
|
607
|
+
payoutOption);
|
584
608
|
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
payoutOption));
|
590
|
-
}
|
609
|
+
// create claim/payout (if applicable)
|
610
|
+
_resolvePayout(
|
611
|
+
policyNftId,
|
612
|
+
payoutAmount);
|
591
613
|
|
592
614
|
// expire and close policy
|
593
615
|
_expire(policyNftId, TimestampLib.current());
|
594
616
|
_close(policyNftId);
|
617
|
+
|
618
|
+
emit LogFlightPolicyClosed(policyNftId, payoutAmount);
|
595
619
|
}
|
620
|
+
|
621
|
+
// logging
|
622
|
+
emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
|
596
623
|
}
|
597
624
|
|
598
625
|
|
@@ -603,6 +630,11 @@ contract FlightProduct is
|
|
603
630
|
internal
|
604
631
|
virtual
|
605
632
|
{
|
633
|
+
// no action if no payout
|
634
|
+
if (payoutAmount.eqz()) {
|
635
|
+
return;
|
636
|
+
}
|
637
|
+
|
606
638
|
// create confirmed claim
|
607
639
|
ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
|
608
640
|
_confirmClaim(policyNftId, claimId, payoutAmount, "");
|
@@ -614,15 +646,17 @@ contract FlightProduct is
|
|
614
646
|
|
615
647
|
|
616
648
|
function _initialize(
|
649
|
+
address registry,
|
617
650
|
NftId instanceNftId,
|
618
651
|
string memory componentName,
|
619
652
|
IAuthorization authorization,
|
620
653
|
address initialOwner
|
621
654
|
)
|
622
655
|
internal
|
623
|
-
initializer
|
656
|
+
initializer()
|
624
657
|
{
|
625
|
-
|
658
|
+
__Product_init(
|
659
|
+
registry,
|
626
660
|
instanceNftId,
|
627
661
|
componentName,
|
628
662
|
IComponents.ProductInfo({
|
@@ -646,5 +680,11 @@ contract FlightProduct is
|
|
646
680
|
}),
|
647
681
|
authorization,
|
648
682
|
initialOwner); // number of oracles
|
683
|
+
|
684
|
+
MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
|
685
|
+
LIFETIME = SecondsLib.fromDays(30);
|
686
|
+
WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
|
687
|
+
MIN_OBSERVATIONS = 10;
|
688
|
+
MARGIN_PERCENT = 30;
|
649
689
|
}
|
650
690
|
}
|