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