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