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