@etherisc/gif-next 3.0.0-15742bc-193 → 3.0.0-17f9d19-793
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +42 -56
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +32 -36
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +14 -20
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +44 -56
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +42 -29
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +2 -96
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -94
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +157 -72
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +63 -63
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -94
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +85 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/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 +12 -87
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +47 -127
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/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 +248 -84
- 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 +185 -105
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +14 -89
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +444 -744
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +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 +15 -109
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +12 -87
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +16 -91
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +18 -93
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +61 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +119 -131
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +93 -34
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +102 -25
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +29 -29
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +82 -32
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +68 -18
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/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 +2 -77
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -75
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -75
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +38 -38
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +0 -75
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +32 -20
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +50 -50
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +12 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +0 -75
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +12 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +0 -75
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +4 -9
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -24
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +51 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +32 -32
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -75
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -55
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +12 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -75
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +56 -44
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +48 -48
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +2 -2
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +39 -39
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +0 -75
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +30 -30
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +6 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +47 -37
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +113 -125
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -27
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +25 -25
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +123 -135
- 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 +106 -96
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +19 -19
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -75
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +328 -56
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -49
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +558 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -75
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +272 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -75
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/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 +0 -75
- 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 +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +23 -50
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +9 -36
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +28 -28
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +25 -75
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +12 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +73 -123
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -7
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +41 -41
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -14
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +28 -28
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -7
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -7
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
- 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 +1 -1
- package/contracts/accounting/AccountingService.sol +17 -29
- package/contracts/accounting/IAccountingService.sol +7 -8
- package/contracts/authorization/AccessAdmin.sol +6 -25
- package/contracts/authorization/AccessAdminLib.sol +20 -3
- package/contracts/authorization/AccessManagerCloneable.sol +4 -0
- package/contracts/distribution/DistributionService.sol +5 -3
- package/contracts/distribution/IDistributionComponent.sol +0 -2
- package/contracts/distribution/IDistributionService.sol +4 -3
- package/contracts/examples/flight/FlightLib.sol +90 -75
- package/contracts/examples/flight/FlightNft.sol +234 -0
- package/contracts/examples/flight/FlightOracle.sol +68 -9
- package/contracts/examples/flight/FlightOracleAuthorization.sol +28 -5
- package/contracts/examples/flight/FlightPool.sol +1 -1
- package/contracts/examples/flight/FlightProduct.sol +283 -247
- package/contracts/examples/flight/FlightProductAuthorization.sol +35 -10
- package/contracts/examples/flight/FlightProductManager.sol +49 -0
- package/contracts/instance/BaseStore.sol +4 -0
- package/contracts/instance/IBaseStore.sol +8 -0
- package/contracts/instance/IInstanceService.sol +2 -0
- package/contracts/instance/InstanceAdmin.sol +0 -1
- package/contracts/instance/InstanceReader.sol +19 -5
- package/contracts/instance/InstanceService.sol +4 -0
- package/contracts/oracle/BasicOracle.sol +1 -0
- package/contracts/oracle/Oracle.sol +2 -2
- package/contracts/pool/BundleService.sol +1 -1
- package/contracts/pool/IBundleService.sol +1 -1
- package/contracts/pool/IPoolService.sol +1 -1
- package/contracts/pool/PoolService.sol +1 -1
- package/contracts/product/IPolicyService.sol +1 -1
- package/contracts/product/PolicyService.sol +1 -1
- package/contracts/product/PolicyServiceLib.sol +5 -3
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +1 -1
- package/contracts/registry/Registry.sol +5 -3
- package/contracts/registry/RegistryAdmin.sol +7 -1
- package/contracts/registry/RegistryAuthorization.sol +0 -2
- package/contracts/registry/ReleaseAdmin.sol +8 -1
- package/contracts/shared/ComponentService.sol +36 -2
- package/contracts/shared/IAuthorizedComponent.sol +15 -0
- package/contracts/shared/IComponent.sol +0 -4
- package/contracts/shared/IComponentService.sol +24 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
- package/contracts/shared/InstanceLinkedComponent.sol +2 -1
- package/contracts/staking/IStaking.sol +2 -0
- package/contracts/staking/IStakingService.sol +1 -1
- package/contracts/staking/Staking.sol +1 -0
- package/contracts/staking/StakingService.sol +1 -1
- package/package.json +3 -3
| @@ -9,7 +9,7 @@ import {InstanceStore} from "../instance/InstanceStore.sol"; | |
| 9 9 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 10 10 | 
             
            import {Fee} from "../type/Fee.sol";
         | 
| 11 11 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 12 | 
            -
            import {ObjectType, ACCOUNTING, BUNDLE, DISTRIBUTION, DISTRIBUTOR, POOL, PRODUCT} from "../type/ObjectType.sol";
         | 
| 12 | 
            +
            import {ObjectType, ACCOUNTING, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, POOL, PRODUCT} from "../type/ObjectType.sol";
         | 
| 13 13 | 
             
            import {Service} from "../shared/Service.sol";
         | 
| 14 14 |  | 
| 15 15 |  | 
| @@ -46,7 +46,7 @@ contract AccountingService is | |
| 46 46 | 
             
                    virtual
         | 
| 47 47 | 
             
                    restricted()
         | 
| 48 48 | 
             
                {
         | 
| 49 | 
            -
                    _changeTargetBalance(DECREASE, instanceStore, componentNftId, AmountLib.zero(), feeAmount);    
         | 
| 49 | 
            +
                    _changeTargetBalance(DECREASE, instanceStore, componentNftId, COMPONENT(), AmountLib.zero(), feeAmount);    
         | 
| 50 50 | 
             
                }
         | 
| 51 51 |  | 
| 52 52 |  | 
| @@ -60,7 +60,7 @@ contract AccountingService is | |
| 60 60 | 
             
                    restricted()
         | 
