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