@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f15b559-661
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 +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
- 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/IAccessAdmin.sol/IAccessAdmin.json +82 -12
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- 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 +108 -188
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +244 -190
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +82 -56
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -73
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +256 -296
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +139 -131
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +638 -301
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -56
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +375 -99
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +586 -215
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +412 -372
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- 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 +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- 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 +74 -154
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
- 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 +44 -58
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +152 -33
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +164 -217
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -353
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +37 -7
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +163 -175
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +114 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +62 -24
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- 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 +88 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +262 -220
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- 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 +318 -52
- 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 +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -439
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -64
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +125 -282
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
- 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/IRegisterable.sol/IRegisterable.json +120 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
- 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 +57 -89
- 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 +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 +118 -62
- 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/Service.sol/Service.json +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
- 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 +58 -46
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +101 -49
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +47 -25
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -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/Amount.sol/AmountLib.json +3 -3
- 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/Fee.sol/FeeLib.json +3 -3
- 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/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +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 +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- 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/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -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 +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +177 -84
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +277 -229
- package/contracts/authorization/IAccessAdmin.sol +13 -7
- package/contracts/authorization/IAuthorization.sol +15 -1
- package/contracts/distribution/BasicDistribution.sol +13 -11
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +42 -38
- package/contracts/distribution/DistributionService.sol +54 -51
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +22 -5
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +32 -10
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +33 -3
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +51 -25
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +9 -9
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +242 -84
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +73 -82
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +4 -4
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +27 -8
- package/contracts/pool/BundleService.sol +47 -145
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -60
- package/contracts/pool/Pool.sol +106 -96
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +427 -214
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +9 -11
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -137
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +5 -8
- package/contracts/product/PolicyService.sol +244 -253
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +66 -52
- package/contracts/product/RiskService.sol +79 -31
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +10 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +16 -3
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +129 -119
- package/contracts/registry/ServiceAuthorizationV3.sol +93 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +61 -105
- package/contracts/shared/ComponentService.sol +301 -295
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +16 -14
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +4 -17
- package/contracts/shared/IComponentService.sol +16 -25
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +4 -20
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +44 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +263 -105
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +5 -8
- package/contracts/staking/IStakingService.sol +8 -0
- package/contracts/staking/StakeManagerLib.sol +1 -1
- package/contracts/staking/Staking.sol +62 -33
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +35 -12
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +24 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +3 -3
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
@@ -3,41 +3,40 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {
|
7
|
-
import {
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
8
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
9
|
+
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
10
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
11
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
9
12
|
import {IInstance} from "../instance/IInstance.sol";
|
10
13
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
14
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
15
|
+
import {IPolicyService} from "./IPolicyService.sol";
|
16
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
17
|
+
import {IPricingService} from "./IPricingService.sol";
|
18
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
11
19
|
|
12
|
-
import {
|
13
|
-
|
14
|
-
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
|
-
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
16
|
-
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
20
|
+
import {Amount} from "../type/Amount.sol";
|
17
21
|
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
22
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
18
23
|
import {NftId} from "../type/NftId.sol";
|
24
|
+
import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, PRICE} from "../type/ObjectType.sol";
|
25
|
+
import {PolicyServiceLib} from "./PolicyServiceLib.sol";
|
19
26
|
import {ReferralId} from "../type/Referral.sol";
|
27
|
+
import {RiskId} from "../type/RiskId.sol";
|
28
|
+
import {Service} from "../shared/Service.sol";
|
20
29
|
import {StateId} from "../type/StateId.sol";
|
30
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
31
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
21
32
|
import {VersionPart} from "../type/Version.sol";
|
22
33
|
|
23
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
24
|
-
import {ContractLib} from "../shared/ContractLib.sol";
|
25
|
-
import {IApplicationService} from "./IApplicationService.sol";
|
26
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
27
|
-
import {IClaimService} from "./IClaimService.sol";
|
28
|
-
import {IComponentService} from "../shared/IComponentService.sol";
|
29
|
-
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
30
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
31
|
-
import {InstanceStore} from "../instance/InstanceStore.sol";
|
32
|
-
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
33
|
-
import {IPolicyService} from "./IPolicyService.sol";
|
34
|
-
import {IPoolService} from "../pool/IPoolService.sol";
|
35
|
-
import {IPricingService} from "./IPricingService.sol";
|
36
34
|
|
37
35
|
contract PolicyService is
|
38
|
-
|
36
|
+
Service,
|
39
37
|
IPolicyService
|
40
38
|
{
|
39
|
+
IAccountingService private _accountingService;
|
41
40
|
IComponentService internal _componentService;
|
42
41
|
IDistributionService internal _distributionService;
|
43
42
|
IPoolService internal _poolService;
|
@@ -52,13 +51,14 @@ contract PolicyService is
|
|
52
51
|
initializer
|
53
52
|
{
|
54
53
|
(
|
55
|
-
address
|
56
|
-
address
|
54
|
+
address authority,
|
55
|
+
address registry
|
57
56
|
) = abi.decode(data, (address, address));
|
58
57
|
|
59
|
-
|
58
|
+
__Service_init(authority, registry, owner);
|
60
59
|
|
61
60
|
VersionPart majorVersion = getVersion().toMajorPart();
|
61
|
+
_accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
|
62
62
|
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
63
63
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
64
64
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
@@ -75,26 +75,15 @@ contract PolicyService is
|
|
75
75
|
virtual
|
76
76
|
nonReentrant()
|
77
77
|
{
|
78
|
-
|
79
|
-
|
80
|
-
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
81
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
78
|
+
// checks
|
79
|
+
(IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
|
82
80
|
|
83
81
|
// check policy is in state applied
|
84
|
-
if (
|
82
|
+
if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
|
85
83
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
86
84
|
}
|
87
85
|
|
88
|
-
//
|
89
|
-
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
90
|
-
if(applicationInfo.productNftId != productNftId) {
|
91
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
92
|
-
applicationNftId,
|
93
|
-
applicationInfo.productNftId,
|
94
|
-
productNftId);
|
95
|
-
}
|
96
|
-
|
97
|
-
|
86
|
+
// effects
|
98
87
|
// store updated policy info
|
99
88
|
instance.getInstanceStore().updatePolicyState(
|
100
89
|
applicationNftId,
|
@@ -112,42 +101,34 @@ contract PolicyService is
|
|
112
101
|
external
|
113
102
|
virtual
|
114
103
|
nonReentrant()
|
104
|
+
returns (Amount premiumAmount)
|
115
105
|
{
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
106
|
+
// checks
|
107
|
+
(
|
108
|
+
IInstance instance,
|
109
|
+
NftId productNftId,
|
110
|
+
IPolicy.PolicyInfo memory applicationInfo
|
111
|
+
) = _getAndVerifyCallerForPolicy(applicationNftId);
|
121
112
|
|
122
113
|
// check policy is in state applied
|
114
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
123
115
|
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
124
116
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
125
117
|
}
|
126
118
|
|
127
|
-
//
|
128
|
-
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
129
|
-
if(applicationInfo.productNftId != productNftId) {
|
130
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
131
|
-
applicationNftId,
|
132
|
-
applicationInfo.productNftId,
|
133
|
-
productNftId);
|
134
|
-
}
|
135
|
-
|
119
|
+
// effects
|
136
120
|
// actual collateralizaion
|
137
121
|
_poolService.lockCollateral(
|
138
122
|
instance,
|
139
|
-
address(instanceReader.
|
123
|
+
address(instanceReader.getToken(productNftId)),
|
140
124
|
productNftId,
|
141
125
|
applicationNftId,
|
142
126
|
applicationInfo.bundleNftId,
|
143
127
|
applicationInfo.sumInsuredAmount);
|
144
128
|
|
145
129
|
// optional activation of policy
|
146
|
-
if(activateAt
|
147
|
-
applicationInfo = _activate(
|
148
|
-
applicationNftId,
|
149
|
-
applicationInfo,
|
150
|
-
activateAt);
|
130
|
+
if(activateAt.gtz()) {
|
131
|
+
applicationInfo = _activate(applicationNftId, applicationInfo, activateAt);
|
151
132
|
}
|
152
133
|
|
153
134
|
// update policy and set state to collateralized
|
@@ -157,35 +138,42 @@ contract PolicyService is
|
|
157
138
|
COLLATERALIZED());
|
158
139
|
|
159
140
|
// calculate and store premium
|
141
|
+
RiskId riskId = applicationInfo.riskId;
|
142
|
+
NftId bundleNftId = applicationInfo.bundleNftId;
|
143
|
+
|
160
144
|
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
161
145
|
productNftId,
|
162
|
-
|
146
|
+
riskId,
|
163
147
|
applicationInfo.sumInsuredAmount,
|
164
148
|
applicationInfo.lifetime,
|
165
149
|
applicationInfo.applicationData,
|
166
|
-
|
150
|
+
bundleNftId,
|
167
151
|
applicationInfo.referralId);
|
168
152
|
|
153
|
+
premiumAmount = premium.fullPremiumAmount;
|
169
154
|
instance.getInstanceStore().createPremium(
|
170
155
|
applicationNftId,
|
171
156
|
premium);
|
172
157
|
|
173
|
-
// update referral counter
|
158
|
+
// update referral counter if product has linked distributino component
|
174
159
|
{
|
175
160
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
176
|
-
|
177
|
-
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
161
|
+
if (productInfo.hasDistribution) {
|
178
162
|
_distributionService.processReferral(
|
179
163
|
productInfo.distributionNftId,
|
180
164
|
applicationInfo.referralId);
|
181
165
|
}
|
182
166
|
}
|
183
167
|
|
168
|
+
// link policy to risk and bundle
|
169
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
170
|
+
instance.getRiskSet().linkPolicy(productNftId, riskId, applicationNftId);
|
171
|
+
instance.getBundleSet().linkPolicy(poolNftId, bundleNftId, applicationNftId);
|
172
|
+
|
184
173
|
// log policy creation before interactions with token and policy holder
|
185
174
|
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
186
175
|
|
187
|
-
//
|
188
|
-
|
176
|
+
// interactions
|
189
177
|
// callback to policy holder if applicable
|
190
178
|
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
191
179
|
}
|
@@ -200,30 +188,46 @@ contract PolicyService is
|
|
200
188
|
virtual
|
201
189
|
nonReentrant()
|
202
190
|
{
|
203
|
-
|
191
|
+
// checks
|
192
|
+
(
|
193
|
+
IInstance instance,
|
194
|
+
NftId productNftId,
|
195
|
+
IPolicy.PolicyInfo memory policyInfo
|
196
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
204
197
|
|
205
|
-
// check
|
206
|
-
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
198
|
+
// check policy is in state collateralized
|
207
199
|
InstanceReader instanceReader = instance.getInstanceReader();
|
208
|
-
|
209
|
-
|
210
|
-
// check policy is in state collateralized or active
|
211
|
-
if (!(stateId == COLLATERALIZED())) {
|
200
|
+
if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
|
212
201
|
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
213
202
|
}
|
214
203
|
|
215
|
-
// check if premium
|
204
|
+
// check if premium has already been collected
|
216
205
|
if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
|
217
206
|
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
218
207
|
}
|
219
208
|
|
220
|
-
|
221
|
-
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
209
|
+
// check funds and allowance of policy holder
|
210
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
211
|
+
instanceReader.getTokenHandler(
|
212
|
+
productNftId).checkBalanceAndAllowance(
|
213
|
+
getRegistry().ownerOf(policyNftId),
|
214
|
+
premium.premiumAmount,
|
215
|
+
false);
|
216
|
+
|
217
|
+
// )
|
218
|
+
// _checkPremiumBalanceAndAllowance(
|
219
|
+
// tokenHandler.TOKEN(),
|
220
|
+
// address(tokenHandler),
|
221
|
+
// getRegistry().ownerOf(policyNftId),
|
222
|
+
// premium.premiumAmount);
|
223
|
+
|
224
|
+
// effects
|
225
|
+
_processSale(
|
226
|
+
instanceReader,
|
227
|
+
instance.getInstanceStore(),
|
228
|
+
productNftId,
|
229
|
+
policyInfo.bundleNftId,
|
230
|
+
policyInfo.referralId,
|
227
231
|
premium);
|
228
232
|
|
229
233
|
// optionally activate policy
|
@@ -237,33 +241,74 @@ contract PolicyService is
|
|
237
241
|
// log premium collection before interactions with token
|
238
242
|
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
239
243
|
|
240
|
-
|
244
|
+
// interactions
|
245
|
+
_transferPremiumAmounts(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
241
246
|
}
|
242
247
|
|
248
|
+
|
243
249
|
/// @inheritdoc IPolicyService
|
244
250
|
function activate(NftId policyNftId, Timestamp activateAt)
|
245
251
|
external
|
246
252
|
virtual
|
247
253
|
nonReentrant()
|
248
254
|
{
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
255
|
+
// checks
|
256
|
+
(
|
257
|
+
IInstance instance,,
|
258
|
+
IPolicy.PolicyInfo memory policyInfo
|
259
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
254
260
|
|
255
|
-
|
261
|
+
// effects
|
256
262
|
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
257
|
-
|
258
263
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
259
264
|
|
260
265
|
// log policy activation before interactions with policy holder
|
261
266
|
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
262
267
|
|
268
|
+
// interactions
|
263
269
|
// callback to policy holder if applicable
|
264
270
|
_policyHolderPolicyActivated(policyNftId, activateAt);
|
265
271
|
}
|
266
272
|
|
273
|
+
/// @inheritdoc IPolicyService
|
274
|
+
function adjustActivation(
|
275
|
+
NftId policyNftId,
|
276
|
+
Timestamp newActivateAt
|
277
|
+
)
|
278
|
+
external
|
279
|
+
virtual
|
280
|
+
nonReentrant()
|
281
|
+
{
|
282
|
+
// checks
|
283
|
+
(
|
284
|
+
IInstance instance,,
|
285
|
+
IPolicy.PolicyInfo memory policyInfo
|
286
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
287
|
+
|
288
|
+
if (policyInfo.activatedAt.eqz()) {
|
289
|
+
revert ErrorPolicyServicePolicyNotActivated(policyNftId);
|
290
|
+
}
|
291
|
+
|
292
|
+
if (newActivateAt < TimestampLib.blockTimestamp()) {
|
293
|
+
revert ErrorPolicyServicePolicyActivationTooEarly(policyNftId, TimestampLib.blockTimestamp(), newActivateAt);
|
294
|
+
}
|
295
|
+
|
296
|
+
if (newActivateAt > policyInfo.expiredAt) {
|
297
|
+
revert ErrorPolicyServicePolicyActivationTooLate(policyNftId, policyInfo.expiredAt, newActivateAt);
|
298
|
+
}
|
299
|
+
|
300
|
+
// effects
|
301
|
+
policyInfo.activatedAt = newActivateAt;
|
302
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
303
|
+
|
304
|
+
// log policy activation before interactions with policy holder
|
305
|
+
emit LogPolicyServicePolicyActivatedUpdated(policyNftId, newActivateAt);
|
306
|
+
|
307
|
+
// interactions
|
308
|
+
// callback to policy holder if applicable
|
309
|
+
_policyHolderPolicyActivated(policyNftId, newActivateAt);
|
310
|
+
}
|
311
|
+
|
267
312
|
|
268
313
|
/// @inheritdoc IPolicyService
|
269
314
|
function expire(
|
@@ -275,26 +320,22 @@ contract PolicyService is
|
|
275
320
|
nonReentrant()
|
276
321
|
returns (Timestamp expiredAt)
|
277
322
|
{
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
284
|
-
if(policyInfo.productNftId != productNftId) {
|
285
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
286
|
-
policyNftId,
|
287
|
-
policyInfo.productNftId,
|
288
|
-
productNftId);
|
289
|
-
}
|
323
|
+
// checks
|
324
|
+
(
|
325
|
+
IInstance instance,,
|
326
|
+
IPolicy.PolicyInfo memory policyInfo
|
327
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
290
328
|
|
329
|
+
// more checks, effects + interactions
|
291
330
|
return _expire(
|
292
331
|
instance,
|
293
332
|
policyNftId,
|
333
|
+
policyInfo,
|
294
334
|
expireAt
|
295
335
|
);
|
296
336
|
}
|
297
337
|
|
338
|
+
|
298
339
|
/// @inheritdoc IPolicyService
|
299
340
|
function expirePolicy(
|
300
341
|
IInstance instance,
|
@@ -306,60 +347,22 @@ contract PolicyService is
|
|
306
347
|
nonReentrant()
|
307
348
|
returns (Timestamp expiredAt)
|
308
349
|
{
|
350
|
+
// checks
|
309
351
|
_checkNftType(policyNftId, POLICY());
|
352
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
|
353
|
+
policyNftId);
|
310
354
|
|
355
|
+
// more checks, effects + interactions
|
311
356
|
return _expire(
|
312
357
|
instance,
|
313
358
|
policyNftId,
|
359
|
+
policyInfo,
|
314
360
|
expireAt
|
315
361
|
);
|
316
362
|
}
|
317
363
|
|
318
|
-
function _expire(
|
319
|
-
IInstance instance,
|
320
|
-
NftId policyNftId,
|
321
|
-
Timestamp expireAt
|
322
|
-
)
|
323
|
-
internal
|
324
|
-
returns (Timestamp expiredAt)
|
325
|
-
{
|
326
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
327
|
-
|
328
|
-
// check policy is active
|
329
|
-
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
330
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
331
|
-
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
332
|
-
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
333
|
-
}
|
334
|
-
|
335
|
-
// set return value to provided timestamp
|
336
|
-
expiredAt = expireAt;
|
337
|
-
|
338
|
-
// update expiredAt to current block timestamp if not set
|
339
|
-
if (expiredAt.eqz()) {
|
340
|
-
expiredAt = TimestampLib.blockTimestamp();
|
341
|
-
}
|
342
|
-
|
343
|
-
// check expiredAt represents a valid expiry time
|
344
|
-
if (expiredAt >= policyInfo.expiredAt) {
|
345
|
-
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
346
|
-
}
|
347
|
-
if (expiredAt < TimestampLib.blockTimestamp()) {
|
348
|
-
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
349
|
-
}
|
350
|
-
|
351
|
-
// update policyInfo with new expiredAt timestamp
|
352
|
-
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
353
|
-
policyInfo.expiredAt = expiredAt;
|
354
|
-
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
355
|
-
|
356
|
-
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
357
|
-
|
358
|
-
// callback to policy holder if applicable
|
359
|
-
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
360
|
-
}
|
361
|
-
|
362
364
|
|
365
|
+
/// @inheritdoc IPolicyService
|
363
366
|
function close(
|
364
367
|
NftId policyNftId
|
365
368
|
)
|
@@ -367,38 +370,31 @@ contract PolicyService is
|
|
367
370
|
virtual
|
368
371
|
nonReentrant()
|
369
372
|
{
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
+
// checks
|
374
|
+
(
|
375
|
+
IInstance instance,
|
376
|
+
NftId productNftId,
|
377
|
+
IPolicy.PolicyInfo memory policyInfo
|
378
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
373
379
|
InstanceReader instanceReader = instance.getInstanceReader();
|
374
380
|
|
375
|
-
// check
|
376
|
-
|
377
|
-
|
378
|
-
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
379
|
-
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
380
|
-
}
|
381
|
-
|
382
|
-
// check that policy has not already been closed
|
383
|
-
if (policyInfo.closedAt.gtz()) {
|
384
|
-
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
381
|
+
// check policy is in a closeable state
|
382
|
+
if (!PolicyServiceLib.policyIsCloseable(instanceReader, policyNftId)) {
|
383
|
+
revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
|
385
384
|
}
|
386
385
|
|
387
|
-
// check that policy
|
388
|
-
|
389
|
-
|
390
|
-
}
|
386
|
+
// check that policy has been activated
|
387
|
+
RiskId riskId = policyInfo.riskId;
|
388
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
391
389
|
|
392
|
-
|
393
|
-
// TODO consider to remove requirement for fully paid premiums altogether
|
394
|
-
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
390
|
+
if (instanceReader.getPremiumInfoState(policyNftId) != PAID()) {
|
395
391
|
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
396
392
|
}
|
397
393
|
|
394
|
+
// effects
|
398
395
|
// release (remaining) collateral that was blocked by policy
|
399
396
|
_poolService.releaseCollateral(
|
400
397
|
instance,
|
401
|
-
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
402
398
|
policyNftId,
|
403
399
|
policyInfo);
|
404
400
|
|
@@ -408,45 +404,48 @@ contract PolicyService is
|
|
408
404
|
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
409
405
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
410
406
|
|
407
|
+
// unlink policy from risk and bundle
|
408
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
409
|
+
instance.getRiskSet().unlinkPolicy(productNftId, riskId, policyNftId);
|
410
|
+
instance.getBundleSet().unlinkPolicy(poolNftId, bundleNftId, policyNftId);
|
411
|
+
|
411
412
|
emit LogPolicyServicePolicyClosed(policyNftId);
|
412
413
|
}
|
413
414
|
|
414
|
-
|
415
|
-
|
416
|
-
function _processPremium(
|
415
|
+
/// @dev shared functionality for expire() and policyExpire().
|
416
|
+
function _expire(
|
417
417
|
IInstance instance,
|
418
|
-
NftId
|
419
|
-
IPolicy.PolicyInfo memory
|
420
|
-
|
418
|
+
NftId policyNftId,
|
419
|
+
IPolicy.PolicyInfo memory policyInfo,
|
420
|
+
Timestamp expireAt
|
421
421
|
)
|
422
422
|
internal
|
423
|
-
|
423
|
+
returns (Timestamp)
|
424
424
|
{
|
425
|
-
|
426
|
-
|
425
|
+
PolicyServiceLib.checkExpiration(
|
426
|
+
expireAt,
|
427
|
+
policyNftId,
|
428
|
+
instance.getInstanceReader().getPolicyState(policyNftId),
|
429
|
+
policyInfo);
|
427
430
|
|
428
|
-
//
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
tokenHandler.getToken(),
|
435
|
-
address(tokenHandler),
|
436
|
-
policyHolder,
|
437
|
-
premium.premiumAmount);
|
431
|
+
// effects
|
432
|
+
// update policyInfo with new expiredAt timestamp
|
433
|
+
if (expireAt.gtz()) {
|
434
|
+
policyInfo.expiredAt = expireAt;
|
435
|
+
} else {
|
436
|
+
policyInfo.expiredAt = TimestampLib.blockTimestamp();
|
438
437
|
}
|
438
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
439
439
|
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
applicationInfo.referralId,
|
447
|
-
premium);
|
440
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, policyInfo.expiredAt);
|
441
|
+
|
442
|
+
// interactions
|
443
|
+
// callback to policy holder if applicable
|
444
|
+
_policyHolderPolicyExpired(policyNftId, policyInfo.expiredAt);
|
445
|
+
return policyInfo.expiredAt;
|
448
446
|
}
|
449
447
|
|
448
|
+
|
450
449
|
function _activate(
|
451
450
|
NftId policyNftId,
|
452
451
|
IPolicy.PolicyInfo memory policyInfo,
|
@@ -485,12 +484,12 @@ contract PolicyService is
|
|
485
484
|
internal
|
486
485
|
virtual
|
487
486
|
{
|
488
|
-
(NftId distributionNftId
|
487
|
+
(NftId distributionNftId,,,) = _getDistributionNftAndWallets(
|
489
488
|
instanceReader,
|
490
489
|
productNftId);
|
491
490
|
|
492
491
|
// update product fees, distribution and pool fees
|
493
|
-
|
492
|
+
_accountingService.increaseProductFees(
|
494
493
|
instanceStore,
|
495
494
|
productNftId,
|
496
495
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
@@ -511,7 +510,7 @@ contract PolicyService is
|
|
511
510
|
|
512
511
|
|
513
512
|
/// @dev transfer the premium to the wallets the premium is distributed to
|
514
|
-
function
|
513
|
+
function _transferPremiumAmounts(
|
515
514
|
InstanceReader instanceReader,
|
516
515
|
NftId policyNftId,
|
517
516
|
NftId productNftId,
|
@@ -520,7 +519,6 @@ contract PolicyService is
|
|
520
519
|
internal
|
521
520
|
virtual
|
522
521
|
{
|
523
|
-
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
524
522
|
address policyHolder = getRegistry().ownerOf(policyNftId);
|
525
523
|
|
526
524
|
(
|
@@ -532,14 +530,19 @@ contract PolicyService is
|
|
532
530
|
instanceReader,
|
533
531
|
productNftId);
|
534
532
|
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
533
|
+
// step 1: collect premium amount from policy holder
|
534
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(productNftId);
|
535
|
+
tokenHandler.pullToken(policyHolder, premium.premiumAmount);
|
536
|
+
|
537
|
+
// step 2: push distribution fee to distribution wallet
|
538
|
+
if (premium.distributionFeeAndCommissionAmount.gtz()) {
|
539
|
+
tokenHandler.pushToken(distributionWallet, premium.distributionFeeAndCommissionAmount);
|
540
|
+
}
|
541
|
+
|
542
|
+
// step 3: push pool fee, bundle fee and pool premium to pool wallet
|
543
|
+
if (premium.poolPremiumAndFeeAmount.gtz()) {
|
544
|
+
tokenHandler.pushToken(poolWallet, premium.poolPremiumAndFeeAmount);
|
545
|
+
}
|
543
546
|
}
|
544
547
|
|
545
548
|
|
@@ -559,31 +562,6 @@ contract PolicyService is
|
|
559
562
|
}
|
560
563
|
|
561
564
|
|
562
|
-
/// @dev checks the balance and allowance of the policy holder
|
563
|
-
function _checkPremiumBalanceAndAllowance(
|
564
|
-
IERC20Metadata token,
|
565
|
-
address tokenHandlerAddress,
|
566
|
-
address policyHolder,
|
567
|
-
Amount premiumAmount
|
568
|
-
)
|
569
|
-
internal
|
570
|
-
virtual
|
571
|
-
view
|
572
|
-
{
|
573
|
-
uint256 premium = premiumAmount.toInt();
|
574
|
-
uint256 balance = token.balanceOf(policyHolder);
|
575
|
-
uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
|
576
|
-
|
577
|
-
if (balance < premium) {
|
578
|
-
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
579
|
-
}
|
580
|
-
|
581
|
-
if (allowance < premium) {
|
582
|
-
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
|
583
|
-
}
|
584
|
-
}
|
585
|
-
|
586
|
-
|
587
565
|
function _policyHolderPolicyActivated(
|
588
566
|
NftId policyNftId,
|
589
567
|
Timestamp activateAt
|
@@ -642,21 +620,6 @@ contract PolicyService is
|
|
642
620
|
}
|
643
621
|
|
644
622
|
|
645
|
-
function _getTokenHandler(
|
646
|
-
InstanceReader instanceReader,
|
647
|
-
NftId productNftId
|
648
|
-
)
|
649
|
-
internal
|
650
|
-
virtual
|
651
|
-
view
|
652
|
-
returns (
|
653
|
-
TokenHandler tokenHandler
|
654
|
-
)
|
655
|
-
{
|
656
|
-
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
657
|
-
}
|
658
|
-
|
659
|
-
|
660
623
|
function _getDistributionNftAndWallets(
|
661
624
|
InstanceReader instanceReader,
|
662
625
|
NftId productNftId
|
@@ -671,17 +634,45 @@ contract PolicyService is
|
|
671
634
|
)
|
672
635
|
{
|
673
636
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
637
|
+
productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
|
638
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
|
639
|
+
|
640
|
+
if (productInfo.hasDistribution) {
|
641
|
+
distributionNftId = productInfo.distributionNftId;
|
642
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
|
643
|
+
}
|
678
644
|
}
|
679
645
|
|
680
646
|
|
681
|
-
function
|
682
|
-
|
683
|
-
|
684
|
-
|
647
|
+
function _getAndVerifyCallerForPolicy(NftId policyNftId)
|
648
|
+
internal
|
649
|
+
virtual
|
650
|
+
view
|
651
|
+
returns (
|
652
|
+
IInstance instance,
|
653
|
+
NftId productNftId,
|
654
|
+
IPolicy.PolicyInfo memory policyInfo
|
655
|
+
)
|
656
|
+
{
|
657
|
+
(
|
658
|
+
IRegistry.ObjectInfo memory productInfo,
|
659
|
+
address instanceAddress
|
660
|
+
) = ContractLib.getAndVerifyComponent(
|
661
|
+
getRegistry(),
|
662
|
+
msg.sender, // caller contract
|
663
|
+
PRODUCT(), // caller must be product
|
664
|
+
true); // only active caller
|
665
|
+
|
666
|
+
productNftId = productInfo.nftId; // calling product nft id
|
667
|
+
instance = IInstance(instanceAddress);
|
668
|
+
policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
669
|
+
|
670
|
+
if (policyInfo.productNftId != productNftId) {
|
671
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
672
|
+
policyNftId,
|
673
|
+
productNftId,
|
674
|
+
policyInfo.productNftId);
|
675
|
+
}
|
685
676
|
}
|
686
677
|
|
687
678
|
|