| 61 61 | 
             
                {
         | 
| 62 62 | 
             
                    _checkNftType(productNftId, PRODUCT());
         | 
| 63 | 
            -
                    _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
         | 
| 63 | 
            +
                    _changeTargetBalance(INCREASE, instanceStore, productNftId, PRODUCT(), AmountLib.zero(), feeAmount);
         | 
| 64 64 | 
             
                }
         | 
| 65 65 |  | 
| 66 66 | 
             
                function increaseProductFeesForPool(
         | 
| @@ -73,7 +73,7 @@ contract AccountingService is | |
| 73 73 | 
             
                    restricted()
         | 
| 74 74 | 
             
                {
         | 
| 75 75 | 
             
                    _checkNftType(productNftId, PRODUCT());
         | 
| 76 | 
            -
                    _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
         | 
| 76 | 
            +
                    _changeTargetBalance(INCREASE, instanceStore, productNftId, PRODUCT(), AmountLib.zero(), feeAmount);
         | 
| 77 77 | 
             
                }
         | 
| 78 78 |  | 
| 79 79 |  | 
| @@ -83,7 +83,7 @@ contract AccountingService is | |
| 83 83 | 
             
                    restricted()
         | 
| 84 84 | 
             
                {
         | 
| 85 85 | 
             
                    _checkNftType(productNftId, PRODUCT());
         | 
| 86 | 
            -
                    _changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
         | 
| 86 | 
            +
                    _changeTargetBalance(DECREASE, instanceStore, productNftId, PRODUCT(), AmountLib.zero(), feeAmount);
         | 
| 87 87 | 
             
                }
         | 
| 88 88 |  | 
| 89 89 | 
             
                function increaseDistributionBalance(
         | 
| @@ -97,7 +97,7 @@ contract AccountingService is | |
| 97 97 | 
             
                    restricted()
         | 
| 98 98 | 
             
                {
         | 
| 99 99 | 
             
                    _checkNftType(distributionNftId, DISTRIBUTION());
         | 
| 100 | 
            -
                    _changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
         | 
| 100 | 
            +
                    _changeTargetBalance(INCREASE, instanceStore, distributionNftId, DISTRIBUTION(), amount, feeAmount);
         | 
| 101 101 | 
             
                }
         | 
| 102 102 |  | 
| 103 103 |  | 
| @@ -112,7 +112,7 @@ contract AccountingService is | |
| 112 112 | 
             
                    restricted()
         | 
| 113 113 | 
             
                {
         | 
| 114 114 | 
             
                    _checkNftType(distributionNftId, DISTRIBUTION());
         | 
| 115 | 
            -
                    _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
         | 
| 115 | 
            +
                    _changeTargetBalance(DECREASE, instanceStore, distributionNftId, DISTRIBUTION(), amount, feeAmount);
         | 
| 116 116 | 
             
                }
         | 
| 117 117 |  | 
| 118 118 | 
             
                function increaseDistributorBalance(
         | 
| @@ -126,7 +126,7 @@ contract AccountingService is | |
| 126 126 | 
             
                    restricted()
         | 
| 127 127 | 
             
                {
         | 
| 128 128 | 
             
                    _checkNftType(distributorNftId, DISTRIBUTOR());
         | 
| 129 | 
            -
                    _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
         | 
| 129 | 
            +
                    _changeTargetBalance(INCREASE, instanceStore, distributorNftId, DISTRIBUTOR(), amount, feeAmount);
         | 
| 130 130 | 
             
                }
         | 
| 131 131 |  | 
| 132 132 | 
             
                function decreaseDistributorBalance(
         | 
| @@ -140,7 +140,7 @@ contract AccountingService is | |
| 140 140 | 
             
                    restricted()
         | 
| 141 141 | 
             
                {
         | 
| 142 142 | 
             
                    _checkNftType(distributorNftId, DISTRIBUTOR());
         | 
| 143 | 
            -
                    _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
         | 
| 143 | 
            +
                    _changeTargetBalance(DECREASE, instanceStore, distributorNftId, DISTRIBUTOR(), amount, feeAmount);
         | 
| 144 144 | 
             
                }
         | 
| 145 145 |  | 
| 146 146 | 
             
                function increasePoolBalance(
         | 
| @@ -154,7 +154,7 @@ contract AccountingService is | |
| 154 154 | 
             
                    restricted()
         | 
| 155 155 | 
             
                {
         | 
| 156 156 | 
             
                    _checkNftType(poolNftId, POOL());
         | 
| 157 | 
            -
                    _changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
         | 
| 157 | 
            +
                    _changeTargetBalance(INCREASE, instanceStore, poolNftId, POOL(), amount, feeAmount);
         | 
| 158 158 | 
             
                }
         | 
| 159 159 |  | 
| 160 160 | 
             
                function decreasePoolBalance(
         | 
| @@ -168,7 +168,7 @@ contract AccountingService is | |
| 168 168 | 
             
                    restricted()
         | 
| 169 169 | 
             
                {
         | 
| 170 170 | 
             
                    _checkNftType(poolNftId, POOL());
         | 
| 171 | 
            -
                    _changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
         | 
| 171 | 
            +
                    _changeTargetBalance(DECREASE, instanceStore, poolNftId, POOL(), amount, feeAmount);
         | 
| 172 172 | 
             
                }
         | 
| 173 173 |  | 
| 174 174 | 
             
                function increaseBundleBalance(
         | 
| @@ -182,7 +182,7 @@ contract AccountingService is | |
| 182 182 | 
             
                    restricted()
         | 
| 183 183 | 
             
                {
         | 
| 184 184 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 185 | 
            -
                    _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
         | 
| 185 | 
            +
                    _changeTargetBalance(INCREASE, instanceStore, bundleNftId, BUNDLE(), amount, feeAmount);
         | 
| 186 186 | 
             
                }
         | 
| 187 187 |  | 
| 188 188 | 
             
                function decreaseBundleBalance(
         | 
| @@ -196,7 +196,7 @@ contract AccountingService is | |
| 196 196 | 
             
                    restricted()
         | 
| 197 197 | 
             
                {
         | 
| 198 198 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 199 | 
            -
                    _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
         | 
| 199 | 
            +
                    _changeTargetBalance(DECREASE, instanceStore, bundleNftId, BUNDLE(), amount, feeAmount);
         | 
| 200 200 | 
             
                }
         | 
| 201 201 |  | 
| 202 202 | 
             
                function increaseBundleBalanceForPool(
         | 
| @@ -210,7 +210,7 @@ contract AccountingService is | |
| 210 210 | 
             
                    restricted()
         | 
| 211 211 | 
             
                {
         | 
| 212 212 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 213 | 
            -
                    _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
         | 
| 213 | 
            +
                    _changeTargetBalance(INCREASE, instanceStore, bundleNftId, BUNDLE(), amount, feeAmount);
         | 
| 214 214 | 
             
                }
         | 
| 215 215 |  | 
| 216 216 | 
             
                function decreaseBundleBalanceForPool(
         | 
| @@ -224,7 +224,7 @@ contract AccountingService is | |
| 224 224 | 
             
                    restricted()
         | 
| 225 225 | 
             
                {
         | 
| 226 226 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 227 | 
            -
                    _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
         | 
| 227 | 
            +
                    _changeTargetBalance(DECREASE, instanceStore, bundleNftId, BUNDLE(), amount, feeAmount);
         | 
| 228 228 | 
             
                }
         | 
| 229 229 |  | 
| 230 230 |  | 
| @@ -234,6 +234,7 @@ contract AccountingService is | |
| 234 234 | 
             
                    bool increase,
         | 
| 235 235 | 
             
                    InstanceStore instanceStore, 
         | 
| 236 236 | 
             
                    NftId targetNftId, 
         | 
| 237 | 
            +
                    ObjectType objectType,
         | 
| 237 238 | 
             
                    Amount amount, 
         | 
| 238 239 | 
             
                    Amount feeAmount
         | 
| 239 240 | 
             
                )
         | 
| @@ -249,21 +250,8 @@ contract AccountingService is | |
| 249 250 | 
             
                        if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
         | 
| 250 251 | 
             
                        if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
         | 
| 251 252 | 
             
                    }
         | 
| 252 | 
            -
                }
         | 
| 253 | 
            -
             | 
| 254 253 |  | 
| 255 | 
            -
             | 
| 256 | 
            -
                    internal
         | 
| 257 | 
            -
                    virtual
         | 
| 258 | 
            -
                {
         | 
| 259 | 
            -
                    emit LogComponentServiceUpdateFee(
         | 
| 260 | 
            -
                        productNftId, 
         | 
| 261 | 
            -
                        name,
         | 
| 262 | 
            -
                        feeBefore.fractionalFee,
         | 
| 263 | 
            -
                        feeBefore.fixedFee,
         | 
| 264 | 
            -
                        feeAfter.fractionalFee,
         | 
| 265 | 
            -
                        feeAfter.fixedFee
         | 
| 266 | 
            -
                    );
         | 
| 254 | 
            +
                    emit LogAccountingServiceBalanceChanged(targetNftId, amount, feeAmount, increase, objectType);
         | 
| 267 255 | 
             
                }
         | 
| 268 256 |  | 
| 269 257 | 
             
                function _getDomain() internal pure virtual override returns(ObjectType) {
         | 
| @@ -6,20 +6,19 @@ import {Amount} from "../type/Amount.sol"; | |
| 6 6 | 
             
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 7 7 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 8 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 9 | 
            -
            import { | 
| 9 | 
            +
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 10 10 |  | 
| 11 11 | 
             
            /// @dev component base class
         | 
| 12 12 | 
             
            /// component examples are staking, product, distribution, pool and oracle
         | 
| 13 13 | 
             
            interface IAccountingService is 
         | 
| 14 14 | 
             
                IService
         | 
| 15 15 | 
             
            {
         | 
| 16 | 
            -
                event  | 
| 17 | 
            -
                    NftId nftId, | 
| 18 | 
            -
                     | 
| 19 | 
            -
                     | 
| 20 | 
            -
                     | 
| 21 | 
            -
                     | 
| 22 | 
            -
                    Amount newFixedFee
         | 
| 16 | 
            +
                event LogAccountingServiceBalanceChanged(
         | 
| 17 | 
            +
                    NftId indexed nftId,
         | 
| 18 | 
            +
                    Amount indexed amount,
         | 
| 19 | 
            +
                    Amount indexed feeAmount,
         | 
| 20 | 
            +
                    bool increase,
         | 
| 21 | 
            +
                    ObjectType objectType
         | 
| 23 22 | 
             
                );
         | 
| 24 23 |  | 
| 25 24 | 
             
                function decreaseComponentFees(InstanceStore instanceStore, NftId componentNftId, Amount feeAmount) external;
         | 
| @@ -279,10 +279,11 @@ contract AccessAdmin is | |
| 279 279 | 
             
                {
         | 
| 280 280 | 
             
                    Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
         | 
| 281 281 | 
             
                    func = _functionInfo[target][selector];
         | 
| 282 | 
            -
                    roleId =  | 
| 283 | 
            -
             | 
| 284 | 
            -
             | 
| 285 | 
            -
             | 
| 282 | 
            +
                    roleId = AccessAdminLib.getFunctionRoleId(_authority, target, selector);
         | 
| 283 | 
            +
                    // roleId = RoleIdLib.toRoleId(
         | 
| 284 | 
            +
                    //     _authority.getTargetFunctionRole(
         | 
| 285 | 
            +
                    //         target, 
         | 
| 286 | 
            +
                    //         selector.toBytes4()));
         | 
| 286 287 | 
             
                }
         | 
| 287 288 |  | 
| 288 289 |  | 
| @@ -318,7 +319,7 @@ contract AccessAdmin is | |
| 318 319 | 
             
                        (RoleId roleId, bool exists) = getRoleForName(roleInfo.name.toString());
         | 
| 319 320 |  | 
| 320 321 | 
             
                        if (!exists) {
         | 
| 321 | 
            -
                            if (!AccessAdminLib.isDynamicRoleId(authzRoleId)) {
         | 
| 322 | 
            +
                            if (!AccessAdminLib.isDynamicRoleId(authzRoleId) || roleInfo.targetType == TargetType.Custom) {
         | 
| 322 323 | 
             
                                roleId = authzRoleId;
         | 
| 323 324 | 
             
                            }
         | 
| 324 325 |  | 
| @@ -656,24 +657,4 @@ contract AccessAdmin is | |
| 656 657 | 
             
                        AccessAdminLib.toFunctionGrantingString(this, func.name, roleId),
         | 
| 657 658 | 
             
                        lastUpdateIn);
         | 
| 658 659 | 
             
                }
         | 
| 659 | 
            -
             | 
| 660 | 
            -
             | 
| 661 | 
            -
                function _checkAuthorization( 
         | 
| 662 | 
            -
                    address authorization,
         | 
| 663 | 
            -
                    ObjectType expectedDomain, 
         | 
| 664 | 
            -
                    VersionPart expectedRelease,
         | 
| 665 | 
            -
                    bool expectServiceAuthorization,
         | 
| 666 | 
            -
                    bool checkAlreadyInitialized
         | 
| 667 | 
            -
                )
         | 
| 668 | 
            -
                    internal
         | 
| 669 | 
            -
                    view
         | 
| 670 | 
            -
                {
         | 
| 671 | 
            -
                    AccessAdminLib.checkAuthorization(
         | 
| 672 | 
            -
                        address(_authorization), 
         | 
| 673 | 
            -
                        authorization, 
         | 
| 674 | 
            -
                        expectedDomain, 
         | 
| 675 | 
            -
                        expectedRelease, 
         | 
| 676 | 
            -
                        expectServiceAuthorization,
         | 
| 677 | 
            -
                        checkAlreadyInitialized);
         | 
| 678 | 
            -
                }
         | 
| 679 660 | 
             
            }
         | 
| @@ -7,16 +7,17 @@ import {IAccess} from "./IAccess.sol"; | |
| 7 7 | 
             
            import {IAccessAdmin} from "./IAccessAdmin.sol";
         | 
| 8 8 | 
             
            import {IAuthorization} from "./IAuthorization.sol";
         | 
| 9 9 | 
             
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 10 | 
            -
            import { | 
| 10 | 
            +
            import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
         | 
| 11 11 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 12 12 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 13 13 | 
             
            import {IServiceAuthorization} from "./IServiceAuthorization.sol";
         | 
| 14 14 |  | 
| 15 | 
            +
            import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
         | 
| 15 16 | 
             
            import {BlocknumberLib} from "../type/Blocknumber.sol";
         | 
| 16 17 | 
             
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 17 18 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 18 19 | 
             
            import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 19 | 
            -
            import {SelectorLib} from "../type/Selector.sol";
         | 
| 20 | 
            +
            import {Selector, SelectorLib} from "../type/Selector.sol";
         | 
| 20 21 | 
             
            import {Str, StrLib} from "../type/String.sol";
         | 
| 21 22 | 
             
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 22 23 | 
             
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         | 
| @@ -338,7 +339,7 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB | |
| 338 339 | 
             
                    checkIsRegistered(address(accessAdmin.getRegistry()), componentAddress, expectedType);
         | 
| 339 340 |  | 
| 340 341 | 
             
                    VersionPart expecteRelease = accessAdmin.getRelease();
         | 
| 341 | 
            -
                     | 
| 342 | 
            +
                    IAuthorizedComponent component = IAuthorizedComponent(componentAddress);
         | 
| 342 343 | 
             
                    componentAuthorization = component.getAuthorization();
         | 
| 343 344 |  | 
| 344 345 | 
             
                    checkAuthorization(
         | 
| @@ -481,6 +482,22 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB | |
| 481 482 | 
             
                }
         | 
| 482 483 |  | 
| 483 484 |  | 
| 485 | 
            +
                function getFunctionRoleId(
         | 
| 486 | 
            +
                    AccessManagerCloneable authority,
         | 
| 487 | 
            +
                    address target,
         | 
| 488 | 
            +
                    Selector selector
         | 
| 489 | 
            +
                )
         | 
| 490 | 
            +
                    public
         | 
| 491 | 
            +
                    view
         | 
| 492 | 
            +
                    returns (RoleId functionRoleId)
         | 
| 493 | 
            +
                {
         | 
| 494 | 
            +
                    return RoleIdLib.toRoleId(
         | 
| 495 | 
            +
                        authority.getTargetFunctionRole(
         | 
| 496 | 
            +
                            target, 
         | 
| 497 | 
            +
                            selector.toBytes4()));
         | 
| 498 | 
            +
                }
         | 
| 499 | 
            +
             | 
| 500 | 
            +
             | 
| 484 501 | 
             
                function getServiceRoleId(
         | 
| 485 502 | 
             
                    address serviceAddress,
         | 
| 486 503 | 
             
                    IAccess.TargetType serviceTargetType
         | 
| @@ -24,6 +24,8 @@ contract AccessManagerCloneable is | |
| 24 24 | 
             
                error ErrorAccessManagerTargetAdminLocked(address target);
         | 
| 25 25 | 
             
                error ErrorAccessManagerCallerAdminLocked(address caller);
         | 
| 26 26 |  | 
| 27 | 
            +
                event LogAccessManagerLocked(address indexed accessManager, bool indexed locked);
         | 
| 28 | 
            +
             | 
| 27 29 | 
             
                VersionPart private _release;
         | 
| 28 30 | 
             
                bool private _isLocked;
         | 
| 29 31 |  | 
| @@ -39,6 +41,7 @@ contract AccessManagerCloneable is | |
| 39 41 |  | 
| 40 42 | 
             
                function initialize(address admin)
         | 
| 41 43 | 
             
                    public
         | 
| 44 | 
            +
                    override
         | 
| 42 45 | 
             
                    initializer()
         | 
| 43 46 | 
             
                {
         | 
| 44 47 | 
             
                    __ERC165_init();
         | 
| @@ -94,6 +97,7 @@ contract AccessManagerCloneable is | |
| 94 97 | 
             
                    onlyAdminRole() 
         | 
| 95 98 | 
             
                {
         | 
| 96 99 | 
             
                    _isLocked = locked;
         | 
| 100 | 
            +
                    emit LogAccessManagerLocked(address(this), locked);
         | 
| 97 101 | 
             
                }
         | 
| 98 102 |  | 
| 99 103 |  | 
| @@ -112,7 +112,7 @@ contract DistributionService is | |
| 112 112 |  | 
| 113 113 | 
             
                    instance.getInstanceStore().createDistributorType(distributorType, info);
         | 
| 114 114 |  | 
| 115 | 
            -
                    emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name);
         | 
| 115 | 
            +
                    emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name, commissionPercentage);
         | 
| 116 116 | 
             
                }
         | 
| 117 117 |  | 
| 118 118 |  | 
| @@ -236,7 +236,7 @@ contract DistributionService is | |
| 236 236 |  | 
| 237 237 | 
             
                        instance.getInstanceStore().createReferral(referralId, info);
         | 
| 238 238 |  | 
| 239 | 
            -
                        emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code);
         | 
| 239 | 
            +
                        emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code, discountPercentage, maxReferrals, expiryAt);
         | 
| 240 240 | 
             
                    }
         | 
| 241 241 | 
             
                }
         | 
| 242 242 |  | 
| @@ -295,12 +295,14 @@ contract DistributionService is | |
| 295 295 | 
             
                        IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
         | 
| 296 296 | 
             
                        distributorInfo.numPoliciesSold += 1;
         | 
| 297 297 | 
             
                        store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
         | 
| 298 | 
            +
                        emit LogDistributionServiceSaleProcessedWithReferral(distributionNftId, referralInfo.distributorNftId, referralId, distributorInfo.numPoliciesSold, premium.premiumAmount, distributionOwnerFee, commissionAmount);
         | 
| 298 299 | 
             
                    } else {
         | 
| 299 300 | 
             
                        // increase distribution balance by distribution owner fee
         | 
| 300 301 | 
             
                        _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
         | 
| 302 | 
            +
                        emit LogDistributionServiceSaleProcessed(distributionNftId, referralId, premium.premiumAmount, distributionOwnerFee);
         | 
| 301 303 | 
             
                    }
         | 
| 302 304 |  | 
| 303 | 
            -
                     | 
| 305 | 
            +
                    
         | 
| 304 306 | 
             
                }
         | 
| 305 307 |  | 
| 306 308 | 
             
                /// @inheritdoc IDistributionService
         | 
| @@ -11,8 +11,6 @@ import {UFixed} from "../type/UFixed.sol"; | |
| 11 11 |  | 
| 12 12 | 
             
            interface IDistributionComponent is IInstanceLinkedComponent {
         | 
| 13 13 |  | 
| 14 | 
            -
                event LogDistributorUpdated(address to, address operator);
         | 
| 15 | 
            -
             | 
| 16 14 | 
             
                function getDiscountPercentage(
         | 
| 17 15 | 
             
                    string memory referralCode
         | 
| 18 16 | 
             
                ) external view returns (UFixed discountPercentage, ReferralStatus status);
         | 
| @@ -40,12 +40,13 @@ interface IDistributionService is IService { | |
| 40 40 | 
             
                error ErrorDistributionServiceReferralDistributionMismatch(ReferralId referralId, NftId referralDistributionNft, NftId distributionNftId);
         | 
| 41 41 |  | 
| 42 42 | 
             
                event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
         | 
| 43 | 
            -
                event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name);
         | 
| 43 | 
            +
                event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name, UFixed commissionPercentage);
         | 
| 44 44 | 
             
                event LogDistributionServiceDistributorCreated(NftId distributionNftId, NftId distributorNftId, DistributorType distributorType, address distributor);
         | 
| 45 45 | 
             
                event LogDistributionServiceDistributorTypeChanged(NftId distributorNftId, DistributorType oldDistributorType, DistributorType newDistributorType);
         | 
| 46 | 
            -
                event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code);
         | 
| 46 | 
            +
                event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code, UFixed discountPercentage, uint32 maxReferrals, Timestamp expiryAt);
         | 
| 47 47 | 
             
                event LogDistributionServiceReferralProcessed(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, uint32 usedReferrals);
         | 
| 48 | 
            -
                event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId);
         | 
