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