@etherisc/gif-next 0.0.2-782a7d8-939 → 0.0.2-782e47c-610
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 +49 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -450
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +286 -235
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +77 -108
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -160
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +165 -47
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
- 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 +64 -84
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -219
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +290 -141
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +189 -194
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -100
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +211 -266
- 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/Cloneable.sol/Cloneable.json +0 -53
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- 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 +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -315
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +63 -138
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +44 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +429 -172
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +119 -94
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +218 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -290
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +233 -100
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -576
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +287 -250
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +46 -89
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +62 -164
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +41 -96
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +216 -169
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +68 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +127 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +197 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +56 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -79
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +15 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +269 -311
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +64 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +130 -253
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +58 -121
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +35 -378
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +246 -42
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -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 +460 -100
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1618 -170
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +48 -123
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -76
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +262 -184
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +72 -111
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +10 -109
- 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 +166 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
- 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/IPolicyHolder.sol/IPolicyHolder.json +0 -42
- 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/IService.sol/IService.json +13 -0
- 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/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -275
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +10 -109
- 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 +27 -27
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +97 -101
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -302
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +47 -110
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +85 -178
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -98
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +201 -148
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +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 +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- 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 +4 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- 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 +58 -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/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- 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/AccessAdmin.sol +589 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +217 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +136 -0
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/authorization/IServiceAuthorization.sol +38 -0
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +90 -0
- package/contracts/distribution/BasicDistribution.sol +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +145 -111
- package/contracts/distribution/DistributionService.sol +83 -45
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +25 -39
- package/contracts/distribution/IDistributionService.sol +23 -3
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +20 -39
- package/contracts/instance/IInstanceService.sol +34 -23
- package/contracts/instance/Instance.sol +110 -117
- package/contracts/instance/InstanceAdmin.sol +221 -267
- package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
- package/contracts/instance/InstanceReader.sol +56 -16
- package/contracts/instance/InstanceService.sol +192 -87
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +26 -20
- package/contracts/instance/base/BalanceStore.sol +11 -6
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- 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 +22 -22
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +73 -51
- package/contracts/oracle/OracleService.sol +9 -7
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +166 -0
- package/contracts/pool/BasicPoolAuthorization.sol +58 -0
- package/contracts/pool/BundleService.sol +210 -68
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +6 -60
- package/contracts/pool/IPoolService.sol +36 -26
- package/contracts/pool/Pool.sol +165 -138
- package/contracts/pool/PoolService.sol +171 -115
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +58 -64
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +53 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +125 -80
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +28 -5
- package/contracts/product/IPolicyService.sol +27 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +7 -10
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +285 -187
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingService.sol +48 -48
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +162 -114
- package/contracts/product/{ProductService.sol → RiskService.sol} +16 -43
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +63 -19
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +333 -207
- package/contracts/registry/RegistryAdmin.sol +376 -149
- package/contracts/registry/RegistryService.sol +11 -25
- package/contracts/registry/RegistryServiceManager.sol +2 -7
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +491 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +30 -43
- package/contracts/shared/ComponentService.sol +103 -80
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +2 -2
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +1 -2
- package/contracts/shared/IPolicyHolder.sol +0 -9
- package/contracts/shared/IService.sol +8 -1
- package/contracts/shared/InitializableCustom.sol +2 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +51 -23
- package/contracts/shared/KeyValueStore.sol +6 -2
- package/contracts/shared/Lifecycle.sol +16 -69
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +7 -53
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +32 -27
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -3
- package/contracts/staking/IStakingService.sol +22 -11
- package/contracts/staking/StakeManagerLib.sol +70 -25
- package/contracts/staking/Staking.sol +84 -137
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +2 -6
- package/contracts/staking/StakingReader.sol +13 -17
- package/contracts/staking/StakingService.sol +68 -67
- package/contracts/staking/StakingServiceManager.sol +2 -3
- package/contracts/staking/StakingStore.sol +93 -60
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ObjectType.sol +171 -64
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RoleId.sol +103 -75
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +1 -0
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +34 -9
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +4 -5
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +6 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- 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/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -600
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerCustom.sol +0 -736
- package/contracts/shared/AccessManagerExtended.sol +0 -470
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- /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, PAID} 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,
|
@@ -54,8 +47,6 @@ contract PolicyService is
|
|
54
47
|
IPoolService internal _poolService;
|
55
48
|
IPricingService internal _pricingService;
|
56
49
|
|
57
|
-
event LogProductServiceSender(address sender);
|
58
|
-
|
59
50
|
function _initialize(
|
60
51
|
address owner,
|
61
52
|
bytes memory data
|
@@ -70,7 +61,7 @@ contract PolicyService is
|
|
70
61
|
address authority
|
71
62
|
) = abi.decode(data, (address, address, address));
|
72
63
|
|
73
|
-
|
64
|
+
_initializeService(registryAddress, authority, owner);
|
74
65
|
|
75
66
|
VersionPart majorVersion = getVersion().toMajorPart();
|
76
67
|
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
@@ -81,37 +72,46 @@ contract PolicyService is
|
|
81
72
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
82
73
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
83
74
|
|
84
|
-
|
85
|
-
}
|
86
|
-
|
87
|
-
|
88
|
-
function getDomain() public pure override returns(ObjectType) {
|
89
|
-
return POLICY();
|
90
|
-
}
|
91
|
-
|
92
|
-
|
93
|
-
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
94
|
-
IRegistry.ObjectInfo memory productInfo;
|
95
|
-
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
96
|
-
product = Product(productInfo.objectAddress);
|
75
|
+
_registerInterface(type(IPolicyService).interfaceId);
|
97
76
|
}
|
98
77
|
|
99
78
|
|
100
79
|
function decline(
|
101
|
-
NftId policyNftId
|
80
|
+
NftId applicationNftId // = policyNftId
|
102
81
|
)
|
103
82
|
external
|
104
|
-
override
|
83
|
+
virtual override
|
105
84
|
{
|
106
|
-
|
85
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
86
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
87
|
+
|
88
|
+
// check policy is in state applied
|
89
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
90
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
91
|
+
}
|
92
|
+
|
93
|
+
// check policy matches with calling product
|
94
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
95
|
+
if(applicationInfo.productNftId != productNftId) {
|
96
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
97
|
+
applicationNftId,
|
98
|
+
applicationInfo.productNftId,
|
99
|
+
productNftId);
|
100
|
+
}
|
101
|
+
|
102
|
+
|
103
|
+
// store updated policy info
|
104
|
+
instance.getInstanceStore().updatePolicyState(
|
105
|
+
applicationNftId,
|
106
|
+
DECLINED());
|
107
|
+
|
108
|
+
emit LogPolicyServicePolicyDeclined(applicationNftId);
|
107
109
|
}
|
108
110
|
|
109
|
-
event LogDebug(uint idx, string message);
|
110
111
|
|
111
|
-
/// @
|
112
|
-
function
|
112
|
+
/// @inheritdoc IPolicyService
|
113
|
+
function createPolicy(
|
113
114
|
NftId applicationNftId, // = policyNftId
|
114
|
-
bool requirePremiumPayment,
|
115
115
|
Timestamp activateAt
|
116
116
|
)
|
117
117
|
external
|
@@ -135,13 +135,8 @@ contract PolicyService is
|
|
135
135
|
productNftId);
|
136
136
|
}
|
137
137
|
|
138
|
-
StateId newPolicyState = COLLATERALIZED();
|
139
|
-
|
140
138
|
// actual collateralizaion
|
141
|
-
(
|
142
|
-
Amount localCollateralAmount,
|
143
|
-
Amount totalCollateralAmount
|
144
|
-
) = _poolService.lockCollateral(
|
139
|
+
_poolService.lockCollateral(
|
145
140
|
instance,
|
146
141
|
address(instanceReader.getComponentInfo(productNftId).token),
|
147
142
|
productNftId,
|
@@ -151,33 +146,49 @@ contract PolicyService is
|
|
151
146
|
|
152
147
|
// optional activation of policy
|
153
148
|
if(activateAt > zeroTimestamp()) {
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
// optional collection of premium
|
160
|
-
if(requirePremiumPayment) {
|
161
|
-
Amount premiumPaidAmount = _calculateAndCollectPremium(
|
162
|
-
instance,
|
163
|
-
applicationNftId,
|
164
|
-
applicationInfo);
|
165
|
-
|
166
|
-
applicationInfo.premiumPaidAmount = premiumPaidAmount;
|
149
|
+
applicationInfo = _activate(
|
150
|
+
applicationNftId,
|
151
|
+
applicationInfo,
|
152
|
+
activateAt);
|
167
153
|
}
|
168
154
|
|
169
|
-
//
|
155
|
+
// update policy and set state to collateralized
|
170
156
|
instance.getInstanceStore().updatePolicy(
|
171
157
|
applicationNftId,
|
172
158
|
applicationInfo,
|
173
|
-
|
159
|
+
COLLATERALIZED());
|
160
|
+
|
161
|
+
// calculate and store premium
|
162
|
+
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
163
|
+
productNftId,
|
164
|
+
applicationInfo.riskId,
|
165
|
+
applicationInfo.sumInsuredAmount,
|
166
|
+
applicationInfo.lifetime,
|
167
|
+
applicationInfo.applicationData,
|
168
|
+
applicationInfo.bundleNftId,
|
169
|
+
applicationInfo.referralId);
|
170
|
+
|
171
|
+
instance.getInstanceStore().createPremium(
|
172
|
+
applicationNftId,
|
173
|
+
premium);
|
174
174
|
|
175
|
+
// update referral counter
|
176
|
+
{
|
177
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
178
|
+
_distributionService.processReferral(
|
179
|
+
productInfo.distributionNftId,
|
180
|
+
applicationInfo.referralId);
|
181
|
+
}
|
182
|
+
|
175
183
|
// TODO add calling pool contract if it needs to validate application
|
176
184
|
|
177
185
|
// TODO: add logging
|
186
|
+
|
187
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
178
188
|
}
|
179
189
|
|
180
190
|
|
191
|
+
/// @inheritdoc IPolicyService
|
181
192
|
function collectPremium(
|
182
193
|
NftId policyNftId,
|
183
194
|
Timestamp activateAt
|
@@ -191,61 +202,110 @@ contract PolicyService is
|
|
191
202
|
StateId stateId = instanceReader.getPolicyState(policyNftId);
|
192
203
|
|
193
204
|
// check policy is in state collateralized or active
|
194
|
-
if (!(stateId == COLLATERALIZED()
|
195
|
-
revert
|
205
|
+
if (!(stateId == COLLATERALIZED())) {
|
206
|
+
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
196
207
|
}
|
197
208
|
|
198
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
199
|
-
|
200
209
|
// check if premium is already collected
|
201
|
-
if (
|
202
|
-
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId
|
210
|
+
if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
|
211
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
203
212
|
}
|
204
213
|
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
214
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
215
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
216
|
+
|
217
|
+
_processPremium(
|
218
|
+
instance,
|
219
|
+
policyNftId,
|
220
|
+
policyInfo,
|
221
|
+
premium);
|
211
222
|
|
212
|
-
|
213
|
-
|
223
|
+
// optionally activate policy
|
224
|
+
if(activateAt.gtz()) {
|
225
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
214
226
|
}
|
215
227
|
|
228
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
229
|
+
instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
|
230
|
+
|
216
231
|
// TODO: add logging
|
232
|
+
|
233
|
+
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
234
|
+
|
235
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
217
236
|
}
|
218
237
|
|
238
|
+
/// @inheritdoc IPolicyService
|
219
239
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
220
240
|
// check caller is registered product
|
221
241
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
222
242
|
InstanceReader instanceReader = instance.getInstanceReader();
|
223
243
|
|
224
244
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
245
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
225
246
|
|
226
|
-
|
227
|
-
policyInfo.activatedAt.eqz(),
|
228
|
-
"ERROR:PRS-020:ALREADY_ACTIVATED");
|
229
|
-
|
230
|
-
policyInfo.activatedAt = activateAt;
|
231
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
232
|
-
|
233
|
-
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
|
247
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
234
248
|
|
235
249
|
// TODO: add logging
|
250
|
+
|
251
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
236
252
|
}
|
237
253
|
|
238
254
|
|
255
|
+
/// @inheritdoc IPolicyService
|
239
256
|
function expire(
|
240
|
-
NftId policyNftId
|
257
|
+
NftId policyNftId,
|
258
|
+
Timestamp expireAt
|
241
259
|
)
|
242
260
|
external
|
243
261
|
override
|
244
|
-
|
262
|
+
virtual
|
263
|
+
returns (Timestamp expiredAt)
|
245
264
|
{
|
246
|
-
|
265
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
266
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
267
|
+
|
268
|
+
// check policy matches with calling product
|
269
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
270
|
+
if(policyInfo.productNftId != productNftId) {
|
271
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
272
|
+
policyNftId,
|
273
|
+
policyInfo.productNftId,
|
274
|
+
productNftId);
|
275
|
+
}
|
276
|
+
|
277
|
+
// check policy is active
|
278
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
279
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
280
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
281
|
+
}
|
282
|
+
|
283
|
+
// set return value to provided timestamp
|
284
|
+
expiredAt = expireAt;
|
285
|
+
|
286
|
+
// update expiredAt to current block timestamp if not set
|
287
|
+
if (expiredAt.eqz()) {
|
288
|
+
expiredAt = TimestampLib.blockTimestamp();
|
289
|
+
}
|
290
|
+
|
291
|
+
// check expiredAt represents a valid expiry time
|
292
|
+
if (expiredAt >= policyInfo.expiredAt) {
|
293
|
+
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
294
|
+
}
|
295
|
+
if (expiredAt < TimestampLib.blockTimestamp()) {
|
296
|
+
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
297
|
+
}
|
298
|
+
|
299
|
+
// update policyInfo with new expiredAt timestamp
|
300
|
+
policyInfo.expiredAt = expiredAt;
|
301
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
302
|
+
|
303
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
304
|
+
|
305
|
+
// TODO: add callback IPolicyHolder.policyExpired() if applicable
|
247
306
|
}
|
248
307
|
|
308
|
+
|
249
309
|
function close(
|
250
310
|
NftId policyNftId
|
251
311
|
)
|
@@ -255,163 +315,120 @@ contract PolicyService is
|
|
255
315
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
256
316
|
InstanceReader instanceReader = instance.getInstanceReader();
|
257
317
|
|
318
|
+
// check that policy has been activated
|
258
319
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
259
|
-
|
260
|
-
if (policyInfo
|
261
|
-
revert
|
262
|
-
}
|
263
|
-
|
264
|
-
StateId state = instanceReader.getPolicyState(policyNftId);
|
265
|
-
if (state != ACTIVE()) {
|
266
|
-
revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
|
320
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
321
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
322
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
267
323
|
}
|
268
324
|
|
325
|
+
// check that policy has not already been closed
|
269
326
|
if (policyInfo.closedAt.gtz()) {
|
270
|
-
revert
|
271
|
-
}
|
272
|
-
|
273
|
-
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
274
|
-
if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
|
275
|
-
revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
327
|
+
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
276
328
|
}
|
277
329
|
|
330
|
+
// check that policy does not have any open claims
|
278
331
|
if (policyInfo.openClaimsCount > 0) {
|
279
|
-
revert
|
332
|
+
revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
280
333
|
}
|
281
334
|
|
282
|
-
|
335
|
+
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
336
|
+
// TODO consider to remove requirement for fully paid premiums altogether
|
337
|
+
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
338
|
+
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
339
|
+
}
|
283
340
|
|
341
|
+
// release (remaining) collateral that was blocked by policy
|
284
342
|
_poolService.releaseCollateral(
|
285
343
|
instance,
|
286
344
|
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
287
345
|
policyNftId,
|
288
346
|
policyInfo);
|
289
347
|
|
348
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
349
|
+
|
350
|
+
// update policy state to closed
|
351
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
290
352
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
353
|
+
|
354
|
+
// TODO add logging
|
291
355
|
}
|
292
356
|
|
293
357
|
|
294
|
-
|
358
|
+
/// @dev calculates the premium and updates all counters in the other services
|
359
|
+
function _processPremium(
|
295
360
|
IInstance instance,
|
296
361
|
NftId applicationNftId,
|
297
|
-
IPolicy.PolicyInfo memory applicationInfo
|
362
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
363
|
+
IPolicy.PremiumInfo memory premium
|
298
364
|
)
|
299
365
|
internal
|
300
366
|
virtual
|
301
|
-
returns (
|
302
|
-
Amount premiumPaidAmount
|
303
|
-
)
|
304
367
|
{
|
305
368
|
NftId productNftId = applicationInfo.productNftId;
|
306
|
-
|
307
|
-
// calculate premium details
|
308
|
-
IPolicy.Premium memory premium = _pricingService.calculatePremium(
|
309
|
-
productNftId,
|
310
|
-
applicationInfo.riskId,
|
311
|
-
applicationInfo.sumInsuredAmount,
|
312
|
-
applicationInfo.lifetime,
|
313
|
-
applicationInfo.applicationData,
|
314
|
-
applicationInfo.bundleNftId,
|
315
|
-
applicationInfo.referralId);
|
316
|
-
|
317
|
-
|
318
|
-
// update financials and transfer premium tokens
|
319
|
-
premiumPaidAmount = _processAndCollect(
|
320
|
-
instance,
|
321
|
-
productNftId,
|
322
|
-
applicationNftId,
|
323
|
-
applicationInfo.premiumAmount,
|
324
|
-
applicationInfo.bundleNftId,
|
325
|
-
applicationInfo.referralId,
|
326
|
-
premium);
|
327
|
-
}
|
328
|
-
|
329
|
-
|
330
|
-
function _processAndCollect(
|
331
|
-
IInstance instance,
|
332
|
-
NftId productNftId,
|
333
|
-
NftId policyNftId,
|
334
|
-
Amount premiumExpectedAmount,
|
335
|
-
NftId bundleNftId,
|
336
|
-
ReferralId referralId,
|
337
|
-
IPolicy.Premium memory premium
|
338
|
-
)
|
339
|
-
internal
|
340
|
-
virtual
|
341
|
-
returns (Amount premiumPaidAmount)
|
342
|
-
{
|
343
369
|
InstanceReader instanceReader = instance.getInstanceReader();
|
344
|
-
TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
345
|
-
address policyHolder = getRegistry().ownerOf(policyNftId);
|
346
|
-
premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
|
347
370
|
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
371
|
+
// check if premium balance and allowance of policy holder is sufficient
|
372
|
+
{
|
373
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
374
|
+
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
375
|
+
|
376
|
+
_checkPremiumBalanceAndAllowance(
|
377
|
+
tokenHandler.getToken(),
|
378
|
+
address(tokenHandler),
|
379
|
+
policyHolder,
|
380
|
+
premium.premiumAmount);
|
381
|
+
}
|
353
382
|
|
354
|
-
|
383
|
+
// update the counters
|
384
|
+
_processSale(
|
355
385
|
instanceReader,
|
356
386
|
instance.getInstanceStore(),
|
357
|
-
tokenHandler,
|
358
|
-
policyHolder,
|
359
387
|
productNftId,
|
360
|
-
bundleNftId,
|
361
|
-
referralId,
|
388
|
+
applicationInfo.bundleNftId,
|
389
|
+
applicationInfo.referralId,
|
362
390
|
premium);
|
363
391
|
}
|
364
392
|
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
Amount premiumExpectedAmount,
|
370
|
-
Amount premiumPaidAmount
|
393
|
+
function _activate(
|
394
|
+
NftId policyNftId,
|
395
|
+
IPolicy.PolicyInfo memory policyInfo,
|
396
|
+
Timestamp activateAt
|
371
397
|
)
|
372
398
|
internal
|
373
399
|
virtual
|
374
|
-
view
|
400
|
+
view
|
401
|
+
returns (IPolicy.PolicyInfo memory)
|
375
402
|
{
|
376
|
-
//
|
377
|
-
|
378
|
-
|
379
|
-
revert ErrorPolicyServicePremiumHigherThanExpected(premiumExpectedAmount, premiumPaidAmount);
|
403
|
+
// fail if policy has already been activated and activateAt is different
|
404
|
+
if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
|
405
|
+
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
380
406
|
}
|
381
407
|
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
if (balance < premiumAmount) {
|
387
|
-
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premiumAmount, balance);
|
408
|
+
// ignore if policy has already been activated and activateAt is the same
|
409
|
+
if (policyInfo.activatedAt == activateAt) {
|
410
|
+
return policyInfo;
|
388
411
|
}
|
389
412
|
|
390
|
-
|
391
|
-
|
392
|
-
}
|
393
|
-
}
|
413
|
+
policyInfo.activatedAt = activateAt;
|
414
|
+
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
394
415
|
|
416
|
+
return policyInfo;
|
417
|
+
}
|
395
418
|
|
396
|
-
|
419
|
+
/// @dev update counters by calling the involved services
|
420
|
+
function _processSale(
|
397
421
|
InstanceReader instanceReader,
|
398
422
|
InstanceStore instanceStore,
|
399
|
-
TokenHandler tokenHandler,
|
400
|
-
address policyHolder,
|
401
423
|
NftId productNftId,
|
402
424
|
NftId bundleNftId,
|
403
425
|
ReferralId referralId,
|
404
|
-
IPolicy.
|
426
|
+
IPolicy.PremiumInfo memory premium
|
405
427
|
)
|
406
428
|
internal
|
407
429
|
virtual
|
408
430
|
{
|
409
|
-
(
|
410
|
-
NftId distributionNftId,
|
411
|
-
address distributionWallet,
|
412
|
-
address poolWallet,
|
413
|
-
address productWallet
|
414
|
-
) = _getDistributionNftAndWallets(
|
431
|
+
(NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
|
415
432
|
instanceReader,
|
416
433
|
productNftId);
|
417
434
|
|
@@ -419,7 +436,7 @@ contract PolicyService is
|
|
419
436
|
_componentService.increaseProductFees(
|
420
437
|
instanceStore,
|
421
438
|
productNftId,
|
422
|
-
|
439
|
+
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
423
440
|
|
424
441
|
// update distribution fees and distributor commission and pool fees
|
425
442
|
_distributionService.processSale(
|
@@ -431,15 +448,84 @@ contract PolicyService is
|
|
431
448
|
_poolService.processSale(
|
432
449
|
bundleNftId,
|
433
450
|
premium);
|
451
|
+
}
|
452
|
+
|
453
|
+
|
454
|
+
/// @dev transfer the premium to the wallets the premium is distributed to
|
455
|
+
function _transferFunds(
|
456
|
+
InstanceReader instanceReader,
|
457
|
+
NftId policyNftId,
|
458
|
+
NftId productNftId,
|
459
|
+
IPolicy.PremiumInfo memory premium
|
460
|
+
)
|
461
|
+
internal
|
462
|
+
virtual
|
463
|
+
{
|
464
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
465
|
+
address policyHolder = getRegistry().ownerOf(policyNftId);
|
466
|
+
|
467
|
+
(
|
468
|
+
,
|
469
|
+
address distributionWallet,
|
470
|
+
address poolWallet,
|
471
|
+
address productWallet
|
472
|
+
) = _getDistributionNftAndWallets(
|
473
|
+
instanceReader,
|
474
|
+
productNftId);
|
475
|
+
|
476
|
+
tokenHandler.collectTokensToThreeRecipients(
|
477
|
+
policyHolder,
|
478
|
+
productWallet,
|
479
|
+
premium.productFeeAmount,
|
480
|
+
distributionWallet,
|
481
|
+
premium.distributionFeeAndCommissionAmount,
|
482
|
+
poolWallet,
|
483
|
+
premium.poolPremiumAndFeeAmount);
|
484
|
+
}
|
485
|
+
|
486
|
+
|
487
|
+
/// @dev checks that policy has been collateralized and has been activated.
|
488
|
+
/// does not check if policy has been expired or closed.
|
489
|
+
function _policyHasBeenActivated(
|
490
|
+
StateId policyState,
|
491
|
+
IPolicy.PolicyInfo memory policyInfo
|
492
|
+
)
|
493
|
+
internal
|
494
|
+
view
|
495
|
+
returns (bool)
|
496
|
+
{
|
497
|
+
if (policyState != COLLATERALIZED()) { return false; }
|
498
|
+
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
499
|
+
return true;
|
500
|
+
}
|
434
501
|
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
502
|
+
|
503
|
+
/// @dev checks the balance and allowance of the policy holder
|
504
|
+
function _checkPremiumBalanceAndAllowance(
|
505
|
+
IERC20Metadata token,
|
506
|
+
address tokenHandlerAddress,
|
507
|
+
address policyHolder,
|
508
|
+
Amount premiumAmount
|
509
|
+
)
|
510
|
+
internal
|
511
|
+
virtual
|
512
|
+
view
|
513
|
+
{
|
514
|
+
uint256 premium = premiumAmount.toInt();
|
515
|
+
uint256 balance = token.balanceOf(policyHolder);
|
516
|
+
uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
|
517
|
+
|
518
|
+
if (balance < premium) {
|
519
|
+
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
520
|
+
}
|
521
|
+
|
522
|
+
if (allowance < premium) {
|
523
|
+
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
|
524
|
+
}
|
439
525
|
}
|
440
526
|
|
441
527
|
|
442
|
-
function
|
528
|
+
function _getTokenHandler(
|
443
529
|
InstanceReader instanceReader,
|
444
530
|
NftId productNftId
|
445
531
|
)
|
@@ -472,4 +558,16 @@ contract PolicyService is
|
|
472
558
|
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
|
473
559
|
productWallet = instanceReader.getComponentInfo(productNftId).wallet;
|
474
560
|
}
|
561
|
+
|
562
|
+
|
563
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
564
|
+
IRegistry.ObjectInfo memory productInfo;
|
565
|
+
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
566
|
+
product = Product(productInfo.objectAddress);
|
567
|
+
}
|
568
|
+
|
569
|
+
|
570
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
571
|
+
return POLICY();
|
572
|
+
}
|
475
573
|
}
|
@@ -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
|
|