| 48 | 
            +
                event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId, Amount premium, Amount distributionOwnerFee);
         | 
| 49 | 
            +
                event LogDistributionServiceSaleProcessedWithReferral(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, uint32 numPoliciesSold, Amount premium, Amount distributionOwnerFee, Amount commissionAmount);
         | 
| 49 50 |  | 
| 50 51 | 
             
                function createDistributorType(
         | 
| 51 52 | 
             
                    string memory name,
         | 
| @@ -11,6 +11,7 @@ import {InstanceReader} from "../../instance/InstanceReader.sol"; | |
| 11 11 | 
             
            import {NftId} from "../../type/NftId.sol";
         | 
| 12 12 | 
             
            import {RequestId} from "../../type/RequestId.sol";
         | 
| 13 13 | 
             
            import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
         | 
| 14 | 
            +
            import {Seconds} from "../../type/Seconds.sol";
         | 
| 14 15 | 
             
            import {StateId} from "../../type/StateId.sol";
         | 
| 15 16 | 
             
            import {Str} from "../../type/String.sol";
         | 
| 16 17 | 
             
            import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
         | 
| @@ -18,39 +19,30 @@ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol"; | |
| 18 19 |  | 
| 19 20 | 
             
            library FlightLib {
         | 
| 20 21 |  | 
| 21 | 
            -
                 | 
| 22 | 
            +
                event LogFlightProductErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
         | 
| 23 | 
            +
                event LogFlightProductErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                error ErrorFlightProductRiskInvalid(RiskId riskId);
         | 
| 26 | 
            +
                error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
         | 
| 27 | 
            +
                error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
         | 
| 28 | 
            +
                error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
         | 
| 29 | 
            +
                error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
         | 
| 30 | 
            +
                error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
         | 
| 31 | 
            +
                error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
         | 
| 32 | 
            +
                error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
         | 
| 33 | 
            +
                error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                function checkApplicationData(
         | 
| 22 36 | 
             
                    FlightProduct flightProduct,
         | 
| 23 37 | 
             
                    Str flightData, 
         | 
| 24 38 | 
             
                    Timestamp departureTime,
         | 
| 25 39 | 
             
                    Timestamp arrivalTime,
         | 
| 26 | 
            -
                    Amount premiumAmount | 
| 27 | 
            -
                    uint256[6] memory statistics,
         | 
| 28 | 
            -
                    // signature fields
         | 
| 29 | 
            -
                    uint8 v, 
         | 
| 30 | 
            -
                    bytes32 r, 
         | 
| 31 | 
            -
                    bytes32 s
         | 
| 40 | 
            +
                    Amount premiumAmount
         | 
| 32 41 | 
             
                )
         | 
| 33 42 | 
             
                    public
         | 
| 34 43 | 
             
                    view
         | 
| 35 44 | 
             
                {
         | 
| 36 45 | 
             
                    _checkApplicationData(flightProduct, premiumAmount, arrivalTime, departureTime);
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                    (
         | 
| 39 | 
            -
                        address actualSigner,,
         | 
| 40 | 
            -
                        bool success
         | 
| 41 | 
            -
                    ) = flightProduct.getFlightMessageVerifier().verifyRatingsHash(
         | 
| 42 | 
            -
                        flightData,
         | 
| 43 | 
            -
                        departureTime,
         | 
| 44 | 
            -
                        arrivalTime,
         | 
| 45 | 
            -
                        premiumAmount,
         | 
| 46 | 
            -
                        statistics,
         | 
| 47 | 
            -
                        v, r, s);
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                    if (!success) {
         | 
| 50 | 
            -
                        revert FlightProduct.ErrorApplicationDataSignatureMismatch(
         | 
| 51 | 
            -
                            flightProduct.getFlightMessageVerifier().getExpectedSigner(),
         | 
| 52 | 
            -
                            actualSigner);
         | 
| 53 | 
            -
                    }
         | 
| 54 46 | 
             
                }
         | 
| 55 47 |  | 
| 56 48 |  | 
| @@ -63,67 +55,49 @@ library FlightLib { | |
| 63 55 | 
             
                    internal
         | 
| 64 56 | 
             
                    view
         | 
| 65 57 | 
             
                {
         | 
| 58 | 
            +
                    bool testMode = flightProduct.isTestMode();
         | 
| 59 | 
            +
             | 
| 66 60 | 
             
                    // solhint-disable
         | 
| 67 61 | 
             
                    if (premiumAmount < flightProduct.MIN_PREMIUM()) {
         | 
| 68 | 
            -
                        revert  | 
| 62 | 
            +
                        revert ErrorFlightProductPremiumAmountTooSmall(premiumAmount, flightProduct.MIN_PREMIUM());
         | 
| 69 63 | 
             
                    }
         | 
| 70 64 | 
             
                    if (premiumAmount > flightProduct.MAX_PREMIUM()) {
         | 
| 71 | 
            -
                        revert  | 
| 65 | 
            +
                        revert ErrorFlightProductPremiumAmountTooLarge(premiumAmount, flightProduct.MAX_PREMIUM());
         | 
| 72 66 | 
             
                    }
         | 
| 73 67 | 
             
                    if (arrivalTime <= departureTime) {
         | 
| 74 | 
            -
                        revert  | 
| 68 | 
            +
                        revert ErrorFlightProductArrivalBeforeDepartureTime(departureTime, arrivalTime);
         | 
| 75 69 | 
             
                    }
         | 
| 76 | 
            -
             | 
| 77 70 | 
             
                    if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
         | 
| 78 | 
            -
                        revert  | 
| 71 | 
            +
                        revert ErrorFlightProductArrivalAfterMaxFlightDuration(arrivalTime, departureTime, flightProduct.MAX_FLIGHT_DURATION());
         | 
| 79 72 | 
             
                    }
         | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 73 | 
            +
             | 
| 74 | 
            +
                    // test mode allows the creation for policies that are outside restricted policy creation times
         | 
| 75 | 
            +
                    if (!testMode && departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
         | 
| 76 | 
            +
                        revert ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MIN_TIME_BEFORE_DEPARTURE());
         | 
| 82 77 | 
             
                    }
         | 
| 83 | 
            -
                    if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
         | 
| 84 | 
            -
                        revert  | 
| 78 | 
            +
                    if (!testMode && departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
         | 
| 79 | 
            +
                        revert ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MAX_TIME_BEFORE_DEPARTURE());
         | 
| 85 80 | 
             
                    }
         | 
| 86 81 | 
             
                    // solhint-enable
         | 
| 87 82 | 
             
                }
         | 
