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