@etherisc/gif-next 0.0.2-c6d46bb-892 → 0.0.2-c7609c4-545
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 +51 -5
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +236 -564
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +331 -432
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +167 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +220 -291
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +215 -94
- 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 +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -97
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +173 -87
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +122 -222
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1653 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +850 -366
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +247 -231
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +145 -79
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1212 -381
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +788 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +907 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1299 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +494 -317
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +225 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +256 -31
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +238 -373
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +460 -254
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +268 -577
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +572 -569
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +151 -93
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +117 -264
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +138 -76
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +329 -284
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +180 -90
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +54 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +354 -80
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +154 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +360 -209
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +44 -57
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +418 -397
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +163 -121
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +233 -330
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +167 -93
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +381 -448
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -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 +435 -29
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +270 -109
- 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 +861 -64
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +330 -234
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +132 -76
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +138 -286
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1335 -198
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +814 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +474 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +110 -114
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1335 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +723 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -1
- 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 +49 -1
- 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 +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +829 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +68 -85
- 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 +55 -101
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +362 -7
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +573 -53
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +776 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +658 -176
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +710 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -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 +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -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 +149 -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 +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- 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 +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -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 +602 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +596 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/authorization/IAccessAdmin.sol +137 -0
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/authorization/IServiceAuthorization.sol +40 -0
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +106 -0
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +156 -156
- package/contracts/distribution/DistributionService.sol +179 -173
- package/contracts/distribution/DistributionServiceManager.sol +13 -25
- package/contracts/distribution/IDistributionComponent.sol +28 -47
- package/contracts/distribution/IDistributionService.sol +24 -10
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +33 -44
- package/contracts/instance/IInstanceService.sol +32 -34
- package/contracts/instance/Instance.sol +129 -126
- package/contracts/instance/InstanceAdmin.sol +277 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
- package/contracts/instance/InstanceReader.sol +194 -67
- package/contracts/instance/InstanceService.sol +250 -144
- package/contracts/instance/InstanceServiceManager.sol +14 -29
- package/contracts/instance/InstanceStore.sol +142 -66
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +21 -11
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +31 -25
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +156 -0
- package/contracts/oracle/OracleService.sol +291 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +154 -0
- package/contracts/pool/BasicPoolAuthorization.sol +57 -0
- package/contracts/pool/BundleService.sol +322 -211
- package/contracts/pool/BundleServiceManager.sol +13 -25
- package/contracts/pool/IBundleService.sol +44 -19
- package/contracts/pool/IPoolComponent.sol +27 -73
- package/contracts/pool/IPoolService.sol +93 -40
- package/contracts/pool/Pool.sol +186 -153
- package/contracts/pool/PoolService.sol +375 -234
- package/contracts/pool/PoolServiceManager.sol +12 -24
- package/contracts/product/ApplicationService.sol +158 -85
- package/contracts/product/ApplicationServiceManager.sol +12 -9
- package/contracts/product/BasicProduct.sol +53 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +333 -163
- package/contracts/product/ClaimServiceManager.sol +12 -9
- package/contracts/product/IApplicationService.sol +2 -1
- package/contracts/product/IClaimService.sol +35 -5
- package/contracts/product/IPolicyService.sol +38 -38
- package/contracts/product/IPricingService.sol +13 -11
- package/contracts/product/IProductComponent.sol +28 -10
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -9
- package/contracts/product/PolicyService.sol +519 -204
- package/contracts/product/PolicyServiceManager.sol +12 -27
- package/contracts/product/PricingService.sol +109 -84
- package/contracts/product/PricingServiceManager.sol +12 -24
- package/contracts/product/Product.sol +222 -146
- package/contracts/product/RiskService.sol +96 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +75 -38
- package/contracts/registry/IRegistry.sol +91 -21
- package/contracts/registry/IRegistryService.sol +30 -34
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +445 -195
- package/contracts/registry/RegistryAdmin.sol +448 -0
- package/contracts/registry/RegistryService.sol +85 -129
- package/contracts/registry/RegistryServiceManager.sol +23 -30
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +501 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/Component.sol +150 -156
- package/contracts/shared/ComponentService.sol +694 -99
- package/contracts/shared/ComponentServiceManager.sol +38 -0
- package/contracts/shared/ComponentVerifyingService.sol +126 -0
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +25 -41
- package/contracts/shared/IComponentService.sol +120 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
- package/contracts/shared/InstanceLinkedComponent.sol +213 -0
- package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
- package/contracts/shared/Lifecycle.sol +88 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +31 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +21 -11
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +48 -36
- package/contracts/shared/TokenHandler.sol +112 -8
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +103 -48
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +497 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +52 -0
- package/contracts/staking/StakingReader.sol +190 -0
- package/contracts/staking/StakingService.sol +290 -49
- package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +14 -7
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +44 -3
- package/contracts/type/Blocknumber.sol +26 -3
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +15 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +176 -62
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +98 -68
- package/contracts/type/Seconds.sol +48 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +38 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +90 -27
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +10 -6
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- 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 -864
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- 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/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
- package/contracts/instance/base/Lifecycle.sol +0 -121
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/product/ProductService.sol +0 -210
- package/contracts/product/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/registry/ReleaseManager.sol +0 -328
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,58 +1,48 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
3
5
|
|
4
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
7
|
import {Product} from "./Product.sol";
|
6
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
8
9
|
import {IInstance} from "../instance/IInstance.sol";
|
9
10
|
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
|
-
import {ISetup} from "../instance/module/ISetup.sol";
|
14
11
|
|
15
12
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
16
13
|
|
17
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
18
|
-
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
19
15
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
20
|
-
import {
|
21
|
-
import {
|
22
|
-
import {
|
23
|
-
import {
|
24
|
-
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
16
|
+
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
17
|
+
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
19
|
+
import {ReferralId} from "../type/Referral.sol";
|
25
20
|
import {StateId} from "../type/StateId.sol";
|
26
21
|
import {VersionPart} from "../type/Version.sol";
|
27
22
|
|
28
|
-
import {
|
23
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
24
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
29
25
|
import {IApplicationService} from "./IApplicationService.sol";
|
30
26
|
import {IBundleService} from "../pool/IBundleService.sol";
|
31
27
|
import {IClaimService} from "./IClaimService.sol";
|
28
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
32
29
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
33
30
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
31
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
32
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
34
33
|
import {IPolicyService} from "./IPolicyService.sol";
|
35
34
|
import {IPoolService} from "../pool/IPoolService.sol";
|
36
35
|
import {IPricingService} from "./IPricingService.sol";
|
37
|
-
import {IService} from "../shared/IService.sol";
|
38
|
-
import {Service} from "../shared/Service.sol";
|
39
36
|
|
40
37
|
contract PolicyService is
|
41
|
-
|
38
|
+
ComponentVerifyingService,
|
42
39
|
IPolicyService
|
43
40
|
{
|
44
|
-
|
45
|
-
using TimestampLib for Timestamp;
|
46
|
-
|
47
|
-
IApplicationService internal _applicationService;
|
48
|
-
IBundleService internal _bundleService;
|
49
|
-
IClaimService internal _claimService;
|
41
|
+
IComponentService internal _componentService;
|
50
42
|
IDistributionService internal _distributionService;
|
51
43
|
IPoolService internal _poolService;
|
52
44
|
IPricingService internal _pricingService;
|
53
45
|
|
54
|
-
event LogProductServiceSender(address sender);
|
55
|
-
|
56
46
|
function _initialize(
|
57
47
|
address owner,
|
58
48
|
bytes memory data
|
@@ -61,59 +51,79 @@ contract PolicyService is
|
|
61
51
|
virtual override
|
62
52
|
initializer
|
63
53
|
{
|
64
|
-
|
65
|
-
|
66
|
-
|
54
|
+
(
|
55
|
+
address registryAddress,
|
56
|
+
address authority
|
57
|
+
) = abi.decode(data, (address, address));
|
67
58
|
|
68
|
-
|
59
|
+
_initializeService(registryAddress, authority, owner);
|
69
60
|
|
70
61
|
VersionPart majorVersion = getVersion().toMajorPart();
|
62
|
+
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
71
63
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
72
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
73
|
-
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
74
|
-
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
75
64
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
76
65
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
77
66
|
|
78
|
-
|
79
|
-
}
|
80
|
-
|
81
|
-
|
82
|
-
function getDomain() public pure override returns(ObjectType) {
|
83
|
-
return POLICY();
|
84
|
-
}
|
85
|
-
|
86
|
-
|
87
|
-
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
88
|
-
IRegistry.ObjectInfo memory productInfo;
|
89
|
-
(, productInfo,) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
90
|
-
product = Product(productInfo.objectAddress);
|
67
|
+
_registerInterface(type(IPolicyService).interfaceId);
|
91
68
|
}
|
92
69
|
|
93
70
|
|
94
71
|
function decline(
|
95
|
-
NftId policyNftId
|
72
|
+
NftId applicationNftId // = policyNftId
|
96
73
|
)
|
97
74
|
external
|
98
|
-
|
75
|
+
virtual
|
76
|
+
nonReentrant()
|
99
77
|
{
|
100
|
-
|
78
|
+
_checkNftType(applicationNftId, POLICY());
|
79
|
+
|
80
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
81
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
82
|
+
|
83
|
+
// check policy is in state applied
|
84
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
85
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
86
|
+
}
|
87
|
+
|
88
|
+
// check policy matches with calling product
|
89
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
90
|
+
if(applicationInfo.productNftId != productNftId) {
|
91
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
92
|
+
applicationNftId,
|
93
|
+
applicationInfo.productNftId,
|
94
|
+
productNftId);
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
// store updated policy info
|
99
|
+
instance.getInstanceStore().updatePolicyState(
|
100
|
+
applicationNftId,
|
101
|
+
DECLINED());
|
102
|
+
|
103
|
+
emit LogPolicyServicePolicyDeclined(applicationNftId);
|
101
104
|
}
|
102
105
|
|
103
106
|
|
104
|
-
/// @
|
105
|
-
function
|
107
|
+
/// @inheritdoc IPolicyService
|
108
|
+
function createPolicy(
|
106
109
|
NftId applicationNftId, // = policyNftId
|
107
|
-
bool requirePremiumPayment,
|
108
110
|
Timestamp activateAt
|
109
111
|
)
|
110
112
|
external
|
111
|
-
virtual
|
113
|
+
virtual
|
114
|
+
nonReentrant()
|
112
115
|
{
|
116
|
+
_checkNftType(applicationNftId, POLICY());
|
117
|
+
|
113
118
|
// check caller is registered product
|
114
|
-
(NftId productNftId,, IInstance instance) =
|
119
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
115
120
|
InstanceReader instanceReader = instance.getInstanceReader();
|
116
121
|
|
122
|
+
// check policy is in state applied
|
123
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
124
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
125
|
+
}
|
126
|
+
|
117
127
|
// check policy matches with calling product
|
118
128
|
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
119
129
|
if(applicationInfo.productNftId != productNftId) {
|
@@ -122,255 +132,560 @@ contract PolicyService is
|
|
122
132
|
applicationInfo.productNftId,
|
123
133
|
productNftId);
|
124
134
|
}
|
125
|
-
|
126
|
-
// check policy is in state applied
|
127
|
-
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
128
|
-
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
129
|
-
}
|
130
135
|
|
131
|
-
|
136
|
+
// actual collateralizaion
|
137
|
+
_poolService.lockCollateral(
|
138
|
+
instance,
|
139
|
+
address(instanceReader.getComponentInfo(productNftId).token),
|
140
|
+
productNftId,
|
141
|
+
applicationNftId,
|
142
|
+
applicationInfo.bundleNftId,
|
143
|
+
applicationInfo.sumInsuredAmount);
|
132
144
|
|
133
145
|
// optional activation of policy
|
134
146
|
if(activateAt > zeroTimestamp()) {
|
135
|
-
|
136
|
-
|
137
|
-
|
147
|
+
applicationInfo = _activate(
|
148
|
+
applicationNftId,
|
149
|
+
applicationInfo,
|
150
|
+
activateAt);
|
138
151
|
}
|
139
152
|
|
140
|
-
//
|
141
|
-
|
153
|
+
// update policy and set state to collateralized
|
154
|
+
instance.getInstanceStore().updatePolicy(
|
155
|
+
applicationNftId,
|
156
|
+
applicationInfo,
|
157
|
+
COLLATERALIZED());
|
142
158
|
|
143
|
-
//
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
159
|
+
// calculate and store premium
|
160
|
+
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
161
|
+
productNftId,
|
162
|
+
applicationInfo.riskId,
|
163
|
+
applicationInfo.sumInsuredAmount,
|
164
|
+
applicationInfo.lifetime,
|
165
|
+
applicationInfo.applicationData,
|
166
|
+
applicationInfo.bundleNftId,
|
167
|
+
applicationInfo.referralId);
|
168
|
+
|
169
|
+
instance.getInstanceStore().createPremium(
|
170
|
+
applicationNftId,
|
171
|
+
premium);
|
172
|
+
|
173
|
+
// update referral counter
|
174
|
+
{
|
175
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
149
176
|
|
150
|
-
|
177
|
+
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
178
|
+
_distributionService.processReferral(
|
179
|
+
productInfo.distributionNftId,
|
180
|
+
applicationInfo.referralId);
|
181
|
+
}
|
151
182
|
}
|
152
183
|
|
153
|
-
//
|
154
|
-
|
184
|
+
// log policy creation before interactions with token and policy holder
|
185
|
+
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
155
186
|
|
156
|
-
//
|
157
|
-
// pool retention level: fraction of sum insured that product will cover from pool funds directly
|
158
|
-
// eg retention level 30%, payouts up to 30% of the sum insured will be made from the product's pool directly
|
159
|
-
// for the remaining 70% the pool owns a policy that will cover claims that exceed the 30% of the sum insured
|
160
|
-
// might also call pool component (for isVerifyingApplications pools)
|
161
|
-
_poolService.lockCollateral(
|
162
|
-
instance,
|
163
|
-
productNftId,
|
164
|
-
applicationNftId,
|
165
|
-
applicationInfo,
|
166
|
-
netPremiumAmount); // for pool book keeping (fee + additional capital)
|
187
|
+
// TODO add calling pool contract if it needs to validate application
|
167
188
|
|
168
|
-
//
|
189
|
+
// callback to policy holder if applicable
|
190
|
+
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
169
191
|
}
|
170
192
|
|
171
193
|
|
172
|
-
|
173
|
-
UFixed collateralizationLevel,
|
174
|
-
Amount sumInsuredAmount
|
175
|
-
)
|
176
|
-
public
|
177
|
-
pure
|
178
|
-
virtual
|
179
|
-
returns(Amount collateralAmount)
|
180
|
-
{
|
181
|
-
UFixed collateralUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
182
|
-
return AmountLib.toAmount(collateralUFixed.toInt());
|
183
|
-
}
|
184
|
-
|
194
|
+
/// @inheritdoc IPolicyService
|
185
195
|
function collectPremium(
|
186
196
|
NftId policyNftId,
|
187
197
|
Timestamp activateAt
|
188
198
|
)
|
189
199
|
external
|
190
200
|
virtual
|
201
|
+
nonReentrant()
|
191
202
|
{
|
203
|
+
_checkNftType(policyNftId, POLICY());
|
204
|
+
|
192
205
|
// check caller is registered product
|
193
|
-
(
|
206
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
194
207
|
InstanceReader instanceReader = instance.getInstanceReader();
|
195
|
-
|
208
|
+
StateId stateId = instanceReader.getPolicyState(policyNftId);
|
196
209
|
|
197
|
-
|
198
|
-
|
210
|
+
// check policy is in state collateralized or active
|
211
|
+
if (!(stateId == COLLATERALIZED())) {
|
212
|
+
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
199
213
|
}
|
200
214
|
|
201
|
-
|
215
|
+
// check if premium is already collected
|
216
|
+
if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
|
217
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
218
|
+
}
|
202
219
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
220
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
221
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
222
|
+
|
223
|
+
_processPremium(
|
224
|
+
instance,
|
225
|
+
policyNftId,
|
226
|
+
policyInfo,
|
227
|
+
premium);
|
207
228
|
|
208
|
-
|
229
|
+
// optionally activate policy
|
230
|
+
if(activateAt.gtz()) {
|
231
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
232
|
+
}
|
209
233
|
|
210
|
-
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
211
234
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
235
|
+
instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
|
212
236
|
|
213
|
-
|
214
|
-
|
215
|
-
}
|
237
|
+
// log premium collection before interactions with token
|
238
|
+
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
216
239
|
|
217
|
-
|
240
|
+
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
218
241
|
}
|
219
242
|
|
220
|
-
|
243
|
+
/// @inheritdoc IPolicyService
|
244
|
+
function activate(NftId policyNftId, Timestamp activateAt)
|
245
|
+
external
|
246
|
+
virtual
|
247
|
+
nonReentrant()
|
248
|
+
{
|
249
|
+
_checkNftType(policyNftId, POLICY());
|
250
|
+
|
221
251
|
// check caller is registered product
|
222
|
-
(,, IInstance instance) =
|
252
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
223
253
|
InstanceReader instanceReader = instance.getInstanceReader();
|
224
254
|
|
225
255
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
256
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
226
257
|
|
227
|
-
|
228
|
-
policyInfo.activatedAt.eqz(),
|
229
|
-
"ERROR:PRS-020:ALREADY_ACTIVATED");
|
230
|
-
|
231
|
-
policyInfo.activatedAt = activateAt;
|
232
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
258
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
233
259
|
|
234
|
-
|
260
|
+
// log policy activation before interactions with policy holder
|
261
|
+
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
235
262
|
|
236
|
-
//
|
263
|
+
// callback to policy holder if applicable
|
264
|
+
_policyHolderPolicyActivated(policyNftId, activateAt);
|
237
265
|
}
|
238
266
|
|
239
267
|
|
268
|
+
/// @inheritdoc IPolicyService
|
240
269
|
function expire(
|
241
|
-
NftId policyNftId
|
270
|
+
NftId policyNftId,
|
271
|
+
Timestamp expireAt
|
242
272
|
)
|
243
273
|
external
|
244
|
-
|
245
|
-
|
274
|
+
virtual
|
275
|
+
nonReentrant()
|
276
|
+
returns (Timestamp expiredAt)
|
246
277
|
{
|
278
|
+
_checkNftType(policyNftId, POLICY());
|
279
|
+
|
280
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
247
281
|
|
282
|
+
// check policy matches with calling product
|
283
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
284
|
+
if(policyInfo.productNftId != productNftId) {
|
285
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
286
|
+
policyNftId,
|
287
|
+
policyInfo.productNftId,
|
288
|
+
productNftId);
|
289
|
+
}
|
290
|
+
|
291
|
+
return _expire(
|
292
|
+
instance,
|
293
|
+
policyNftId,
|
294
|
+
expireAt
|
295
|
+
);
|
248
296
|
}
|
249
297
|
|
250
|
-
|
251
|
-
|
298
|
+
/// @inheritdoc IPolicyService
|
299
|
+
function expirePolicy(
|
300
|
+
IInstance instance,
|
301
|
+
NftId policyNftId,
|
302
|
+
Timestamp expireAt
|
252
303
|
)
|
253
|
-
external
|
254
|
-
|
304
|
+
external
|
305
|
+
virtual
|
306
|
+
nonReentrant()
|
307
|
+
returns (Timestamp expiredAt)
|
308
|
+
{
|
309
|
+
_checkNftType(policyNftId, POLICY());
|
310
|
+
|
311
|
+
return _expire(
|
312
|
+
instance,
|
313
|
+
policyNftId,
|
314
|
+
expireAt
|
315
|
+
);
|
316
|
+
}
|
317
|
+
|
318
|
+
function _expire(
|
319
|
+
IInstance instance,
|
320
|
+
NftId policyNftId,
|
321
|
+
Timestamp expireAt
|
322
|
+
)
|
323
|
+
internal
|
324
|
+
returns (Timestamp expiredAt)
|
255
325
|
{
|
256
|
-
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
257
326
|
InstanceReader instanceReader = instance.getInstanceReader();
|
327
|
+
|
328
|
+
// check policy is active
|
329
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
330
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
331
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
332
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
333
|
+
}
|
258
334
|
|
259
|
-
|
335
|
+
// set return value to provided timestamp
|
336
|
+
expiredAt = expireAt;
|
260
337
|
|
261
|
-
if
|
262
|
-
|
338
|
+
// update expiredAt to current block timestamp if not set
|
339
|
+
if (expiredAt.eqz()) {
|
340
|
+
expiredAt = TimestampLib.blockTimestamp();
|
263
341
|
}
|
264
342
|
|
265
|
-
|
266
|
-
if (
|
267
|
-
revert
|
343
|
+
// check expiredAt represents a valid expiry time
|
344
|
+
if (expiredAt >= policyInfo.expiredAt) {
|
345
|
+
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
346
|
+
}
|
347
|
+
if (expiredAt < TimestampLib.blockTimestamp()) {
|
348
|
+
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
268
349
|
}
|
269
350
|
|
270
|
-
|
271
|
-
|
351
|
+
// update policyInfo with new expiredAt timestamp
|
352
|
+
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
353
|
+
policyInfo.expiredAt = expiredAt;
|
354
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
355
|
+
|
356
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
357
|
+
|
358
|
+
// callback to policy holder if applicable
|
359
|
+
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
360
|
+
}
|
361
|
+
|
362
|
+
|
363
|
+
function close(
|
364
|
+
NftId policyNftId
|
365
|
+
)
|
366
|
+
external
|
367
|
+
virtual
|
368
|
+
nonReentrant()
|
369
|
+
{
|
370
|
+
_checkNftType(policyNftId, POLICY());
|
371
|
+
|
372
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
373
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
374
|
+
|
375
|
+
// check that policy has been activated
|
376
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
377
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
378
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
379
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
272
380
|
}
|
273
381
|
|
274
|
-
//
|
275
|
-
if (
|
276
|
-
revert
|
382
|
+
// check that policy has not already been closed
|
383
|
+
if (policyInfo.closedAt.gtz()) {
|
384
|
+
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
277
385
|
}
|
278
386
|
|
387
|
+
// check that policy does not have any open claims
|
279
388
|
if (policyInfo.openClaimsCount > 0) {
|
280
|
-
revert
|
389
|
+
revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
281
390
|
}
|
282
391
|
|
283
|
-
|
392
|
+
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
393
|
+
// TODO consider to remove requirement for fully paid premiums altogether
|
394
|
+
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
395
|
+
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
396
|
+
}
|
284
397
|
|
398
|
+
// release (remaining) collateral that was blocked by policy
|
285
399
|
_poolService.releaseCollateral(
|
286
400
|
instance,
|
401
|
+
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
287
402
|
policyNftId,
|
288
403
|
policyInfo);
|
289
404
|
|
405
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
406
|
+
|
407
|
+
// update policy state to closed
|
408
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
290
409
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
410
|
+
|
411
|
+
emit LogPolicyServicePolicyClosed(policyNftId);
|
291
412
|
}
|
292
413
|
|
293
414
|
|
294
|
-
|
415
|
+
/// @dev calculates the premium and updates all counters in the other services
|
416
|
+
function _processPremium(
|
295
417
|
IInstance instance,
|
296
|
-
NftId
|
297
|
-
|
418
|
+
NftId applicationNftId,
|
419
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
420
|
+
IPolicy.PremiumInfo memory premium
|
298
421
|
)
|
299
422
|
internal
|
300
|
-
|
423
|
+
virtual
|
301
424
|
{
|
302
|
-
|
303
|
-
|
304
|
-
|
425
|
+
NftId productNftId = applicationInfo.productNftId;
|
426
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
427
|
+
|
428
|
+
// check if premium balance and allowance of policy holder is sufficient
|
429
|
+
{
|
430
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
431
|
+
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
432
|
+
|
433
|
+
_checkPremiumBalanceAndAllowance(
|
434
|
+
tokenHandler.getToken(),
|
435
|
+
address(tokenHandler),
|
436
|
+
policyHolder,
|
437
|
+
premium.premiumAmount);
|
305
438
|
}
|
306
439
|
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
440
|
+
// update the counters
|
441
|
+
_processSale(
|
442
|
+
instanceReader,
|
443
|
+
instance.getInstanceStore(),
|
444
|
+
productNftId,
|
445
|
+
applicationInfo.bundleNftId,
|
446
|
+
applicationInfo.referralId,
|
447
|
+
premium);
|
448
|
+
}
|
449
|
+
|
450
|
+
function _activate(
|
451
|
+
NftId policyNftId,
|
452
|
+
IPolicy.PolicyInfo memory policyInfo,
|
453
|
+
Timestamp activateAt
|
454
|
+
)
|
455
|
+
internal
|
456
|
+
virtual
|
457
|
+
view
|
458
|
+
returns (IPolicy.PolicyInfo memory)
|
459
|
+
{
|
460
|
+
// fail if policy has already been activated and activateAt is different
|
461
|
+
if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
|
462
|
+
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
324
463
|
}
|
325
464
|
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premium.premiumAmount) {
|
330
|
-
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premium.premiumAmount);
|
465
|
+
// ignore if policy has already been activated and activateAt is the same
|
466
|
+
if (policyInfo.activatedAt == activateAt) {
|
467
|
+
return policyInfo;
|
331
468
|
}
|
332
469
|
|
333
|
-
|
334
|
-
|
335
|
-
uint256 poolFeeAmountToTransfer = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
336
|
-
uint256 bundleFeeAmountToTransfer = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
337
|
-
Amount poolAmountToTransfer = AmountLib.toAmount(premium.netPremiumAmount + poolFeeAmountToTransfer + bundleFeeAmountToTransfer);
|
470
|
+
policyInfo.activatedAt = activateAt;
|
471
|
+
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
338
472
|
|
339
|
-
|
473
|
+
return policyInfo;
|
474
|
+
}
|
340
475
|
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
476
|
+
/// @dev update counters by calling the involved services
|
477
|
+
function _processSale(
|
478
|
+
InstanceReader instanceReader,
|
479
|
+
InstanceStore instanceStore,
|
480
|
+
NftId productNftId,
|
481
|
+
NftId bundleNftId,
|
482
|
+
ReferralId referralId,
|
483
|
+
IPolicy.PremiumInfo memory premium
|
484
|
+
)
|
485
|
+
internal
|
486
|
+
virtual
|
487
|
+
{
|
488
|
+
(NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
|
489
|
+
instanceReader,
|
490
|
+
productNftId);
|
491
|
+
|
492
|
+
// update product fees, distribution and pool fees
|
493
|
+
_componentService.increaseProductFees(
|
494
|
+
instanceStore,
|
495
|
+
productNftId,
|
496
|
+
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
497
|
+
|
498
|
+
// update distribution fees and distributor commission and pool fees
|
499
|
+
if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
500
|
+
_distributionService.processSale(
|
501
|
+
distributionNftId,
|
502
|
+
referralId,
|
503
|
+
premium);
|
345
504
|
}
|
346
505
|
|
347
|
-
//
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
506
|
+
// update pool and bundle fees
|
507
|
+
_poolService.processSale(
|
508
|
+
bundleNftId,
|
509
|
+
premium);
|
510
|
+
}
|
511
|
+
|
512
|
+
|
513
|
+
/// @dev transfer the premium to the wallets the premium is distributed to
|
514
|
+
function _transferFunds(
|
515
|
+
InstanceReader instanceReader,
|
516
|
+
NftId policyNftId,
|
517
|
+
NftId productNftId,
|
518
|
+
IPolicy.PremiumInfo memory premium
|
519
|
+
)
|
520
|
+
internal
|
521
|
+
virtual
|
522
|
+
{
|
523
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
524
|
+
address policyHolder = getRegistry().ownerOf(policyNftId);
|
525
|
+
|
526
|
+
(
|
527
|
+
,
|
528
|
+
address distributionWallet,
|
529
|
+
address poolWallet,
|
530
|
+
address productWallet
|
531
|
+
) = _getDistributionNftAndWallets(
|
532
|
+
instanceReader,
|
533
|
+
productNftId);
|
534
|
+
|
535
|
+
tokenHandler.collectTokensToThreeRecipients(
|
536
|
+
policyHolder,
|
537
|
+
productWallet,
|
538
|
+
premium.productFeeAmount,
|
539
|
+
distributionWallet,
|
540
|
+
premium.distributionFeeAndCommissionAmount,
|
541
|
+
poolWallet,
|
542
|
+
premium.poolPremiumAndFeeAmount);
|
543
|
+
}
|
544
|
+
|
545
|
+
|
546
|
+
/// @dev checks that policy has been collateralized and has been activated.
|
547
|
+
/// does not check if policy has been expired or closed.
|
548
|
+
function _policyHasBeenActivated(
|
549
|
+
StateId policyState,
|
550
|
+
IPolicy.PolicyInfo memory policyInfo
|
551
|
+
)
|
552
|
+
internal
|
553
|
+
view
|
554
|
+
returns (bool)
|
555
|
+
{
|
556
|
+
if (policyState != COLLATERALIZED()) { return false; }
|
557
|
+
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
558
|
+
return true;
|
559
|
+
}
|
560
|
+
|
561
|
+
|
562
|
+
/// @dev checks the balance and allowance of the policy holder
|
563
|
+
function _checkPremiumBalanceAndAllowance(
|
564
|
+
IERC20Metadata token,
|
565
|
+
address tokenHandlerAddress,
|
566
|
+
address policyHolder,
|
567
|
+
Amount premiumAmount
|
568
|
+
)
|
569
|
+
internal
|
570
|
+
virtual
|
571
|
+
view
|
572
|
+
{
|
573
|
+
uint256 premium = premiumAmount.toInt();
|
574
|
+
uint256 balance = token.balanceOf(policyHolder);
|
575
|
+
uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
|
576
|
+
|
577
|
+
if (balance < premium) {
|
578
|
+
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
353
579
|
}
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
address poolWallet = instance.getInstanceReader().getComponentInfo(productSetupInfo.poolNftId).wallet;
|
358
|
-
tokenHandler.transfer(policyOwner, poolWallet, poolAmountToTransfer);
|
359
|
-
_poolService.processSale(policyInfo.bundleNftId, premium, poolAmountToTransfer);
|
580
|
+
|
581
|
+
if (allowance < premium) {
|
582
|
+
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
|
360
583
|
}
|
584
|
+
}
|
361
585
|
|
362
|
-
// validate total amount transferred
|
363
|
-
{
|
364
|
-
Amount totalTransferred = distributionFeeAmountToTransfer + poolAmountToTransfer + productFeeAmountToTransfer;
|
365
586
|
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
587
|
+
function _policyHolderPolicyActivated(
|
588
|
+
NftId policyNftId,
|
589
|
+
Timestamp activateAt
|
590
|
+
)
|
591
|
+
internal
|
592
|
+
virtual
|
593
|
+
{
|
594
|
+
// immediately return if policy is not activated
|
595
|
+
if (activateAt.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.policyActivated(policyNftId, activateAt);
|
605
|
+
}
|
606
|
+
}
|
607
|
+
|
608
|
+
|
609
|
+
function _policyHolderPolicyExpired(
|
610
|
+
NftId policyNftId,
|
611
|
+
Timestamp expiredAt
|
612
|
+
)
|
613
|
+
internal
|
614
|
+
virtual
|
615
|
+
{
|
616
|
+
// immediately return if policy is not activated
|
617
|
+
if (expiredAt.eqz()) {
|
618
|
+
return;
|
372
619
|
}
|
373
620
|
|
374
|
-
//
|
621
|
+
// get policy holder address
|
622
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
623
|
+
|
624
|
+
// execute callback if policy holder implements IPolicyHolder
|
625
|
+
if (address(policyHolder) != address(0)) {
|
626
|
+
policyHolder.policyExpired(policyNftId, expiredAt);
|
627
|
+
}
|
628
|
+
}
|
629
|
+
|
630
|
+
|
631
|
+
function _getPolicyHolder(NftId policyNftId)
|
632
|
+
internal
|
633
|
+
view
|
634
|
+
returns (IPolicyHolder policyHolder)
|
635
|
+
{
|
636
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
637
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
638
|
+
|
639
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
640
|
+
policyHolder = IPolicyHolder(address(0));
|
641
|
+
}
|
642
|
+
}
|
643
|
+
|
644
|
+
|
645
|
+
function _getTokenHandler(
|
646
|
+
InstanceReader instanceReader,
|
647
|
+
NftId productNftId
|
648
|
+
)
|
649
|
+
internal
|
650
|
+
virtual
|
651
|
+
view
|
652
|
+
returns (
|
653
|
+
TokenHandler tokenHandler
|
654
|
+
)
|
655
|
+
{
|
656
|
+
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
657
|
+
}
|
658
|
+
|
659
|
+
|
660
|
+
function _getDistributionNftAndWallets(
|
661
|
+
InstanceReader instanceReader,
|
662
|
+
NftId productNftId
|
663
|
+
)
|
664
|
+
internal
|
665
|
+
virtual
|
666
|
+
view returns (
|
667
|
+
NftId distributionNftId,
|
668
|
+
address distributionWallet,
|
669
|
+
address poolWallet,
|
670
|
+
address productWallet
|
671
|
+
)
|
672
|
+
{
|
673
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
674
|
+
distributionNftId = productInfo.distributionNftId;
|
675
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
|
676
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
|
677
|
+
productWallet = instanceReader.getComponentInfo(productNftId).wallet;
|
678
|
+
}
|
679
|
+
|
680
|
+
|
681
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
682
|
+
IRegistry.ObjectInfo memory productInfo;
|
683
|
+
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
684
|
+
product = Product(productInfo.objectAddress);
|
685
|
+
}
|
686
|
+
|
687
|
+
|
688
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
689
|
+
return POLICY();
|
375
690
|
}
|
376
691
|
}
|