@etherisc/gif-next 0.0.2-b61b9f6-206 → 0.0.2-b62165c-823
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 +31 -3
- 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 +223 -105
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +50 -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 +120 -31
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +9 -9
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +75 -75
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +213 -117
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +21 -21
- 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 +315 -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 +4 -0
- package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
- 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 +402 -62
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +94 -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 +220 -90
- 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 +264 -126
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +23 -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 +22 -67
- 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 +183 -108
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- 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 +235 -179
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +32 -32
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +107 -147
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +40 -60
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +22 -67
- 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/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 +50 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- 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 +95 -23
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +88 -88
- 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/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- 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 +255 -62
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -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 +4 -0
- package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- 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 +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- 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 +48 -112
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +25 -25
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- 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 +92 -87
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +25 -20
- 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/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 +7 -2
- 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/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/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 +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/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- 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/authorization/Authorization.sol +0 -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 +67 -33
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +5 -5
- package/contracts/instance/IInstanceService.sol +5 -5
- package/contracts/instance/Instance.sol +4 -4
- package/contracts/instance/InstanceAdmin.sol +25 -6
- package/contracts/instance/InstanceAuthorizationV3.sol +15 -14
- package/contracts/instance/InstanceReader.sol +24 -7
- package/contracts/instance/InstanceService.sol +60 -36
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +16 -1
- package/contracts/instance/base/ObjectLifecycle.sol +8 -4
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- 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 +17 -17
- 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 +189 -47
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +6 -0
- package/contracts/pool/IPoolService.sol +36 -26
- package/contracts/pool/Pool.sol +31 -16
- package/contracts/pool/PoolService.sol +161 -104
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +51 -56
- 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 +25 -30
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +1 -1
- package/contracts/product/IProductService.sol +1 -0
- package/contracts/product/PolicyService.sol +272 -171
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingService.sol +42 -41
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +33 -19
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/IRegistry.sol +26 -13
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +80 -82
- package/contracts/registry/RegistryAdmin.sol +33 -24
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +48 -50
- package/contracts/registry/ServiceAuthorizationV3.sol +7 -8
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +24 -37
- package/contracts/shared/ComponentService.sol +81 -21
- 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/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- 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 +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +1 -2
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/StakeManagerLib.sol +0 -25
- package/contracts/staking/Staking.sol +21 -37
- package/contracts/staking/StakingManager.sol +2 -6
- package/contracts/staking/StakingReader.sol +12 -16
- package/contracts/staking/StakingService.sol +8 -12
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ObjectType.sol +18 -18
- 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/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +3 -3
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- 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/NftIdSetManager.sol/NftIdSetManager.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,28 +78,42 @@ 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
|
-
bool requirePremiumPayment,
|
110
117
|
Timestamp activateAt
|
111
118
|
)
|
112
119
|
external
|
@@ -130,13 +137,8 @@ contract PolicyService is
|
|
130
137
|
productNftId);
|
131
138
|
}
|
132
139
|
|
133
|
-
StateId newPolicyState = COLLATERALIZED();
|
134
|
-
|
135
140
|
// actual collateralizaion
|
136
|
-
(
|
137
|
-
Amount localCollateralAmount,
|
138
|
-
Amount totalCollateralAmount
|
139
|
-
) = _poolService.lockCollateral(
|
141
|
+
_poolService.lockCollateral(
|
140
142
|
instance,
|
141
143
|
address(instanceReader.getComponentInfo(productNftId).token),
|
142
144
|
productNftId,
|
@@ -146,33 +148,49 @@ contract PolicyService is
|
|
146
148
|
|
147
149
|
// optional activation of policy
|
148
150
|
if(activateAt > zeroTimestamp()) {
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
// optional collection of premium
|
155
|
-
if(requirePremiumPayment) {
|
156
|
-
Amount premiumPaidAmount = _calculateAndCollectPremium(
|
157
|
-
instance,
|
158
|
-
applicationNftId,
|
159
|
-
applicationInfo);
|
160
|
-
|
161
|
-
applicationInfo.premiumPaidAmount = premiumPaidAmount;
|
151
|
+
applicationInfo = _activate(
|
152
|
+
applicationNftId,
|
153
|
+
applicationInfo,
|
154
|
+
activateAt);
|
162
155
|
}
|
163
156
|
|
164
|
-
//
|
157
|
+
// update policy and set state to collateralized
|
165
158
|
instance.getInstanceStore().updatePolicy(
|
166
159
|
applicationNftId,
|
167
160
|
applicationInfo,
|
168
|
-
|
161
|
+
COLLATERALIZED());
|
169
162
|
|
163
|
+
// calculate and store premium
|
164
|
+
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
165
|
+
productNftId,
|
166
|
+
applicationInfo.riskId,
|
167
|
+
applicationInfo.sumInsuredAmount,
|
168
|
+
applicationInfo.lifetime,
|
169
|
+
applicationInfo.applicationData,
|
170
|
+
applicationInfo.bundleNftId,
|
171
|
+
applicationInfo.referralId);
|
172
|
+
|
173
|
+
instance.getInstanceStore().createPremium(
|
174
|
+
applicationNftId,
|
175
|
+
premium);
|
176
|
+
|
177
|
+
// update referral counter
|
178
|
+
{
|
179
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
180
|
+
_distributionService.processReferral(
|
181
|
+
productInfo.distributionNftId,
|
182
|
+
applicationInfo.referralId);
|
183
|
+
}
|
184
|
+
|
170
185
|
// TODO add calling pool contract if it needs to validate application
|
171
186
|
|
172
187
|
// TODO: add logging
|
188
|
+
|
189
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
173
190
|
}
|
174
191
|
|
175
192
|
|
193
|
+
/// @inheritdoc IPolicyService
|
176
194
|
function collectPremium(
|
177
195
|
NftId policyNftId,
|
178
196
|
Timestamp activateAt
|
@@ -186,8 +204,8 @@ contract PolicyService is
|
|
186
204
|
StateId stateId = instanceReader.getPolicyState(policyNftId);
|
187
205
|
|
188
206
|
// check policy is in state collateralized or active
|
189
|
-
if (!(stateId == COLLATERALIZED()
|
190
|
-
revert
|
207
|
+
if (!(stateId == COLLATERALIZED())) {
|
208
|
+
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
191
209
|
}
|
192
210
|
|
193
211
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -197,50 +215,100 @@ contract PolicyService is
|
|
197
215
|
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
198
216
|
}
|
199
217
|
|
200
|
-
|
201
|
-
|
202
|
-
policyNftId,
|
203
|
-
policyInfo);
|
218
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
219
|
+
policyInfo.premiumPaidAmount = premium.premiumAmount;
|
204
220
|
|
205
|
-
|
221
|
+
_processPremium(
|
222
|
+
instance,
|
223
|
+
policyNftId,
|
224
|
+
policyInfo,
|
225
|
+
premium);
|
206
226
|
|
207
|
-
|
208
|
-
|
227
|
+
// optionally activate policy
|
228
|
+
if(activateAt.gtz()) {
|
229
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
209
230
|
}
|
210
231
|
|
232
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
233
|
+
|
211
234
|
// TODO: add logging
|
235
|
+
|
236
|
+
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
237
|
+
|
238
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
212
239
|
}
|
213
240
|
|
241
|
+
/// @inheritdoc IPolicyService
|
214
242
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
215
243
|
// check caller is registered product
|
216
244
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
217
245
|
InstanceReader instanceReader = instance.getInstanceReader();
|
218
246
|
|
219
247
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
248
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
220
249
|
|
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());
|
250
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
229
251
|
|
230
252
|
// TODO: add logging
|
253
|
+
|
254
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
231
255
|
}
|
232
256
|
|
233
257
|
|
258
|
+
/// @inheritdoc IPolicyService
|
234
259
|
function expire(
|
235
|
-
NftId policyNftId
|
260
|
+
NftId policyNftId,
|
261
|
+
Timestamp expireAt
|
236
262
|
)
|
237
263
|
external
|
238
264
|
override
|
239
|
-
|
265
|
+
virtual
|
266
|
+
returns (Timestamp expiredAt)
|
240
267
|
{
|
241
|
-
|
268
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
269
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
270
|
+
|
271
|
+
// check policy matches with calling product
|
272
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
273
|
+
if(policyInfo.productNftId != productNftId) {
|
274
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
275
|
+
policyNftId,
|
276
|
+
policyInfo.productNftId,
|
277
|
+
productNftId);
|
278
|
+
}
|
279
|
+
|
280
|
+
// check policy is active
|
281
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
282
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
283
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
284
|
+
}
|
285
|
+
|
286
|
+
// set return value to provided timestamp
|
287
|
+
expiredAt = expireAt;
|
288
|
+
|
289
|
+
// update expiredAt to current block timestamp if not set
|
290
|
+
if (expiredAt.eqz()) {
|
291
|
+
expiredAt = TimestampLib.blockTimestamp();
|
292
|
+
}
|
293
|
+
|
294
|
+
// check expiredAt represents a valid expiry time
|
295
|
+
if (expiredAt >= policyInfo.expiredAt) {
|
296
|
+
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
297
|
+
}
|
298
|
+
if (expiredAt < TimestampLib.blockTimestamp()) {
|
299
|
+
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
300
|
+
}
|
301
|
+
|
302
|
+
// update policyInfo with new expiredAt timestamp
|
303
|
+
policyInfo.expiredAt = expiredAt;
|
304
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
305
|
+
|
306
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
307
|
+
|
308
|
+
// TODO: add callback IPolicyHolder.policyExpired() if applicable
|
242
309
|
}
|
243
310
|
|
311
|
+
|
244
312
|
function close(
|
245
313
|
NftId policyNftId
|
246
314
|
)
|
@@ -250,163 +318,120 @@ contract PolicyService is
|
|
250
318
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
251
319
|
InstanceReader instanceReader = instance.getInstanceReader();
|
252
320
|
|
321
|
+
// check that policy has been activated
|
253
322
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
254
|
-
|
255
|
-
if (policyInfo
|
256
|
-
revert
|
323
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
324
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
325
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
257
326
|
}
|
258
327
|
|
259
|
-
|
260
|
-
if (
|
261
|
-
revert
|
328
|
+
// check that policy has not already been closed
|
329
|
+
if (policyInfo.closedAt.gtz()) {
|
330
|
+
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
262
331
|
}
|
263
332
|
|
264
|
-
|
265
|
-
|
333
|
+
// check that policy does not have any open claims
|
334
|
+
if (policyInfo.openClaimsCount > 0) {
|
335
|
+
revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
266
336
|
}
|
267
337
|
|
268
338
|
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
339
|
+
// TODO consider to remove requirement for fully paid premiums altogether
|
269
340
|
if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
|
270
341
|
revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
271
342
|
}
|
272
343
|
|
273
|
-
|
274
|
-
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
275
|
-
}
|
276
|
-
|
277
|
-
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
278
|
-
|
344
|
+
// release (remaining) collateral that was blocked by policy
|
279
345
|
_poolService.releaseCollateral(
|
280
346
|
instance,
|
281
347
|
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
282
348
|
policyNftId,
|
283
349
|
policyInfo);
|
284
350
|
|
351
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
352
|
+
|
353
|
+
// update policy state to closed
|
354
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
285
355
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
356
|
+
|
357
|
+
// TODO add logging
|
286
358
|
}
|
287
359
|
|
288
360
|
|
289
|
-
|
361
|
+
/// @dev calculates the premium and updates all counters in the other services
|
362
|
+
function _processPremium(
|
290
363
|
IInstance instance,
|
291
364
|
NftId applicationNftId,
|
292
|
-
IPolicy.PolicyInfo memory applicationInfo
|
365
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
366
|
+
IPolicy.PremiumInfo memory premium
|
293
367
|
)
|
294
368
|
internal
|
295
369
|
virtual
|
296
|
-
returns (
|
297
|
-
Amount premiumPaidAmount
|
298
|
-
)
|
299
370
|
{
|
300
371
|
NftId productNftId = applicationInfo.productNftId;
|
301
|
-
|
302
|
-
// calculate premium details
|
303
|
-
IPolicy.Premium memory premium = _pricingService.calculatePremium(
|
304
|
-
productNftId,
|
305
|
-
applicationInfo.riskId,
|
306
|
-
applicationInfo.sumInsuredAmount,
|
307
|
-
applicationInfo.lifetime,
|
308
|
-
applicationInfo.applicationData,
|
309
|
-
applicationInfo.bundleNftId,
|
310
|
-
applicationInfo.referralId);
|
311
|
-
|
312
|
-
|
313
|
-
// update financials and transfer premium tokens
|
314
|
-
premiumPaidAmount = _processAndCollect(
|
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
372
|
InstanceReader instanceReader = instance.getInstanceReader();
|
339
|
-
TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
340
|
-
address policyHolder = getRegistry().ownerOf(policyNftId);
|
341
|
-
premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
|
342
373
|
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
374
|
+
// check if premium balance and allowance of policy holder is sufficient
|
375
|
+
{
|
376
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
377
|
+
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
378
|
+
|
379
|
+
_checkPremiumBalanceAndAllowance(
|
380
|
+
tokenHandler.getToken(),
|
381
|
+
address(tokenHandler),
|
382
|
+
policyHolder,
|
383
|
+
premium.premiumAmount);
|
384
|
+
}
|
348
385
|
|
349
|
-
|
386
|
+
// update the counters
|
387
|
+
_processSale(
|
350
388
|
instanceReader,
|
351
389
|
instance.getInstanceStore(),
|
352
|
-
tokenHandler,
|
353
|
-
policyHolder,
|
354
390
|
productNftId,
|
355
|
-
bundleNftId,
|
356
|
-
referralId,
|
391
|
+
applicationInfo.bundleNftId,
|
392
|
+
applicationInfo.referralId,
|
357
393
|
premium);
|
358
394
|
}
|
359
395
|
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
Amount premiumExpectedAmount,
|
365
|
-
Amount premiumPaidAmount
|
396
|
+
function _activate(
|
397
|
+
NftId policyNftId,
|
398
|
+
IPolicy.PolicyInfo memory policyInfo,
|
399
|
+
Timestamp activateAt
|
366
400
|
)
|
367
401
|
internal
|
368
402
|
virtual
|
369
|
-
view
|
403
|
+
view
|
404
|
+
returns (IPolicy.PolicyInfo memory)
|
370
405
|
{
|
371
|
-
//
|
372
|
-
|
373
|
-
|
374
|
-
revert ErrorPolicyServicePremiumHigherThanExpected(premiumExpectedAmount, premiumPaidAmount);
|
406
|
+
// fail if policy has already been activated and activateAt is different
|
407
|
+
if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
|
408
|
+
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
375
409
|
}
|
376
410
|
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
if (balance < premiumAmount) {
|
382
|
-
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premiumAmount, balance);
|
411
|
+
// ignore if policy has already been activated and activateAt is the same
|
412
|
+
if (policyInfo.activatedAt == activateAt) {
|
413
|
+
return policyInfo;
|
383
414
|
}
|
384
415
|
|
385
|
-
|
386
|
-
|
387
|
-
}
|
388
|
-
}
|
416
|
+
policyInfo.activatedAt = activateAt;
|
417
|
+
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
389
418
|
|
419
|
+
return policyInfo;
|
420
|
+
}
|
390
421
|
|
391
|
-
|
422
|
+
/// @dev update counters by calling the involved services
|
423
|
+
function _processSale(
|
392
424
|
InstanceReader instanceReader,
|
393
425
|
InstanceStore instanceStore,
|
394
|
-
TokenHandler tokenHandler,
|
395
|
-
address policyHolder,
|
396
426
|
NftId productNftId,
|
397
427
|
NftId bundleNftId,
|
398
428
|
ReferralId referralId,
|
399
|
-
IPolicy.
|
429
|
+
IPolicy.PremiumInfo memory premium
|
400
430
|
)
|
401
431
|
internal
|
402
432
|
virtual
|
403
433
|
{
|
404
|
-
(
|
405
|
-
NftId distributionNftId,
|
406
|
-
address distributionWallet,
|
407
|
-
address poolWallet,
|
408
|
-
address productWallet
|
409
|
-
) = _getDistributionNftAndWallets(
|
434
|
+
(NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
|
410
435
|
instanceReader,
|
411
436
|
productNftId);
|
412
437
|
|
@@ -414,7 +439,7 @@ contract PolicyService is
|
|
414
439
|
_componentService.increaseProductFees(
|
415
440
|
instanceStore,
|
416
441
|
productNftId,
|
417
|
-
|
442
|
+
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
418
443
|
|
419
444
|
// update distribution fees and distributor commission and pool fees
|
420
445
|
_distributionService.processSale(
|
@@ -426,15 +451,84 @@ contract PolicyService is
|
|
426
451
|
_poolService.processSale(
|
427
452
|
bundleNftId,
|
428
453
|
premium);
|
454
|
+
}
|
455
|
+
|
456
|
+
|
457
|
+
/// @dev transfer the premium to the wallets the premium is distributed to
|
458
|
+
function _transferFunds(
|
459
|
+
InstanceReader instanceReader,
|
460
|
+
NftId policyNftId,
|
461
|
+
NftId productNftId,
|
462
|
+
IPolicy.PremiumInfo memory premium
|
463
|
+
)
|
464
|
+
internal
|
465
|
+
virtual
|
466
|
+
{
|
467
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
468
|
+
address policyHolder = getRegistry().ownerOf(policyNftId);
|
469
|
+
|
470
|
+
(
|
471
|
+
,
|
472
|
+
address distributionWallet,
|
473
|
+
address poolWallet,
|
474
|
+
address productWallet
|
475
|
+
) = _getDistributionNftAndWallets(
|
476
|
+
instanceReader,
|
477
|
+
productNftId);
|
478
|
+
|
479
|
+
tokenHandler.collectTokensToThreeRecipients(
|
480
|
+
policyHolder,
|
481
|
+
productWallet,
|
482
|
+
premium.productFeeAmount,
|
483
|
+
distributionWallet,
|
484
|
+
premium.distributionFeeAndCommissionAmount,
|
485
|
+
poolWallet,
|
486
|
+
premium.poolPremiumAndFeeAmount);
|
487
|
+
}
|
488
|
+
|
429
489
|
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
490
|
+
/// @dev checks that policy has been collateralized and has been activated.
|
491
|
+
/// does not check if policy has been expired or closed.
|
492
|
+
function _policyHasBeenActivated(
|
493
|
+
StateId policyState,
|
494
|
+
IPolicy.PolicyInfo memory policyInfo
|
495
|
+
)
|
496
|
+
internal
|
497
|
+
view
|
498
|
+
returns (bool)
|
499
|
+
{
|
500
|
+
if (policyState != COLLATERALIZED()) { return false; }
|
501
|
+
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
502
|
+
return true;
|
434
503
|
}
|
435
504
|
|
436
505
|
|
437
|
-
|
506
|
+
/// @dev checks the balance and allowance of the policy holder
|
507
|
+
function _checkPremiumBalanceAndAllowance(
|
508
|
+
IERC20Metadata token,
|
509
|
+
address tokenHandlerAddress,
|
510
|
+
address policyHolder,
|
511
|
+
Amount premiumAmount
|
512
|
+
)
|
513
|
+
internal
|
514
|
+
virtual
|
515
|
+
view
|
516
|
+
{
|
517
|
+
uint256 premium = premiumAmount.toInt();
|
518
|
+
uint256 balance = token.balanceOf(policyHolder);
|
519
|
+
uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
|
520
|
+
|
521
|
+
if (balance < premium) {
|
522
|
+
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
523
|
+
}
|
524
|
+
|
525
|
+
if (allowance < premium) {
|
526
|
+
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
|
527
|
+
}
|
528
|
+
}
|
529
|
+
|
530
|
+
|
531
|
+
function _getTokenHandler(
|
438
532
|
InstanceReader instanceReader,
|
439
533
|
NftId productNftId
|
440
534
|
)
|
@@ -469,6 +563,13 @@ contract PolicyService is
|
|
469
563
|
}
|
470
564
|
|
471
565
|
|
566
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
567
|
+
IRegistry.ObjectInfo memory productInfo;
|
568
|
+
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
569
|
+
product = Product(productInfo.objectAddress);
|
570
|
+
}
|
571
|
+
|
572
|
+
|
472
573
|
function _getDomain() internal pure override returns(ObjectType) {
|
473
574
|
return POLICY();
|
474
575
|
}
|
@@ -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
|
|