| 88 83 |  | 
| 89 84 |  | 
| 90 | 
            -
                 | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 94 | 
            -
                 | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
                 | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
                 | 
| 102 | 
            -
                //     // Validate input parameters
         | 
| 103 | 
            -
                //     if (premium < flightProduct.MIN_PREMIUM()) { errors = errors | (uint256(1) << 0); }
         | 
| 104 | 
            -
                //     if (premium > flightProduct.MAX_PREMIUM()) { errors = errors | (uint256(1) << 1); }
         | 
| 105 | 
            -
                //     if (arrivalTime < departureTime) { errors = errors | (uint256(1) << 2); }
         | 
| 106 | 
            -
                //     if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) { errors = errors | (uint256(1) << 3); }
         | 
| 107 | 
            -
                //     if (departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 4); }
         | 
| 108 | 
            -
                //     if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 5); }
         | 
| 109 | 
            -
             | 
| 110 | 
            -
                //     (, bool exists, FlightProduct.FlightRisk memory flightRisk) = getFlightRisk(
         | 
| 111 | 
            -
                //         flightProduct.getInstanceReader(), flightProduct.getNftId(), carrierFlightNumber, departureTime, arrivalTime);
         | 
| 112 | 
            -
             | 
| 113 | 
            -
                //     if (exists) {
         | 
