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