@etherisc/gif-next 0.0.2-866ef18-420 → 0.0.2-86dae40-160
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- 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 +85 -90
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -64
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +182 -74
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +54 -38
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -26
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +71 -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/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2 -2
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +80 -122
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +16 -16
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +72 -194
- 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/module/IAccess.sol/IAccess.dbg.json +1 -1
- 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 +59 -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 +30 -26
- 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 +27 -61
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +54 -125
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +383 -51
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -26
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -83
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +158 -54
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -121
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +226 -90
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -19
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +21 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +9 -17
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -64
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -58
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +30 -30
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +188 -108
- 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 +19 -26
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +260 -167
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +42 -26
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +19 -64
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +2 -2
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +2 -2
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +327 -62
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +88 -32
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -26
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -64
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/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/Registerable.sol/Registerable.json +2 -2
- 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 +240 -16
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +40 -113
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +120 -112
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +61 -25
- 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 +22 -22
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +17 -12
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
- 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/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +22 -10
- package/contracts/distribution/DistributionService.sol +47 -27
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +10 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +2 -0
- package/contracts/instance/InstanceReader.sol +10 -7
- package/contracts/instance/InstanceService.sol +51 -27
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +2 -1
- package/contracts/instance/base/ObjectLifecycle.sol +2 -3
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -7
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +1 -1
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +15 -6
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +11 -2
- package/contracts/pool/BundleService.sol +174 -34
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +32 -5
- package/contracts/pool/IPoolComponent.sol +6 -0
- package/contracts/pool/IPoolService.sol +14 -17
- package/contracts/pool/Pool.sol +32 -15
- package/contracts/pool/PoolService.sol +151 -84
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +49 -53
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +3 -33
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +13 -39
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +1 -0
- package/contracts/product/IPolicyService.sol +23 -17
- package/contracts/product/IProductComponent.sol +1 -0
- package/contracts/product/IProductService.sol +1 -0
- package/contracts/product/PolicyService.sol +242 -131
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingService.sol +5 -1
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +27 -6
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +0 -2
- package/contracts/shared/Component.sol +24 -37
- package/contracts/shared/ComponentService.sol +72 -14
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -3
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +21 -0
- package/contracts/shared/NftOwnable.sol +2 -2
- package/contracts/shared/PolicyHolder.sol +2 -5
- package/contracts/shared/Service.sol +3 -4
- package/contracts/shared/TokenHandler.sol +91 -17
- package/contracts/staking/IStaking.sol +1 -1
- package/contracts/staking/StakeManagerLib.sol +0 -25
- package/contracts/staking/Staking.sol +18 -33
- package/contracts/staking/StakingManager.sol +2 -5
- package/contracts/staking/StakingReader.sol +6 -9
- package/contracts/staking/StakingService.sol +8 -12
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +5 -15
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/Seconds.sol +13 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,26 +1,21 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
4
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
7
|
import {Product} from "./Product.sol";
|
6
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
8
9
|
import {IInstance} from "../instance/IInstance.sol";
|
9
10
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
|
-
import {IRisk} from "../instance/module/IRisk.sol";
|
12
|
-
import {IBundle} from "../instance/module/IBundle.sol";
|
13
11
|
|
14
12
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
15
13
|
|
16
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
|
-
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
18
15
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
19
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
20
16
|
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
21
|
-
import {APPLIED, COLLATERALIZED,
|
17
|
+
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
|
22
18
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
23
|
-
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
24
19
|
import {ReferralId} from "../type/Referral.sol";
|
25
20
|
import {StateId} from "../type/StateId.sol";
|
26
21
|
import {VersionPart} from "../type/Version.sol";
|
@@ -36,8 +31,6 @@ import {InstanceStore} from "../instance/InstanceStore.sol";
|
|
36
31
|
import {IPolicyService} from "./IPolicyService.sol";
|
37
32
|
import {IPoolService} from "../pool/IPoolService.sol";
|
38
33
|
import {IPricingService} from "./IPricingService.sol";
|
39
|
-
import {IService} from "../shared/IService.sol";
|
40
|
-
import {Service} from "../shared/Service.sol";
|
41
34
|
|
42
35
|
contract PolicyService is
|
43
36
|
ComponentVerifyingService,
|
@@ -85,26 +78,41 @@ contract PolicyService is
|
|
85
78
|
}
|
86
79
|
|
87
80
|
|
88
|
-
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
89
|
-
IRegistry.ObjectInfo memory productInfo;
|
90
|
-
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
91
|
-
product = Product(productInfo.objectAddress);
|
92
|
-
}
|
93
|
-
|
94
|
-
|
95
81
|
function decline(
|
96
|
-
NftId policyNftId
|
82
|
+
NftId applicationNftId // = policyNftId
|
97
83
|
)
|
98
84
|
external
|
99
|
-
override
|
85
|
+
virtual override
|
100
86
|
{
|
101
|
-
|
87
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
88
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
89
|
+
|
90
|
+
// check policy is in state applied
|
91
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
92
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
93
|
+
}
|
94
|
+
|
95
|
+
// check policy matches with calling product
|
96
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
97
|
+
if(applicationInfo.productNftId != productNftId) {
|
98
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
99
|
+
applicationNftId,
|
100
|
+
applicationInfo.productNftId,
|
101
|
+
productNftId);
|
102
|
+
}
|
103
|
+
|
104
|
+
|
105
|
+
// store updated policy info
|
106
|
+
instance.getInstanceStore().updatePolicyState(
|
107
|
+
applicationNftId,
|
108
|
+
DECLINED());
|
109
|
+
|
110
|
+
emit LogPolicyServicePolicyDeclined(applicationNftId);
|
102
111
|
}
|
103
112
|
|
104
|
-
event LogDebug(uint idx, string message);
|
105
113
|
|
106
|
-
/// @
|
107
|
-
function
|
114
|
+
/// @inheritdoc IPolicyService
|
115
|
+
function createPolicy(
|
108
116
|
NftId applicationNftId, // = policyNftId
|
109
117
|
bool requirePremiumPayment,
|
110
118
|
Timestamp activateAt
|
@@ -146,19 +154,20 @@ contract PolicyService is
|
|
146
154
|
|
147
155
|
// optional activation of policy
|
148
156
|
if(activateAt > zeroTimestamp()) {
|
149
|
-
newPolicyState = ACTIVE();
|
150
157
|
applicationInfo.activatedAt = activateAt;
|
151
158
|
applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
|
152
159
|
}
|
153
160
|
|
154
|
-
|
161
|
+
IPolicy.Premium memory premium;
|
162
|
+
|
163
|
+
// optional: calculate the premium and update counters for collection at the end of this function
|
155
164
|
if(requirePremiumPayment) {
|
156
|
-
|
165
|
+
premium = _calculateAndProcessPremium(
|
157
166
|
instance,
|
158
167
|
applicationNftId,
|
159
168
|
applicationInfo);
|
160
169
|
|
161
|
-
applicationInfo.premiumPaidAmount =
|
170
|
+
applicationInfo.premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
|
162
171
|
}
|
163
172
|
|
164
173
|
// store updated policy info
|
@@ -170,9 +179,17 @@ contract PolicyService is
|
|
170
179
|
// TODO add calling pool contract if it needs to validate application
|
171
180
|
|
172
181
|
// TODO: add logging
|
182
|
+
|
183
|
+
// optional: transfer funds for premium
|
184
|
+
if(requirePremiumPayment) {
|
185
|
+
_transferFunds(instanceReader, applicationNftId, applicationInfo.productNftId, premium);
|
186
|
+
}
|
187
|
+
|
188
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
173
189
|
}
|
174
190
|
|
175
191
|
|
192
|
+
/// @inheritdoc IPolicyService
|
176
193
|
function collectPremium(
|
177
194
|
NftId policyNftId,
|
178
195
|
Timestamp activateAt
|
@@ -186,8 +203,8 @@ contract PolicyService is
|
|
186
203
|
StateId stateId = instanceReader.getPolicyState(policyNftId);
|
187
204
|
|
188
205
|
// check policy is in state collateralized or active
|
189
|
-
if (!(stateId == COLLATERALIZED()
|
190
|
-
revert
|
206
|
+
if (!(stateId == COLLATERALIZED())) {
|
207
|
+
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
191
208
|
}
|
192
209
|
|
193
210
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -197,50 +214,99 @@ contract PolicyService is
|
|
197
214
|
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
198
215
|
}
|
199
216
|
|
200
|
-
|
217
|
+
// calculate premium
|
218
|
+
IPolicy.Premium memory premium = _calculateAndProcessPremium(
|
201
219
|
instance,
|
202
220
|
policyNftId,
|
203
221
|
policyInfo);
|
204
222
|
|
205
|
-
|
223
|
+
policyInfo.premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
|
206
224
|
|
207
|
-
|
208
|
-
|
225
|
+
// optionally activate policy
|
226
|
+
if(activateAt.gtz()) {
|
227
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
209
228
|
}
|
210
229
|
|
230
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
231
|
+
|
211
232
|
// TODO: add logging
|
233
|
+
|
234
|
+
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
235
|
+
|
236
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
212
237
|
}
|
213
238
|
|
239
|
+
/// @inheritdoc IPolicyService
|
214
240
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
215
241
|
// check caller is registered product
|
216
242
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
217
243
|
InstanceReader instanceReader = instance.getInstanceReader();
|
218
244
|
|
219
245
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
246
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
220
247
|
|
221
|
-
|
222
|
-
policyInfo.activatedAt.eqz(),
|
223
|
-
"ERROR:PRS-020:ALREADY_ACTIVATED");
|
224
|
-
|
225
|
-
policyInfo.activatedAt = activateAt;
|
226
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
227
|
-
|
228
|
-
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
|
248
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
229
249
|
|
230
250
|
// TODO: add logging
|
251
|
+
|
252
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
231
253
|
}
|
232
254
|
|
233
255
|
|
256
|
+
/// @inheritdoc IPolicyService
|
234
257
|
function expire(
|
235
|
-
NftId policyNftId
|
258
|
+
NftId policyNftId,
|
259
|
+
Timestamp expireAt
|
236
260
|
)
|
237
261
|
external
|
238
262
|
override
|
239
|
-
|
263
|
+
virtual
|
264
|
+
returns (Timestamp expiredAt)
|
240
265
|
{
|
241
|
-
|
266
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
267
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
268
|
+
|
269
|
+
// check policy matches with calling product
|
270
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
271
|
+
if(policyInfo.productNftId != productNftId) {
|
272
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
273
|
+
policyNftId,
|
274
|
+
policyInfo.productNftId,
|
275
|
+
productNftId);
|
276
|
+
}
|
277
|
+
|
278
|
+
// check policy is active
|
279
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
280
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
281
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
282
|
+
}
|
283
|
+
|
284
|
+
// set return value to provided timestamp
|
285
|
+
expiredAt = expireAt;
|
286
|
+
|
287
|
+
// update expiredAt to current block timestamp if not set
|
288
|
+
if (expiredAt.eqz()) {
|
289
|
+
expiredAt = TimestampLib.blockTimestamp();
|
290
|
+
}
|
291
|
+
|
292
|
+
// check expiredAt represents a valid expiry time
|
293
|
+
if (expiredAt >= policyInfo.expiredAt) {
|
294
|
+
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
295
|
+
}
|
296
|
+
if (expiredAt < TimestampLib.blockTimestamp()) {
|
297
|
+
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
298
|
+
}
|
299
|
+
|
300
|
+
// update policyInfo with new expiredAt timestamp
|
301
|
+
policyInfo.expiredAt = expiredAt;
|
302
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
303
|
+
|
304
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
305
|
+
|
306
|
+
// TODO: add callback IPolicyHolder.policyExpired() if applicable
|
242
307
|
}
|
243
308
|
|
309
|
+
|
244
310
|
function close(
|
245
311
|
NftId policyNftId
|
246
312
|
)
|
@@ -250,43 +316,48 @@ contract PolicyService is
|
|
250
316
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
251
317
|
InstanceReader instanceReader = instance.getInstanceReader();
|
252
318
|
|
319
|
+
// check that policy has been activated
|
253
320
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
254
|
-
|
255
|
-
if (policyInfo
|
256
|
-
revert
|
321
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
322
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
323
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
257
324
|
}
|
258
325
|
|
259
|
-
|
260
|
-
if (
|
261
|
-
revert
|
326
|
+
// check that policy has not already been closed
|
327
|
+
if (policyInfo.closedAt.gtz()) {
|
328
|
+
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
262
329
|
}
|
263
330
|
|
264
|
-
|
265
|
-
|
331
|
+
// check that policy does not have any open claims
|
332
|
+
if (policyInfo.openClaimsCount > 0) {
|
333
|
+
revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
266
334
|
}
|
267
335
|
|
268
336
|
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
337
|
+
// TODO consider to remove requirement for fully paid premiums altogether
|
269
338
|
if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
|
270
339
|
revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
271
340
|
}
|
272
341
|
|
273
|
-
|
274
|
-
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
275
|
-
}
|
276
|
-
|
277
|
-
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
278
|
-
|
342
|
+
// release (remaining) collateral that was blocked by policy
|
279
343
|
_poolService.releaseCollateral(
|
280
344
|
instance,
|
281
345
|
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
282
346
|
policyNftId,
|
283
347
|
policyInfo);
|
284
348
|
|
349
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
350
|
+
|
351
|
+
// update policy state to closed
|
352
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
285
353
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
354
|
+
|
355
|
+
// TODO add logging
|
286
356
|
}
|
287
357
|
|
288
358
|
|
289
|
-
|
359
|
+
/// @dev calculates the premium and updates all counters in the other services
|
360
|
+
function _calculateAndProcessPremium(
|
290
361
|
IInstance instance,
|
291
362
|
NftId applicationNftId,
|
292
363
|
IPolicy.PolicyInfo memory applicationInfo
|
@@ -294,13 +365,14 @@ contract PolicyService is
|
|
294
365
|
internal
|
295
366
|
virtual
|
296
367
|
returns (
|
297
|
-
|
368
|
+
IPolicy.Premium memory premium
|
298
369
|
)
|
299
370
|
{
|
300
371
|
NftId productNftId = applicationInfo.productNftId;
|
372
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
301
373
|
|
302
374
|
// calculate premium details
|
303
|
-
|
375
|
+
premium = _pricingService.calculatePremium(
|
304
376
|
productNftId,
|
305
377
|
applicationInfo.riskId,
|
306
378
|
applicationInfo.sumInsuredAmount,
|
@@ -309,90 +381,53 @@ contract PolicyService is
|
|
309
381
|
applicationInfo.bundleNftId,
|
310
382
|
applicationInfo.referralId);
|
311
383
|
|
384
|
+
// check if premium balance and allowance of policy holder is sufficient
|
385
|
+
{
|
386
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
387
|
+
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
388
|
+
|
389
|
+
_checkPremiumBalanceAndAllowance(
|
390
|
+
tokenHandler.getToken(),
|
391
|
+
address(tokenHandler),
|
392
|
+
policyHolder,
|
393
|
+
AmountLib.toAmount(premium.premiumAmount));
|
394
|
+
}
|
312
395
|
|
313
|
-
// update
|
314
|
-
|
315
|
-
instance,
|
316
|
-
productNftId,
|
317
|
-
applicationNftId,
|
318
|
-
applicationInfo.premiumAmount,
|
319
|
-
applicationInfo.bundleNftId,
|
320
|
-
applicationInfo.referralId,
|
321
|
-
premium);
|
322
|
-
}
|
323
|
-
|
324
|
-
|
325
|
-
function _processAndCollect(
|
326
|
-
IInstance instance,
|
327
|
-
NftId productNftId,
|
328
|
-
NftId policyNftId,
|
329
|
-
Amount premiumExpectedAmount,
|
330
|
-
NftId bundleNftId,
|
331
|
-
ReferralId referralId,
|
332
|
-
IPolicy.Premium memory premium
|
333
|
-
)
|
334
|
-
internal
|
335
|
-
virtual
|
336
|
-
returns (Amount premiumPaidAmount)
|
337
|
-
{
|
338
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
339
|
-
TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
340
|
-
address policyHolder = getRegistry().ownerOf(policyNftId);
|
341
|
-
premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
|
342
|
-
|
343
|
-
_checkPremiumBalanceAndAllowance(
|
344
|
-
tokenHandler,
|
345
|
-
policyHolder,
|
346
|
-
premiumExpectedAmount,
|
347
|
-
premiumPaidAmount);
|
348
|
-
|
349
|
-
_processSaleAndTransferFunds(
|
396
|
+
// update the counters
|
397
|
+
_processSale(
|
350
398
|
instanceReader,
|
351
399
|
instance.getInstanceStore(),
|
352
|
-
tokenHandler,
|
353
|
-
policyHolder,
|
354
400
|
productNftId,
|
355
|
-
bundleNftId,
|
356
|
-
referralId,
|
401
|
+
applicationInfo.bundleNftId,
|
402
|
+
applicationInfo.referralId,
|
357
403
|
premium);
|
358
404
|
}
|
359
405
|
|
360
406
|
|
361
|
-
function
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
Amount premiumPaidAmount
|
407
|
+
function _activate(
|
408
|
+
NftId policyNftId,
|
409
|
+
IPolicy.PolicyInfo memory policyInfo,
|
410
|
+
Timestamp activateAt
|
366
411
|
)
|
367
412
|
internal
|
368
413
|
virtual
|
369
|
-
view
|
414
|
+
view
|
415
|
+
returns (IPolicy.PolicyInfo memory)
|
370
416
|
{
|
371
|
-
|
372
|
-
|
373
|
-
if (premiumExpectedAmount < premiumPaidAmount) {
|
374
|
-
revert ErrorPolicyServicePremiumHigherThanExpected(premiumExpectedAmount, premiumPaidAmount);
|
417
|
+
if(! policyInfo.activatedAt.eqz()) {
|
418
|
+
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
375
419
|
}
|
376
420
|
|
377
|
-
|
378
|
-
|
379
|
-
uint256 allowance = tokenHandler.getToken().allowance(policyHolder, address(tokenHandler));
|
380
|
-
|
381
|
-
if (balance < premiumAmount) {
|
382
|
-
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premiumAmount, balance);
|
383
|
-
}
|
421
|
+
policyInfo.activatedAt = activateAt;
|
422
|
+
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
384
423
|
|
385
|
-
|
386
|
-
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, address(tokenHandler), premiumAmount, allowance);
|
387
|
-
}
|
424
|
+
return policyInfo;
|
388
425
|
}
|
389
426
|
|
390
|
-
|
391
|
-
function
|
427
|
+
/// @dev update counters by calling the involved services
|
428
|
+
function _processSale(
|
392
429
|
InstanceReader instanceReader,
|
393
430
|
InstanceStore instanceStore,
|
394
|
-
TokenHandler tokenHandler,
|
395
|
-
address policyHolder,
|
396
431
|
NftId productNftId,
|
397
432
|
NftId bundleNftId,
|
398
433
|
ReferralId referralId,
|
@@ -426,15 +461,84 @@ contract PolicyService is
|
|
426
461
|
_poolService.processSale(
|
427
462
|
bundleNftId,
|
428
463
|
premium);
|
464
|
+
}
|
465
|
+
|
466
|
+
|
467
|
+
/// @dev transfer the premium to the wallets the premium is distributed to
|
468
|
+
function _transferFunds(
|
469
|
+
InstanceReader instanceReader,
|
470
|
+
NftId policyNftId,
|
471
|
+
NftId productNftId,
|
472
|
+
IPolicy.Premium memory premium
|
473
|
+
)
|
474
|
+
internal
|
475
|
+
virtual
|
476
|
+
{
|
477
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
478
|
+
address policyHolder = getRegistry().ownerOf(policyNftId);
|
479
|
+
|
480
|
+
(
|
481
|
+
,
|
482
|
+
address distributionWallet,
|
483
|
+
address poolWallet,
|
484
|
+
address productWallet
|
485
|
+
) = _getDistributionNftAndWallets(
|
486
|
+
instanceReader,
|
487
|
+
productNftId);
|
488
|
+
|
489
|
+
tokenHandler.collectTokens(
|
490
|
+
policyHolder,
|
491
|
+
productWallet,
|
492
|
+
premium.productFeeAmount,
|
493
|
+
distributionWallet,
|
494
|
+
premium.distributionFeeAndCommissionAmount,
|
495
|
+
poolWallet,
|
496
|
+
premium.poolPremiumAndFeeAmount);
|
497
|
+
}
|
429
498
|
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
499
|
+
|
500
|
+
/// @dev checks that policy has been collateralized and has been activated.
|
501
|
+
/// does not check if policy has been expired or closed.
|
502
|
+
function _policyHasBeenActivated(
|
503
|
+
StateId policyState,
|
504
|
+
IPolicy.PolicyInfo memory policyInfo
|
505
|
+
)
|
506
|
+
internal
|
507
|
+
view
|
508
|
+
returns (bool)
|
509
|
+
{
|
510
|
+
if (policyState != COLLATERALIZED()) { return false; }
|
511
|
+
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
512
|
+
return true;
|
434
513
|
}
|
435
514
|
|
436
515
|
|
437
|
-
|
516
|
+
/// @dev checks the balance and allowance of the policy holder
|
517
|
+
function _checkPremiumBalanceAndAllowance(
|
518
|
+
IERC20Metadata token,
|
519
|
+
address tokenHandlerAddress,
|
520
|
+
address policyHolder,
|
521
|
+
Amount premiumAmount
|
522
|
+
)
|
523
|
+
internal
|
524
|
+
virtual
|
525
|
+
view
|
526
|
+
{
|
527
|
+
uint256 premium = premiumAmount.toInt();
|
528
|
+
uint256 balance = token.balanceOf(policyHolder);
|
529
|
+
uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
|
530
|
+
|
531
|
+
if (balance < premium) {
|
532
|
+
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
533
|
+
}
|
534
|
+
|
535
|
+
if (allowance < premium) {
|
536
|
+
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
|
537
|
+
}
|
538
|
+
}
|
539
|
+
|
540
|
+
|
541
|
+
function _getTokenHandler(
|
438
542
|
InstanceReader instanceReader,
|
439
543
|
NftId productNftId
|
440
544
|
)
|
@@ -469,6 +573,13 @@ contract PolicyService is
|
|
469
573
|
}
|
470
574
|
|
471
575
|
|
576
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
577
|
+
IRegistry.ObjectInfo memory productInfo;
|
578
|
+
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
579
|
+
product = Product(productInfo.objectAddress);
|
580
|
+
}
|
581
|
+
|
582
|
+
|
472
583
|
function _getDomain() internal pure override returns(ObjectType) {
|
473
584
|
return POLICY();
|
474
585
|
}
|
@@ -1,12 +1,9 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IVersionable} from "../
|
5
|
-
import {ProxyManager} from "../
|
4
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
6
6
|
import {PolicyService} from "./PolicyService.sol";
|
7
|
-
import {Registry} from "../registry/Registry.sol";
|
8
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
-
import {VersionLib} from "../type/Version.sol";
|
10
7
|
|
11
8
|
contract PolicyServiceManager is ProxyManager {
|
12
9
|
|
@@ -84,6 +84,7 @@ contract PricingService is
|
|
84
84
|
IInstance instance
|
85
85
|
) = _getAndVerifyComponentInfo(productNftId, PRODUCT(), false);
|
86
86
|
|
87
|
+
// get instance reader from local instance variable
|
87
88
|
reader = instance.getInstanceReader();
|
88
89
|
|
89
90
|
// calculate net premium
|
@@ -104,19 +105,21 @@ contract PricingService is
|
|
104
105
|
revert ErrorIPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
|
105
106
|
}
|
106
107
|
|
107
|
-
// calculate
|
108
|
+
// calculate fixed fees for product, pool, bundle
|
108
109
|
premium = _getFixedFeeAmounts(
|
109
110
|
netPremiumAmount,
|
110
111
|
productInfo,
|
111
112
|
bundleInfo
|
112
113
|
);
|
113
114
|
|
115
|
+
// calculate variable fees for product, pool, bundle
|
114
116
|
premium = _calculateVariableFeeAmounts(
|
115
117
|
premium,
|
116
118
|
productInfo,
|
117
119
|
bundleInfo
|
118
120
|
);
|
119
121
|
|
122
|
+
// calculate distribution fee and (if applicable) commission
|
120
123
|
premium = _calculateDistributionOwnerFeeAmount(
|
121
124
|
premium,
|
122
125
|
productInfo,
|
@@ -124,6 +127,7 @@ contract PricingService is
|
|
124
127
|
reader
|
125
128
|
);
|
126
129
|
|
130
|
+
// calculate resulting amounts for product, pool, and distribution wallets
|
127
131
|
premium = _calculateTargetWalletAmounts(premium);
|
128
132
|
|
129
133
|
// sanity check to validate the fee calculation
|
@@ -1,12 +1,9 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IVersionable} from "../
|
5
|
-
import {ProxyManager} from "../
|
4
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
6
6
|
import {PricingService} from "./PricingService.sol";
|
7
|
-
import {Registry} from "../registry/Registry.sol";
|
8
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
-
import {REGISTRY} from "../type/ObjectType.sol";
|
10
7
|
|
11
8
|
contract PricingServiceManager is ProxyManager {
|
12
9
|
|