| 114 | 
            -
                //         Amount sumInsured = AmountLib.toAmount(premium.toInt() * flightRisk.premiumMultiplier);
         | 
| 115 | 
            -
                //         if (flightRisk.sumOfSumInsuredAmounts + sumInsured > flightProduct.MAX_TOTAL_PAYOUT()) {
         | 
| 116 | 
            -
                //             errors = errors | (uint256(1) << 6);
         | 
| 117 | 
            -
                //         }
         | 
| 118 | 
            -
                //     }
         | 
| 119 | 
            -
             | 
| 120 | 
            -
                //     return errors;
         | 
| 121 | 
            -
                // }
         | 
| 85 | 
            +
                function checkClusterRisk(
         | 
| 86 | 
            +
                    Amount sumOfSumInsuredAmounts,
         | 
| 87 | 
            +
                    Amount sumInsuredAmount,
         | 
| 88 | 
            +
                    Amount maxTotalPayout
         | 
| 89 | 
            +
                )
         | 
| 90 | 
            +
                    public
         | 
| 91 | 
            +
                    pure
         | 
| 92 | 
            +
                {
         | 
| 93 | 
            +
                    if (sumOfSumInsuredAmounts + sumInsuredAmount > maxTotalPayout) {
         | 
| 94 | 
            +
                        revert ErrorFlightProductClusterRisk(sumOfSumInsuredAmounts + sumInsuredAmount, maxTotalPayout);
         | 
| 95 | 
            +
                    }
         | 
| 96 | 
            +
                }
         | 
