@etherisc/gif-next 0.0.2-d9bed37-033 → 0.0.2-d9d5e42-801
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 +81 -7
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1046 -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 +814 -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 +114 -291
- 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 +46 -164
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +404 -194
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +141 -67
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +32 -132
- 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 +121 -198
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +380 -45
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +287 -341
- 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 +185 -252
- 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 +76 -155
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +239 -203
- 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 +672 -362
- 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 +302 -14
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +531 -81
- 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 +1067 -479
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +324 -83
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +59 -47
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +676 -570
- 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 +66 -167
- 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 +36 -71
- 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 +50 -103
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +128 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +91 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +69 -137
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +380 -45
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +165 -337
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +85 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +62 -142
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -118
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +182 -235
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -149
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +546 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +357 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +125 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +167 -67
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +80 -38
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +182 -215
- 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 -179
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +96 -78
- 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 +112 -56
- 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 +163 -178
- 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 +233 -194
- 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 +103 -73
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +115 -119
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +69 -55
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +176 -209
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +143 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
- 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 +60 -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 +98 -50
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +726 -465
- 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 +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +56 -34
- 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 +49 -88
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -531
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -75
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -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 +36 -57
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -367
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -71
- 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 +49 -102
- 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 +297 -111
- 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 +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +241 -89
- 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 +340 -203
- 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 +84 -56
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +90 -61
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +203 -56
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +73 -39
- 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/Seconds.sol/SecondsLib.json +21 -2
- 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 +32 -16
- 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 +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -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 +41 -79
- package/contracts/distribution/DistributionService.sol +177 -97
- 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 +21 -8
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +32 -14
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -27
- 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 +52 -11
- package/contracts/instance/Instance.sol +171 -57
- package/contracts/instance/InstanceAdmin.sol +271 -165
- package/contracts/instance/InstanceAuthorizationV3.sol +115 -43
- package/contracts/instance/InstanceReader.sol +449 -312
- package/contracts/instance/InstanceService.sol +270 -171
- 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 +20 -9
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -7
- 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 -77
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +23 -4
- package/contracts/pool/BasicPoolAuthorization.sol +33 -8
- package/contracts/pool/BundleService.sol +55 -154
- 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 -98
- package/contracts/pool/PoolLib.sol +356 -0
- package/contracts/pool/PoolService.sol +275 -230
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +60 -20
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +32 -11
- package/contracts/product/ClaimService.sol +167 -148
- 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 +25 -11
- 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 +243 -297
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +52 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +67 -53
- package/contracts/product/RiskService.sol +92 -31
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +14 -15
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/Registry.sol +16 -3
- package/contracts/registry/RegistryAdmin.sol +101 -361
- package/contracts/registry/RegistryAuthorization.sol +284 -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 +154 -135
- package/contracts/registry/ServiceAuthorizationV3.sol +197 -46
- package/contracts/registry/TokenRegistry.sol +12 -13
- package/contracts/shared/Component.sol +52 -113
- package/contracts/shared/ComponentService.sol +349 -442
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ContractLib.sol +276 -3
- package/contracts/shared/IComponent.sol +2 -18
- package/contracts/shared/IComponentService.sol +27 -38
- 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 +6 -25
- package/contracts/shared/NftOwnable.sol +6 -6
- package/contracts/shared/PolicyHolder.sol +4 -3
- package/contracts/shared/Registerable.sol +41 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +266 -93
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +46 -19
- package/contracts/staking/IStakingService.sol +21 -8
- package/contracts/staking/Staking.sol +190 -82
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
- package/contracts/staking/StakingReader.sol +28 -19
- package/contracts/staking/StakingService.sol +77 -16
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/staking/StakingStore.sol +3 -2
- 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/Seconds.sol +4 -0
- 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 +4 -4
- 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/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
- 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
- package/contracts/shared/ComponentVerifyingService.sol +0 -126
@@ -1,43 +1,39 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
-
import {Product} from "./Product.sol";
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
5
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
8
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
+
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
8
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
9
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
9
10
|
import {IInstance} from "../instance/IInstance.sol";
|
10
11
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
12
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
13
|
+
import {IPolicyService} from "./IPolicyService.sol";
|
14
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
15
|
+
import {IPricingService} from "./IPricingService.sol";
|
16
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
11
17
|
|
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";
|
18
|
+
import {Amount} from "../type/Amount.sol";
|
17
19
|
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
20
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
18
21
|
import {NftId} from "../type/NftId.sol";
|
22
|
+
import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, PRICE} from "../type/ObjectType.sol";
|
23
|
+
import {PolicyServiceLib} from "./PolicyServiceLib.sol";
|
19
24
|
import {ReferralId} from "../type/Referral.sol";
|
20
|
-
import {
|
25
|
+
import {RiskId} from "../type/RiskId.sol";
|
26
|
+
import {Service} from "../shared/Service.sol";
|
27
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
28
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
21
29
|
import {VersionPart} from "../type/Version.sol";
|
22
30
|
|
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
31
|
|
37
32
|
contract PolicyService is
|
38
|
-
|
33
|
+
Service,
|
39
34
|
IPolicyService
|
40
35
|
{
|
36
|
+
IAccountingService private _accountingService;
|
41
37
|
IComponentService internal _componentService;
|
42
38
|
IDistributionService internal _distributionService;
|
43
39
|
IPoolService internal _poolService;
|
@@ -52,13 +48,14 @@ contract PolicyService is
|
|
52
48
|
initializer
|
53
49
|
{
|
54
50
|
(
|
55
|
-
address
|
56
|
-
address
|
51
|
+
address authority,
|
52
|
+
address registry
|
57
53
|
) = abi.decode(data, (address, address));
|
58
54
|
|
59
|
-
|
55
|
+
__Service_init(authority, registry, owner);
|
60
56
|
|
61
57
|
VersionPart majorVersion = getVersion().toMajorPart();
|
58
|
+
_accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
|
62
59
|
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
63
60
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
64
61
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
@@ -73,28 +70,18 @@ contract PolicyService is
|
|
73
70
|
)
|
74
71
|
external
|
75
72
|
virtual
|
73
|
+
restricted()
|
76
74
|
nonReentrant()
|
77
75
|
{
|
78
|
-
|
79
|
-
|
80
|
-
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
81
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
76
|
+
// checks
|
77
|
+
(IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
|
82
78
|
|
83
79
|
// check policy is in state applied
|
84
|
-
if (
|
80
|
+
if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
|
85
81
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
86
82
|
}
|
87
83
|
|
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
|
-
|
84
|
+
// effects
|
98
85
|
// store updated policy info
|
99
86
|
instance.getInstanceStore().updatePolicyState(
|
100
87
|
applicationNftId,
|
@@ -111,43 +98,36 @@ contract PolicyService is
|
|
111
98
|
)
|
112
99
|
external
|
113
100
|
virtual
|
101
|
+
restricted()
|
114
102
|
nonReentrant()
|
103
|
+
returns (Amount premiumAmount)
|
115
104
|
{
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
105
|
+
// checks
|
106
|
+
(
|
107
|
+
IInstance instance,
|
108
|
+
NftId productNftId,
|
109
|
+
IPolicy.PolicyInfo memory applicationInfo
|
110
|
+
) = _getAndVerifyCallerForPolicy(applicationNftId);
|
121
111
|
|
122
112
|
// check policy is in state applied
|
113
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
123
114
|
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
124
115
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
125
116
|
}
|
126
117
|
|
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
|
-
|
118
|
+
// effects
|
136
119
|
// actual collateralizaion
|
137
120
|
_poolService.lockCollateral(
|
138
121
|
instance,
|
139
|
-
address(instanceReader.
|
122
|
+
address(instanceReader.getToken(productNftId)),
|
140
123
|
productNftId,
|
141
124
|
applicationNftId,
|
142
125
|
applicationInfo.bundleNftId,
|
143
126
|
applicationInfo.sumInsuredAmount);
|
144
127
|
|
145
128
|
// optional activation of policy
|
146
|
-
if(activateAt
|
147
|
-
applicationInfo =
|
148
|
-
applicationNftId,
|
149
|
-
applicationInfo,
|
150
|
-
activateAt);
|
129
|
+
if(activateAt.gtz()) {
|
130
|
+
applicationInfo = PolicyServiceLib.activate(applicationNftId, applicationInfo, activateAt);
|
151
131
|
}
|
152
132
|
|
153
133
|
// update policy and set state to collateralized
|
@@ -157,35 +137,42 @@ contract PolicyService is
|
|
157
137
|
COLLATERALIZED());
|
158
138
|
|
159
139
|
// calculate and store premium
|
140
|
+
RiskId riskId = applicationInfo.riskId;
|
141
|
+
NftId bundleNftId = applicationInfo.bundleNftId;
|
142
|
+
|
160
143
|
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
161
144
|
productNftId,
|
162
|
-
|
145
|
+
riskId,
|
163
146
|
applicationInfo.sumInsuredAmount,
|
164
147
|
applicationInfo.lifetime,
|
165
148
|
applicationInfo.applicationData,
|
166
|
-
|
149
|
+
bundleNftId,
|
167
150
|
applicationInfo.referralId);
|
168
151
|
|
152
|
+
premiumAmount = premium.fullPremiumAmount;
|
169
153
|
instance.getInstanceStore().createPremium(
|
170
154
|
applicationNftId,
|
171
155
|
premium);
|
172
156
|
|
173
|
-
// update referral counter
|
157
|
+
// update referral counter if product has linked distributino component
|
174
158
|
{
|
175
159
|
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
|
160
|
+
if (productInfo.hasDistribution) {
|
178
161
|
_distributionService.processReferral(
|
179
162
|
productInfo.distributionNftId,
|
180
163
|
applicationInfo.referralId);
|
181
164
|
}
|
182
165
|
}
|
183
166
|
|
167
|
+
// link policy to risk and bundle
|
168
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
169
|
+
instance.getRiskSet().linkPolicy(productNftId, riskId, applicationNftId);
|
170
|
+
instance.getBundleSet().linkPolicy(poolNftId, bundleNftId, applicationNftId);
|
171
|
+
|
184
172
|
// log policy creation before interactions with token and policy holder
|
185
173
|
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
186
174
|
|
187
|
-
//
|
188
|
-
|
175
|
+
// interactions
|
189
176
|
// callback to policy holder if applicable
|
190
177
|
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
191
178
|
}
|
@@ -198,37 +185,54 @@ contract PolicyService is
|
|
198
185
|
)
|
199
186
|
external
|
200
187
|
virtual
|
188
|
+
restricted()
|
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
|
216
|
-
if (instanceReader.
|
204
|
+
// check if premium has already been collected
|
205
|
+
if (instanceReader.getPremiumState(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
|
230
234
|
if(activateAt.gtz()) {
|
231
|
-
policyInfo =
|
235
|
+
policyInfo = PolicyServiceLib.activate(policyNftId, policyInfo, activateAt);
|
232
236
|
}
|
233
237
|
|
234
238
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
@@ -237,33 +241,76 @@ 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
|
253
|
+
restricted()
|
247
254
|
nonReentrant()
|
248
255
|
{
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
256
|
-
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
256
|
+
// checks
|
257
|
+
(
|
258
|
+
IInstance instance,,
|
259
|
+
IPolicy.PolicyInfo memory policyInfo
|
260
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
257
261
|
|
262
|
+
// effects
|
263
|
+
policyInfo = PolicyServiceLib.activate(policyNftId, policyInfo, activateAt);
|
258
264
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
259
265
|
|
260
266
|
// log policy activation before interactions with policy holder
|
261
267
|
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
262
268
|
|
269
|
+
// interactions
|
263
270
|
// callback to policy holder if applicable
|
264
271
|
_policyHolderPolicyActivated(policyNftId, activateAt);
|
265
272
|
}
|
266
273
|
|
274
|
+
/// @inheritdoc IPolicyService
|
275
|
+
function adjustActivation(
|
276
|
+
NftId policyNftId,
|
277
|
+
Timestamp newActivateAt
|
278
|
+
)
|
279
|
+
external
|
280
|
+
virtual
|
281
|
+
restricted()
|
282
|
+
nonReentrant()
|
283
|
+
{
|
284
|
+
// checks
|
285
|
+
(
|
286
|
+
IInstance instance,,
|
287
|
+
IPolicy.PolicyInfo memory policyInfo
|
288
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
289
|
+
|
290
|
+
if (policyInfo.activatedAt.eqz()) {
|
291
|
+
revert ErrorPolicyServicePolicyNotActivated(policyNftId);
|
292
|
+
}
|
293
|
+
|
294
|
+
if (newActivateAt < TimestampLib.blockTimestamp()) {
|
295
|
+
revert ErrorPolicyServicePolicyActivationTooEarly(policyNftId, TimestampLib.blockTimestamp(), newActivateAt);
|
296
|
+
}
|
297
|
+
|
298
|
+
if (newActivateAt > policyInfo.expiredAt) {
|
299
|
+
revert ErrorPolicyServicePolicyActivationTooLate(policyNftId, policyInfo.expiredAt, newActivateAt);
|
300
|
+
}
|
301
|
+
|
302
|
+
// effects
|
303
|
+
policyInfo.activatedAt = newActivateAt;
|
304
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
305
|
+
|
306
|
+
// log policy activation before interactions with policy holder
|
307
|
+
emit LogPolicyServicePolicyActivatedUpdated(policyNftId, newActivateAt);
|
308
|
+
|
309
|
+
// interactions
|
310
|
+
// callback to policy holder if applicable
|
311
|
+
_policyHolderPolicyActivated(policyNftId, newActivateAt);
|
312
|
+
}
|
313
|
+
|
267
314
|
|
268
315
|
/// @inheritdoc IPolicyService
|
269
316
|
function expire(
|
@@ -272,29 +319,26 @@ contract PolicyService is
|
|
272
319
|
)
|
273
320
|
external
|
274
321
|
virtual
|
322
|
+
restricted()
|
275
323
|
nonReentrant()
|
276
324
|
returns (Timestamp expiredAt)
|
277
325
|
{
|
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
|
-
}
|
326
|
+
// checks
|
327
|
+
(
|
328
|
+
IInstance instance,,
|
329
|
+
IPolicy.PolicyInfo memory policyInfo
|
330
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
290
331
|
|
332
|
+
// more checks, effects + interactions
|
291
333
|
return _expire(
|
292
334
|
instance,
|
293
335
|
policyNftId,
|
336
|
+
policyInfo,
|
294
337
|
expireAt
|
295
338
|
);
|
296
339
|
}
|
297
340
|
|
341
|
+
|
298
342
|
/// @inheritdoc IPolicyService
|
299
343
|
function expirePolicy(
|
300
344
|
IInstance instance,
|
@@ -303,102 +347,59 @@ contract PolicyService is
|
|
303
347
|
)
|
304
348
|
external
|
305
349
|
virtual
|
350
|
+
restricted()
|
306
351
|
nonReentrant()
|
307
352
|
returns (Timestamp expiredAt)
|
308
353
|
{
|
354
|
+
// checks
|
309
355
|
_checkNftType(policyNftId, POLICY());
|
356
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
|
357
|
+
policyNftId);
|
310
358
|
|
359
|
+
// more checks, effects + interactions
|
311
360
|
return _expire(
|
312
361
|
instance,
|
313
362
|
policyNftId,
|
363
|
+
policyInfo,
|
314
364
|
expireAt
|
315
365
|
);
|
316
366
|
}
|
317
367
|
|
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
368
|
|
369
|
+
/// @inheritdoc IPolicyService
|
363
370
|
function close(
|
364
371
|
NftId policyNftId
|
365
372
|
)
|
366
373
|
external
|
367
374
|
virtual
|
375
|
+
restricted()
|
368
376
|
nonReentrant()
|
369
377
|
{
|
370
|
-
|
371
|
-
|
372
|
-
|
378
|
+
// checks
|
379
|
+
(
|
380
|
+
IInstance instance,
|
381
|
+
NftId productNftId,
|
382
|
+
IPolicy.PolicyInfo memory policyInfo
|
383
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
373
384
|
InstanceReader instanceReader = instance.getInstanceReader();
|
374
385
|
|
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);
|
386
|
+
// check policy is in a closeable state
|
387
|
+
if (!PolicyServiceLib.policyIsCloseable(instanceReader, policyNftId)) {
|
388
|
+
revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
|
385
389
|
}
|
386
390
|
|
387
|
-
// check that policy
|
388
|
-
|
389
|
-
|
390
|
-
}
|
391
|
+
// check that policy has been activated
|
392
|
+
RiskId riskId = policyInfo.riskId;
|
393
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
391
394
|
|
392
|
-
|
393
|
-
// TODO consider to remove requirement for fully paid premiums altogether
|
394
|
-
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
395
|
+
if (instanceReader.getPremiumState(policyNftId) != PAID()) {
|
395
396
|
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
396
397
|
}
|
397
398
|
|
399
|
+
// effects
|
398
400
|
// release (remaining) collateral that was blocked by policy
|
399
401
|
_poolService.releaseCollateral(
|
400
402
|
instance,
|
401
|
-
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
402
403
|
policyNftId,
|
403
404
|
policyInfo);
|
404
405
|
|
@@ -408,71 +409,42 @@ contract PolicyService is
|
|
408
409
|
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
409
410
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
410
411
|
|
412
|
+
// unlink policy from risk and bundle
|
413
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
414
|
+
instance.getRiskSet().unlinkPolicy(productNftId, riskId, policyNftId);
|
415
|
+
instance.getBundleSet().unlinkPolicy(poolNftId, bundleNftId, policyNftId);
|
416
|
+
|
411
417
|
emit LogPolicyServicePolicyClosed(policyNftId);
|
412
418
|
}
|
413
419
|
|
414
420
|
|
415
|
-
/// @dev
|
416
|
-
function
|
421
|
+
/// @dev shared functionality for expire() and policyExpire().
|
422
|
+
function _expire(
|
417
423
|
IInstance instance,
|
418
|
-
NftId
|
419
|
-
IPolicy.PolicyInfo memory applicationInfo,
|
420
|
-
IPolicy.PremiumInfo memory premium
|
421
|
-
)
|
422
|
-
internal
|
423
|
-
virtual
|
424
|
-
{
|
425
|
-
NftId productNftId = applicationInfo.productNftId;
|
426
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
427
|
-
|
428
|
-
// check if premium balance and allowance of policy holder is sufficient
|
429
|
-
{
|
430
|
-
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
431
|
-
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
432
|
-
|
433
|
-
_checkPremiumBalanceAndAllowance(
|
434
|
-
tokenHandler.getToken(),
|
435
|
-
address(tokenHandler),
|
436
|
-
policyHolder,
|
437
|
-
premium.premiumAmount);
|
438
|
-
}
|
439
|
-
|
440
|
-
// update the counters
|
441
|
-
_processSale(
|
442
|
-
instanceReader,
|
443
|
-
instance.getInstanceStore(),
|
444
|
-
productNftId,
|
445
|
-
applicationInfo.bundleNftId,
|
446
|
-
applicationInfo.referralId,
|
447
|
-
premium);
|
448
|
-
}
|
449
|
-
|
450
|
-
function _activate(
|
451
|
-
NftId policyNftId,
|
424
|
+
NftId policyNftId,
|
452
425
|
IPolicy.PolicyInfo memory policyInfo,
|
453
|
-
Timestamp
|
426
|
+
Timestamp expireAt
|
454
427
|
)
|
455
428
|
internal
|
456
|
-
|
457
|
-
view
|
458
|
-
returns (IPolicy.PolicyInfo memory)
|
429
|
+
returns (Timestamp)
|
459
430
|
{
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
431
|
+
policyInfo = PolicyServiceLib.expire(
|
432
|
+
instance.getInstanceReader(),
|
433
|
+
policyNftId,
|
434
|
+
policyInfo,
|
435
|
+
expireAt);
|
464
436
|
|
465
|
-
|
466
|
-
if (policyInfo.activatedAt == activateAt) {
|
467
|
-
return policyInfo;
|
468
|
-
}
|
437
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
469
438
|
|
470
|
-
policyInfo.
|
471
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
439
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, policyInfo.expiredAt);
|
472
440
|
|
473
|
-
|
441
|
+
// interactions
|
442
|
+
// callback to policy holder if applicable
|
443
|
+
_policyHolderPolicyExpired(policyNftId, policyInfo.expiredAt);
|
444
|
+
return policyInfo.expiredAt;
|
474
445
|
}
|
475
446
|
|
447
|
+
|
476
448
|
/// @dev update counters by calling the involved services
|
477
449
|
function _processSale(
|
478
450
|
InstanceReader instanceReader,
|
@@ -485,12 +457,12 @@ contract PolicyService is
|
|
485
457
|
internal
|
486
458
|
virtual
|
487
459
|
{
|
488
|
-
(NftId distributionNftId
|
460
|
+
(NftId distributionNftId,,,) = _getDistributionNftAndWallets(
|
489
461
|
instanceReader,
|
490
462
|
productNftId);
|
491
463
|
|
492
464
|
// update product fees, distribution and pool fees
|
493
|
-
|
465
|
+
_accountingService.increaseProductFees(
|
494
466
|
instanceStore,
|
495
467
|
productNftId,
|
496
468
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
@@ -511,7 +483,7 @@ contract PolicyService is
|
|
511
483
|
|
512
484
|
|
513
485
|
/// @dev transfer the premium to the wallets the premium is distributed to
|
514
|
-
function
|
486
|
+
function _transferPremiumAmounts(
|
515
487
|
InstanceReader instanceReader,
|
516
488
|
NftId policyNftId,
|
517
489
|
NftId productNftId,
|
@@ -520,7 +492,6 @@ contract PolicyService is
|
|
520
492
|
internal
|
521
493
|
virtual
|
522
494
|
{
|
523
|
-
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
524
495
|
address policyHolder = getRegistry().ownerOf(policyNftId);
|
525
496
|
|
526
497
|
(
|
@@ -532,58 +503,20 @@ contract PolicyService is
|
|
532
503
|
instanceReader,
|
533
504
|
productNftId);
|
534
505
|
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
premium.productFeeAmount,
|
539
|
-
distributionWallet,
|
540
|
-
premium.distributionFeeAndCommissionAmount,
|
541
|
-
poolWallet,
|
542
|
-
premium.poolPremiumAndFeeAmount);
|
543
|
-
}
|
544
|
-
|
545
|
-
|
546
|
-
/// @dev checks that policy has been collateralized and has been activated.
|
547
|
-
/// does not check if policy has been expired or closed.
|
548
|
-
function _policyHasBeenActivated(
|
549
|
-
StateId policyState,
|
550
|
-
IPolicy.PolicyInfo memory policyInfo
|
551
|
-
)
|
552
|
-
internal
|
553
|
-
view
|
554
|
-
returns (bool)
|
555
|
-
{
|
556
|
-
if (policyState != COLLATERALIZED()) { return false; }
|
557
|
-
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
558
|
-
return true;
|
559
|
-
}
|
560
|
-
|
506
|
+
// step 1: collect premium amount from policy holder
|
507
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(productNftId);
|
508
|
+
tokenHandler.pullToken(policyHolder, premium.premiumAmount);
|
561
509
|
|
562
|
-
|
563
|
-
|
564
|
-
|
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);
|
510
|
+
// step 2: push distribution fee to distribution wallet
|
511
|
+
if (premium.distributionFeeAndCommissionAmount.gtz()) {
|
512
|
+
tokenHandler.pushToken(distributionWallet, premium.distributionFeeAndCommissionAmount);
|
579
513
|
}
|
580
514
|
|
581
|
-
|
582
|
-
|
515
|
+
// step 3: push pool fee, bundle fee and pool premium to pool wallet
|
516
|
+
if (premium.poolPremiumAndFeeAmount.gtz()) {
|
517
|
+
tokenHandler.pushToken(poolWallet, premium.poolPremiumAndFeeAmount);
|
583
518
|
}
|
584
519
|
}
|
585
|
-
|
586
|
-
|
587
520
|
function _policyHolderPolicyActivated(
|
588
521
|
NftId policyNftId,
|
589
522
|
Timestamp activateAt
|
@@ -642,21 +575,6 @@ contract PolicyService is
|
|
642
575
|
}
|
643
576
|
|
644
577
|
|
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
578
|
function _getDistributionNftAndWallets(
|
661
579
|
InstanceReader instanceReader,
|
662
580
|
NftId productNftId
|
@@ -671,17 +589,45 @@ contract PolicyService is
|
|
671
589
|
)
|
672
590
|
{
|
673
591
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
592
|
+
productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
|
593
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
|
594
|
+
|
595
|
+
if (productInfo.hasDistribution) {
|
596
|
+
distributionNftId = productInfo.distributionNftId;
|
597
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
|
598
|
+
}
|
678
599
|
}
|
679
600
|
|
680
601
|
|
681
|
-
function
|
682
|
-
|
683
|
-
|
684
|
-
|
602
|
+
function _getAndVerifyCallerForPolicy(NftId policyNftId)
|
603
|
+
internal
|
604
|
+
virtual
|
605
|
+
view
|
606
|
+
returns (
|
607
|
+
IInstance instance,
|
608
|
+
NftId productNftId,
|
609
|
+
IPolicy.PolicyInfo memory policyInfo
|
610
|
+
)
|
611
|
+
{
|
612
|
+
(
|
613
|
+
IRegistry.ObjectInfo memory productInfo,
|
614
|
+
address instanceAddress
|
615
|
+
) = ContractLib.getAndVerifyComponent(
|
616
|
+
getRegistry(),
|
617
|
+
msg.sender, // caller contract
|
618
|
+
PRODUCT(), // caller must be product
|
619
|
+
true); // only active caller
|
620
|
+
|
621
|
+
productNftId = productInfo.nftId; // calling product nft id
|
622
|
+
instance = IInstance(instanceAddress);
|
623
|
+
policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
624
|
+
|
625
|
+
if (policyInfo.productNftId != productNftId) {
|
626
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
627
|
+
policyNftId,
|
628
|
+
productNftId,
|
629
|
+
policyInfo.productNftId);
|
630
|
+
}
|
685
631
|
}
|
686
632
|
|
687
633
|
|