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