| 122 97 |  | 
| 123 98 |  | 
| 124 99 | 
             
                /// @dev calculates payout option based on flight status and delay minutes.
         | 
| 125 100 | 
             
                /// Is not a view function as it emits log evens in case of unexpected status.
         | 
| 126 | 
            -
                // TODO decide if reverts instead of log events could work too (and convert the function into a view function)
         | 
| 127 101 | 
             
                function checkAndGetPayoutOption(
         | 
| 128 102 | 
             
                    RequestId requestId,
         | 
| 129 103 | 
             
                    RiskId riskId, 
         | 
| @@ -138,13 +112,13 @@ library FlightLib { | |
| 138 112 |  | 
| 139 113 | 
             
                    // check status
         | 
| 140 114 | 
             
                    if (status != "L" && status != "A" && status != "C" && status != "D") {
         | 
| 141 | 
            -
                        emit  | 
| 115 | 
            +
                        emit LogFlightProductErrorUnprocessableStatus(requestId, riskId, status);
         | 
| 142 116 | 
             
                        return payoutOption;
         | 
| 143 117 | 
             
                    }
         | 
| 144 118 |  | 
| 145 119 | 
             
                    if (status == "A") {
         | 
| 146 120 | 
             
                        // todo: active, reschedule oracle call + 45 min
         | 
| 147 | 
            -
                        emit  | 
| 121 | 
            +
                        emit LogFlightProductErrorUnexpectedStatus(requestId, riskId, status, delayMinutes);
         | 
| 148 122 | 
             
                        return payoutOption;
         | 
| 149 123 | 
             
                    }
         | 
| 150 124 |  | 
| @@ -167,7 +141,7 @@ library FlightLib { | |
| 167 141 | 
             
                {
         | 
| 168 142 | 
             
                    // check we have enough observations
         | 
| 169 143 | 
             
                    if (statistics[0] < flightProduct.MIN_OBSERVATIONS()) {
         | 
| 170 | 
            -
                        revert  | 
| 144 | 
            +
                        revert ErrorFlightProductNotEnoughObservations(statistics[0], flightProduct.MIN_OBSERVATIONS());
         | 
| 171 145 | 
             
                    }
         | 
| 172 146 |  | 
| 173 147 | 
             
                    weight = 0;
         | 
| @@ -200,10 +174,10 @@ library FlightLib { | |
| 200 174 | 
             
                    )
         | 
| 201 175 | 
             
                {
         | 
| 202 176 | 
             
                    if (premium < flightProduct.MIN_PREMIUM()) { 
         | 
| 203 | 
            -
                        revert  | 
| 177 | 
            +
                        revert ErrorFlightProductPremiumAmountTooSmall(premium, flightProduct.MIN_PREMIUM()); 
         | 
| 204 178 | 
             
                    }
         | 
| 205 179 | 
             
                    if (premium > flightProduct.MAX_PREMIUM()) { 
         | 
| 206 | 
            -
                        revert  | 
| 180 | 
            +
                        revert ErrorFlightProductPremiumAmountTooLarge(premium, flightProduct.MAX_PREMIUM()); 
         | 
| 207 181 | 
             
                    }
         | 
| 208 182 |  | 
| 209 183 | 
             
                    sumInsuredAmount = AmountLib.zero();
         | 
| @@ -222,13 +196,43 @@ library FlightLib { | |
| 222 196 | 
             
                }
         | 
| 223 197 |  | 
| 224 198 |  | 
| 199 | 
            +
                function getPayoutOption(
         | 
| 200 | 
            +
                    InstanceReader reader,
         | 
| 201 | 
            +
                    NftId productNftId,
         | 
| 202 | 
            +
                    RiskId riskId
         | 
| 203 | 
            +
                )
         | 
| 204 | 
            +
                    public
         | 
| 205 | 
            +
                    view
         | 
| 206 | 
            +
                    returns (
         | 
| 207 | 
            +
                        bool exists,
         | 
| 208 | 
            +
                        bool statusAvailable,
         | 
| 209 | 
            +
                        uint8 payoutOption
         | 
| 210 | 
            +
                    )
         | 
| 211 | 
            +
                {
         | 
| 212 | 
            +
                    FlightProduct.FlightRisk memory flightRisk;
         | 
| 213 | 
            +
                    (exists, flightRisk) = getFlightRisk(
         | 
| 214 | 
            +
                        reader, 
         | 
| 215 | 
            +
                        productNftId, 
         | 
| 216 | 
            +
                        riskId,
         | 
| 217 | 
            +
                        false);
         | 
| 218 | 
            +
                    
         | 
| 219 | 
            +
                    statusAvailable = flightRisk.statusUpdatedAt.gtz();
         | 
| 220 | 
            +
                    payoutOption = flightRisk.payoutOption;
         | 
| 221 | 
            +
                }
         | 
| 222 | 
            +
             | 
| 223 | 
            +
             | 
| 225 224 | 
             
                function getPayoutAmount(
         | 
| 226 225 | 
             
                    bytes memory applicationData, 
         | 
| 227 226 | 
             
                    uint8 payoutOption
         | 
| 228 227 | 
             
                )
         | 
| 229 228 | 
             
                    public
         | 
| 229 | 
            +
                    pure
         | 
| 230 230 | 
             
                    returns (Amount payoutAmount)
         | 
| 231 231 | 
             
                {
         | 
| 232 | 
            +
                    if (payoutOption == type(uint8).max) {
         | 
| 233 | 
            +
                        return AmountLib.zero();
         | 
| 234 | 
            +
                    }
         | 
| 235 | 
            +
             | 
| 232 236 | 
             
                    // retrieve payout amounts from application data
         | 
| 233 237 | 
             
                    (, Amount[5] memory payoutAmounts) = abi.decode(
         | 
| 234 238 | 
             
                        applicationData, (Amount, Amount[5]));
         | 
| @@ -243,7 +247,9 @@ library FlightLib { | |
| 243 247 | 
             
                    NftId productNftId, 
         | 
| 244 248 | 
             
                    Str flightData,
         | 
| 245 249 | 
             
                    Timestamp departureTime, 
         | 
| 246 | 
            -
                     | 
| 250 | 
            +
                    string memory departureTimeLocal,
         | 
| 251 | 
            +
                    Timestamp arrivalTime,
         | 
| 252 | 
            +
                    string memory arrivalTimeLocal
         | 
| 247 253 | 
             
                )
         | 
| 248 254 | 
             
                    public
         | 
| 249 255 | 
             
                    view
         | 
| @@ -254,17 +260,21 @@ library FlightLib { | |
| 254 260 | 
             
                    )
         | 
| 255 261 | 
             
                {
         | 
| 256 262 | 
             
                    riskId = getRiskId(productNftId, flightData);
         | 
| 257 | 
            -
                    (exists, flightRisk) = getFlightRisk(reader, productNftId, riskId);
         | 
| 263 | 
            +
                    (exists, flightRisk) = getFlightRisk(reader, productNftId, riskId, false);
         | 
| 258 264 |  | 
| 259 265 | 
             
                    // create new risk if not existing
         | 
| 260 266 | 
             
                    if (!exists) {
         | 
| 261 267 | 
             
                        flightRisk = FlightProduct.FlightRisk({
         | 
| 262 268 | 
             
                            flightData: flightData,
         | 
| 263 269 | 
             
                            departureTime: departureTime,
         | 
| 270 | 
            +
                            departureTimeLocal: departureTimeLocal,
         | 
| 264 271 | 
             
                            arrivalTime: arrivalTime,
         | 
| 272 | 
            +
                            arrivalTimeLocal: arrivalTimeLocal,
         | 
| 265 273 | 
             
                            sumOfSumInsuredAmounts: AmountLib.toAmount(0),
         | 
| 266 274 | 
             
                            status: bytes1(0),
         | 
| 267 | 
            -
                            delayMinutes: 0 | 
| 275 | 
            +
                            delayMinutes: 0,
         | 
| 276 | 
            +
                            payoutOption: uint8(0),
         | 
| 277 | 
            +
                            statusUpdatedAt: TimestampLib.zero()});
         | 
| 268 278 | 
             
                    }
         | 
| 269 279 | 
             
                }
         | 
| 270 280 |  | 
| @@ -272,7 +282,8 @@ library FlightLib { | |
| 272 282 | 
             
                function getFlightRisk(
         | 
| 273 283 | 
             
                    InstanceReader reader,
         | 
| 274 284 | 
             
                    NftId productNftId,
         | 
| 275 | 
            -
                    RiskId riskId
         | 
| 285 | 
            +
                    RiskId riskId,
         | 
| 286 | 
            +
                    bool requireRiskExists
         | 
| 276 287 | 
             
                )
         | 
| 277 288 | 
             
                    public
         | 
| 278 289 | 
             
                    view
         | 
| @@ -284,6 +295,10 @@ library FlightLib { | |
| 284 295 | 
             
                    // check if risk exists
         | 
| 285 296 | 
             
                    exists = reader.isProductRisk(productNftId, riskId);
         | 
| 286 297 |  | 
| 298 | 
            +
                    if (!exists && requireRiskExists) {
         | 
| 299 | 
            +
                        revert ErrorFlightProductRiskInvalid(riskId);
         | 
| 300 | 
            +
                    }
         | 
| 301 | 
            +
             | 
| 287 302 | 
             
                    // get risk data if risk exists
         | 
| 288 303 | 
             
                    if (exists) {
         | 
| 289 304 | 
             
                        flightRisk = abi.decode(
         |