@etherisc/gif-next 0.0.2-750c7cb-311 → 0.0.2-758fb77-627
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 +5 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +21 -21
- 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 +36 -212
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -184
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +129 -286
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +53 -120
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1660 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- 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 +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +71 -71
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +225 -68
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +34 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +30 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +220 -102
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +26 -202
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -184
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +29 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +5 -189
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +76 -235
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +51 -110
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +0 -31
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +5 -42
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +63 -78
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -189
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +101 -332
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +31 -134
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +26 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -187
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +169 -183
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +53 -104
- 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 +98 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +4 -35
- 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 +0 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +68 -299
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +44 -123
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +113 -270
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +52 -123
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +3 -187
- 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 +221 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +419 -82
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +229 -114
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -130
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +22 -73
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
- 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 -173
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +84 -228
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +55 -122
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -112
- 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/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
- 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/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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -184
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +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 +0 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +288 -16
- 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/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -248
- 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 +42 -101
- 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 +26 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +26 -77
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +84 -84
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
- 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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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/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 +60 -4
- 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/StateId.sol/StateIdLib.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +14 -65
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +1 -3
- package/contracts/authorization/Authorization.sol +0 -1
- package/contracts/distribution/Distribution.sol +1 -1
- package/contracts/distribution/DistributionService.sol +26 -26
- package/contracts/distribution/IDistributionService.sol +9 -5
- package/contracts/examples/fire/FirePool.sol +76 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +316 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +16 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- 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/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +10 -35
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +23 -1
- package/contracts/instance/InstanceService.sol +60 -36
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +8 -1
- package/contracts/instance/module/IComponents.sol +1 -1
- package/contracts/instance/module/IPolicy.sol +21 -21
- package/contracts/oracle/Oracle.sol +2 -1
- package/contracts/oracle/OracleService.sol +4 -3
- package/contracts/pool/BundleService.sol +13 -25
- package/contracts/pool/IBundleService.sol +2 -3
- package/contracts/pool/IPoolService.sol +29 -18
- package/contracts/pool/Pool.sol +15 -17
- package/contracts/pool/PoolService.sol +44 -94
- package/contracts/product/ApplicationService.sol +41 -23
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +110 -47
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +27 -5
- package/contracts/product/IPolicyService.sol +11 -23
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +0 -1
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +163 -146
- package/contracts/product/PricingService.sol +44 -43
- package/contracts/product/Product.sol +50 -36
- package/contracts/product/{ProductService.sol → RiskService.sol} +5 -7
- package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +49 -15
- package/contracts/registry/Registry.sol +321 -195
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +12 -6
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +12 -25
- package/contracts/shared/ComponentService.sol +16 -25
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponent.sol +0 -1
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -7
- package/contracts/shared/IPolicyHolder.sol +0 -9
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +4 -4
- package/contracts/shared/NftOwnable.sol +5 -5
- package/contracts/shared/PolicyHolder.sol +5 -48
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +5 -5
- package/contracts/shared/TokenHandler.sol +99 -22
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +10 -28
- package/contracts/staking/StakingService.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/ObjectType.sol +15 -11
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +1 -0
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +1 -1
- 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 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
@@ -14,7 +14,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
14
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
15
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
16
16
|
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
17
|
-
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
|
17
|
+
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
18
18
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
19
19
|
import {ReferralId} from "../type/Referral.sol";
|
20
20
|
import {StateId} from "../type/StateId.sol";
|
@@ -47,8 +47,6 @@ contract PolicyService is
|
|
47
47
|
IPoolService internal _poolService;
|
48
48
|
IPricingService internal _pricingService;
|
49
49
|
|
50
|
-
event LogProductServiceSender(address sender);
|
51
|
-
|
52
50
|
function _initialize(
|
53
51
|
address owner,
|
54
52
|
bytes memory data
|
@@ -63,7 +61,7 @@ contract PolicyService is
|
|
63
61
|
address authority
|
64
62
|
) = abi.decode(data, (address, address, address));
|
65
63
|
|
66
|
-
|
64
|
+
_initializeService(registryAddress, authority, owner);
|
67
65
|
|
68
66
|
VersionPart majorVersion = getVersion().toMajorPart();
|
69
67
|
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
@@ -74,17 +72,10 @@ contract PolicyService is
|
|
74
72
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
75
73
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
76
74
|
|
77
|
-
|
75
|
+
_registerInterface(type(IPolicyService).interfaceId);
|
78
76
|
}
|
79
77
|
|
80
78
|
|
81
|
-
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
82
|
-
IRegistry.ObjectInfo memory productInfo;
|
83
|
-
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
84
|
-
product = Product(productInfo.objectAddress);
|
85
|
-
}
|
86
|
-
|
87
|
-
|
88
79
|
function decline(
|
89
80
|
NftId applicationNftId // = policyNftId
|
90
81
|
)
|
@@ -117,12 +108,10 @@ contract PolicyService is
|
|
117
108
|
emit LogPolicyServicePolicyDeclined(applicationNftId);
|
118
109
|
}
|
119
110
|
|
120
|
-
event LogDebug(uint idx, string message);
|
121
111
|
|
122
112
|
/// @inheritdoc IPolicyService
|
123
|
-
function
|
113
|
+
function createPolicy(
|
124
114
|
NftId applicationNftId, // = policyNftId
|
125
|
-
bool requirePremiumPayment,
|
126
115
|
Timestamp activateAt
|
127
116
|
)
|
128
117
|
external
|
@@ -146,13 +135,8 @@ contract PolicyService is
|
|
146
135
|
productNftId);
|
147
136
|
}
|
148
137
|
|
149
|
-
StateId newPolicyState = COLLATERALIZED();
|
150
|
-
|
151
138
|
// actual collateralizaion
|
152
|
-
(
|
153
|
-
Amount localCollateralAmount,
|
154
|
-
Amount totalCollateralAmount
|
155
|
-
) = _poolService.lockCollateral(
|
139
|
+
_poolService.lockCollateral(
|
156
140
|
instance,
|
157
141
|
address(instanceReader.getComponentInfo(productNftId).token),
|
158
142
|
productNftId,
|
@@ -162,38 +146,48 @@ contract PolicyService is
|
|
162
146
|
|
163
147
|
// optional activation of policy
|
164
148
|
if(activateAt > zeroTimestamp()) {
|
165
|
-
applicationInfo
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
IPolicy.Premium memory premium;
|
170
|
-
|
171
|
-
// optional: calculate the premium and update counters for collection at the end of this function
|
172
|
-
if(requirePremiumPayment) {
|
173
|
-
premium = _calculateAndProcessPremium(
|
174
|
-
instance,
|
175
|
-
applicationNftId,
|
176
|
-
applicationInfo);
|
177
|
-
|
178
|
-
applicationInfo.premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
|
149
|
+
applicationInfo = _activate(
|
150
|
+
applicationNftId,
|
151
|
+
applicationInfo,
|
152
|
+
activateAt);
|
179
153
|
}
|
180
154
|
|
181
|
-
//
|
155
|
+
// update policy and set state to collateralized
|
182
156
|
instance.getInstanceStore().updatePolicy(
|
183
157
|
applicationNftId,
|
184
158
|
applicationInfo,
|
185
|
-
|
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);
|
186
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
|
+
|
187
183
|
// TODO add calling pool contract if it needs to validate application
|
188
184
|
|
189
185
|
// TODO: add logging
|
190
186
|
|
191
|
-
//
|
192
|
-
if(requirePremiumPayment) {
|
193
|
-
_transferFunds(instanceReader, applicationNftId, applicationInfo.productNftId, premium);
|
194
|
-
}
|
187
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
195
188
|
}
|
196
189
|
|
190
|
+
|
197
191
|
/// @inheritdoc IPolicyService
|
198
192
|
function collectPremium(
|
199
193
|
NftId policyNftId,
|
@@ -212,30 +206,33 @@ contract PolicyService is
|
|
212
206
|
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
213
207
|
}
|
214
208
|
|
215
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
216
|
-
|
217
209
|
// check if premium is already collected
|
218
|
-
if (
|
219
|
-
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId
|
210
|
+
if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
|
211
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
220
212
|
}
|
221
213
|
|
222
|
-
|
223
|
-
IPolicy.
|
224
|
-
|
225
|
-
|
226
|
-
|
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);
|
227
222
|
|
228
|
-
|
223
|
+
// optionally activate policy
|
224
|
+
if(activateAt.gtz()) {
|
225
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
226
|
+
}
|
229
227
|
|
230
228
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
231
|
-
|
232
|
-
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
233
|
-
activate(policyNftId, activateAt);
|
234
|
-
}
|
229
|
+
instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
|
235
230
|
|
236
231
|
// TODO: add logging
|
237
232
|
|
238
233
|
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
234
|
+
|
235
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
239
236
|
}
|
240
237
|
|
241
238
|
/// @inheritdoc IPolicyService
|
@@ -245,19 +242,16 @@ contract PolicyService is
|
|
245
242
|
InstanceReader instanceReader = instance.getInstanceReader();
|
246
243
|
|
247
244
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
248
|
-
|
249
|
-
if(! policyInfo.activatedAt.eqz()) {
|
250
|
-
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
251
|
-
}
|
252
|
-
|
253
|
-
policyInfo.activatedAt = activateAt;
|
254
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
245
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
255
246
|
|
256
247
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
257
248
|
|
258
249
|
// TODO: add logging
|
250
|
+
|
251
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
259
252
|
}
|
260
253
|
|
254
|
+
|
261
255
|
/// @inheritdoc IPolicyService
|
262
256
|
function expire(
|
263
257
|
NftId policyNftId,
|
@@ -266,7 +260,7 @@ contract PolicyService is
|
|
266
260
|
external
|
267
261
|
override
|
268
262
|
virtual
|
269
|
-
returns (Timestamp)
|
263
|
+
returns (Timestamp expiredAt)
|
270
264
|
{
|
271
265
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
272
266
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -286,28 +280,32 @@ contract PolicyService is
|
|
286
280
|
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
287
281
|
}
|
288
282
|
|
289
|
-
// set
|
290
|
-
|
291
|
-
|
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();
|
292
289
|
}
|
293
290
|
|
294
|
-
// check
|
295
|
-
if (
|
291
|
+
// check expiredAt represents a valid expiry time
|
292
|
+
if (expiredAt >= policyInfo.expiredAt) {
|
296
293
|
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
297
294
|
}
|
298
|
-
if (
|
295
|
+
if (expiredAt < TimestampLib.blockTimestamp()) {
|
299
296
|
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
300
297
|
}
|
301
298
|
|
302
|
-
// update policyInfo with new
|
303
|
-
policyInfo.expiredAt =
|
299
|
+
// update policyInfo with new expiredAt timestamp
|
300
|
+
policyInfo.expiredAt = expiredAt;
|
304
301
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
305
302
|
|
306
|
-
emit LogPolicyServicePolicyExpirationUpdated(policyNftId,
|
303
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
307
304
|
|
308
|
-
|
305
|
+
// TODO: add callback IPolicyHolder.policyExpired() if applicable
|
309
306
|
}
|
310
307
|
|
308
|
+
|
311
309
|
function close(
|
312
310
|
NftId policyNftId
|
313
311
|
)
|
@@ -335,8 +333,9 @@ contract PolicyService is
|
|
335
333
|
}
|
336
334
|
|
337
335
|
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
338
|
-
|
339
|
-
|
336
|
+
// TODO consider to remove requirement for fully paid premiums altogether
|
337
|
+
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
338
|
+
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
340
339
|
}
|
341
340
|
|
342
341
|
// release (remaining) collateral that was blocked by policy
|
@@ -346,69 +345,39 @@ contract PolicyService is
|
|
346
345
|
policyNftId,
|
347
346
|
policyInfo);
|
348
347
|
|
348
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
349
|
+
|
349
350
|
// update policy state to closed
|
350
351
|
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
351
352
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
352
|
-
}
|
353
|
-
|
354
353
|
|
355
|
-
|
356
|
-
/// does not check if policy has been expired or closed.
|
357
|
-
function _policyHasBeenActivated(
|
358
|
-
StateId policyState,
|
359
|
-
IPolicy.PolicyInfo memory policyInfo
|
360
|
-
)
|
361
|
-
internal
|
362
|
-
view
|
363
|
-
returns (bool)
|
364
|
-
{
|
365
|
-
if (policyState != COLLATERALIZED()) { return false; }
|
366
|
-
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
367
|
-
return true;
|
354
|
+
// TODO add logging
|
368
355
|
}
|
369
356
|
|
370
357
|
|
371
358
|
/// @dev calculates the premium and updates all counters in the other services
|
372
|
-
function
|
359
|
+
function _processPremium(
|
373
360
|
IInstance instance,
|
374
361
|
NftId applicationNftId,
|
375
|
-
IPolicy.PolicyInfo memory applicationInfo
|
362
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
363
|
+
IPolicy.PremiumInfo memory premium
|
376
364
|
)
|
377
365
|
internal
|
378
366
|
virtual
|
379
|
-
returns (
|
380
|
-
IPolicy.Premium memory premium
|
381
|
-
)
|
382
367
|
{
|
383
368
|
NftId productNftId = applicationInfo.productNftId;
|
384
369
|
InstanceReader instanceReader = instance.getInstanceReader();
|
385
370
|
|
386
|
-
// calculate premium details
|
387
|
-
premium = _pricingService.calculatePremium(
|
388
|
-
productNftId,
|
389
|
-
applicationInfo.riskId,
|
390
|
-
applicationInfo.sumInsuredAmount,
|
391
|
-
applicationInfo.lifetime,
|
392
|
-
applicationInfo.applicationData,
|
393
|
-
applicationInfo.bundleNftId,
|
394
|
-
applicationInfo.referralId);
|
395
|
-
|
396
|
-
// ensure the calculated premium is not higher than the expected premium from the application
|
397
|
-
if (applicationInfo.premiumAmount.toInt() < premium.premiumAmount) {
|
398
|
-
revert ErrorPolicyServicePremiumHigherThanExpected(applicationInfo.premiumAmount.toInt(), premium.premiumAmount);
|
399
|
-
}
|
400
|
-
|
401
371
|
// check if premium balance and allowance of policy holder is sufficient
|
402
372
|
{
|
403
|
-
TokenHandler tokenHandler = instanceReader
|
373
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
404
374
|
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
405
375
|
|
406
376
|
_checkPremiumBalanceAndAllowance(
|
407
377
|
tokenHandler.getToken(),
|
408
378
|
address(tokenHandler),
|
409
379
|
policyHolder,
|
410
|
-
|
411
|
-
AmountLib.toAmount(premium.premiumAmount));
|
380
|
+
premium.premiumAmount);
|
412
381
|
}
|
413
382
|
|
414
383
|
// update the counters
|
@@ -421,29 +390,30 @@ contract PolicyService is
|
|
421
390
|
premium);
|
422
391
|
}
|
423
392
|
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
address policyHolder,
|
429
|
-
Amount premiumExpectedAmount,
|
430
|
-
Amount premiumAmount
|
393
|
+
function _activate(
|
394
|
+
NftId policyNftId,
|
395
|
+
IPolicy.PolicyInfo memory policyInfo,
|
396
|
+
Timestamp activateAt
|
431
397
|
)
|
432
398
|
internal
|
433
399
|
virtual
|
434
|
-
view
|
400
|
+
view
|
401
|
+
returns (IPolicy.PolicyInfo memory)
|
435
402
|
{
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
if (balance < premium) {
|
441
|
-
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
403
|
+
// fail if policy has already been activated and activateAt is different
|
404
|
+
if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
|
405
|
+
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
442
406
|
}
|
443
407
|
|
444
|
-
if
|
445
|
-
|
408
|
+
// ignore if policy has already been activated and activateAt is the same
|
409
|
+
if (policyInfo.activatedAt == activateAt) {
|
410
|
+
return policyInfo;
|
446
411
|
}
|
412
|
+
|
413
|
+
policyInfo.activatedAt = activateAt;
|
414
|
+
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
415
|
+
|
416
|
+
return policyInfo;
|
447
417
|
}
|
448
418
|
|
449
419
|
/// @dev update counters by calling the involved services
|
@@ -453,17 +423,12 @@ contract PolicyService is
|
|
453
423
|
NftId productNftId,
|
454
424
|
NftId bundleNftId,
|
455
425
|
ReferralId referralId,
|
456
|
-
IPolicy.
|
426
|
+
IPolicy.PremiumInfo memory premium
|
457
427
|
)
|
458
428
|
internal
|
459
429
|
virtual
|
460
430
|
{
|
461
|
-
(
|
462
|
-
NftId distributionNftId,
|
463
|
-
address distributionWallet,
|
464
|
-
address poolWallet,
|
465
|
-
address productWallet
|
466
|
-
) = _getDistributionNftAndWallets(
|
431
|
+
(NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
|
467
432
|
instanceReader,
|
468
433
|
productNftId);
|
469
434
|
|
@@ -471,7 +436,7 @@ contract PolicyService is
|
|
471
436
|
_componentService.increaseProductFees(
|
472
437
|
instanceStore,
|
473
438
|
productNftId,
|
474
|
-
|
439
|
+
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
475
440
|
|
476
441
|
// update distribution fees and distributor commission and pool fees
|
477
442
|
_distributionService.processSale(
|
@@ -485,21 +450,22 @@ contract PolicyService is
|
|
485
450
|
premium);
|
486
451
|
}
|
487
452
|
|
453
|
+
|
488
454
|
/// @dev transfer the premium to the wallets the premium is distributed to
|
489
455
|
function _transferFunds(
|
490
456
|
InstanceReader instanceReader,
|
491
457
|
NftId policyNftId,
|
492
458
|
NftId productNftId,
|
493
|
-
IPolicy.
|
459
|
+
IPolicy.PremiumInfo memory premium
|
494
460
|
)
|
495
461
|
internal
|
496
462
|
virtual
|
497
463
|
{
|
498
|
-
TokenHandler tokenHandler = instanceReader
|
464
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
499
465
|
address policyHolder = getRegistry().ownerOf(policyNftId);
|
500
466
|
|
501
467
|
(
|
502
|
-
|
468
|
+
,
|
503
469
|
address distributionWallet,
|
504
470
|
address poolWallet,
|
505
471
|
address productWallet
|
@@ -507,15 +473,59 @@ contract PolicyService is
|
|
507
473
|
instanceReader,
|
508
474
|
productNftId);
|
509
475
|
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
476
|
+
tokenHandler.collectTokensToThreeRecipients(
|
477
|
+
policyHolder,
|
478
|
+
productWallet,
|
479
|
+
premium.productFeeAmount,
|
480
|
+
distributionWallet,
|
481
|
+
premium.distributionFeeAndCommissionAmount,
|
482
|
+
poolWallet,
|
483
|
+
premium.poolPremiumAndFeeAmount);
|
515
484
|
}
|
516
485
|
|
517
486
|
|
518
|
-
|
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
|
+
}
|
501
|
+
|
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
|
+
}
|
525
|
+
}
|
526
|
+
|
527
|
+
|
528
|
+
function _getTokenHandler(
|
519
529
|
InstanceReader instanceReader,
|
520
530
|
NftId productNftId
|
521
531
|
)
|
@@ -550,6 +560,13 @@ contract PolicyService is
|
|
550
560
|
}
|
551
561
|
|
552
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
|
+
|
553
570
|
function _getDomain() internal pure override returns(ObjectType) {
|
554
571
|
return POLICY();
|
555
572
|
}
|