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