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