@etherisc/gif-next 0.0.2-b2910e7-757 → 0.0.2-b312c9a-831
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/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1000 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +767 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +24 -42
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -18
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +58 -58
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +30 -30
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -18
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +40 -14
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +24 -24
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +86 -60
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +39 -26
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +16 -34
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +33 -20
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +50 -24
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +46 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +22 -2
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +64 -13
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +83 -70
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +298 -65
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +44 -24
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +12 -12
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- 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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +14 -32
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -18
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -18
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +70 -62
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +36 -16
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +0 -18
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +68 -177
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +35 -63
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +0 -42
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +0 -18
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +0 -18
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +62 -78
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +32 -24
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +44 -25
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +6 -10
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -18
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +31 -18
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -18
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +119 -122
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +45 -37
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +2 -2
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +0 -18
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +20 -20
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +11 -11
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +58 -58
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -18
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +70 -428
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +36 -64
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +383 -6
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -18
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +0 -270
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -18
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -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/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -18
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -18
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +26 -26
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +14 -14
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +264 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +21 -1
- package/contracts/distribution/BasicDistribution.sol +4 -4
- package/contracts/distribution/Distribution.sol +27 -24
- package/contracts/distribution/DistributionService.sol +10 -7
- package/contracts/examples/fire/FirePool.sol +6 -2
- package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
- package/contracts/examples/fire/FireProduct.sol +5 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +7 -8
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +7 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +6 -0
- package/contracts/instance/IInstanceService.sol +5 -1
- package/contracts/instance/Instance.sol +14 -5
- package/contracts/instance/InstanceAdmin.sol +3 -1
- package/contracts/instance/InstanceAuthorizationV3.sol +42 -14
- package/contracts/instance/InstanceReader.sol +85 -1
- package/contracts/instance/InstanceService.sol +18 -7
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/oracle/OracleService.sol +87 -70
- package/contracts/pool/BundleService.sol +9 -69
- package/contracts/pool/IBundleService.sol +0 -19
- package/contracts/pool/IPoolService.sol +0 -19
- package/contracts/pool/PoolService.sol +49 -54
- package/contracts/product/ApplicationService.sol +12 -12
- package/contracts/product/BasicProductAuthorization.sol +1 -2
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IPolicyService.sol +14 -6
- package/contracts/product/PolicyService.sol +233 -192
- package/contracts/product/Product.sol +2 -7
- package/contracts/product/RiskService.sol +14 -3
- package/contracts/registry/RegistryAdmin.sol +7 -12
- package/contracts/registry/ServiceAuthorizationV3.sol +43 -39
- package/contracts/shared/Component.sol +5 -20
- package/contracts/shared/ComponentService.sol +79 -205
- package/contracts/shared/ContractLib.sol +181 -11
- package/contracts/shared/IComponent.sol +0 -5
- package/contracts/shared/IComponentService.sol +1 -19
- package/contracts/shared/InstanceLinkedComponent.sol +1 -1
- package/contracts/shared/TokenHandler.sol +1 -9
- package/contracts/staking/Staking.sol +10 -0
- package/contracts/staking/StakingService.sol +0 -13
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +10 -0
- package/contracts/type/RiskId.sol +18 -6
- package/package.json +1 -1
@@ -3,41 +3,39 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {
|
7
|
-
import {
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
8
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
9
|
+
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
10
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
11
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
9
12
|
import {IInstance} from "../instance/IInstance.sol";
|
10
13
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
14
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
15
|
+
import {IPolicyService} from "./IPolicyService.sol";
|
16
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
17
|
+
import {IPricingService} from "./IPricingService.sol";
|
18
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
11
19
|
|
12
|
-
import {
|
13
|
-
|
14
|
-
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
|
-
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
16
|
-
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
20
|
+
import {Amount} from "../type/Amount.sol";
|
17
21
|
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
22
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
18
23
|
import {NftId} from "../type/NftId.sol";
|
24
|
+
import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, PRICE} from "../type/ObjectType.sol";
|
19
25
|
import {ReferralId} from "../type/Referral.sol";
|
26
|
+
import {RiskId} from "../type/RiskId.sol";
|
27
|
+
import {Service} from "../shared/Service.sol";
|
20
28
|
import {StateId} from "../type/StateId.sol";
|
29
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
30
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
21
31
|
import {VersionPart} from "../type/Version.sol";
|
22
32
|
|
23
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
24
|
-
import {ContractLib} from "../shared/ContractLib.sol";
|
25
|
-
import {IApplicationService} from "./IApplicationService.sol";
|
26
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
27
|
-
import {IClaimService} from "./IClaimService.sol";
|
28
|
-
import {IComponentService} from "../shared/IComponentService.sol";
|
29
|
-
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
30
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
31
|
-
import {InstanceStore} from "../instance/InstanceStore.sol";
|
32
|
-
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
33
|
-
import {IPolicyService} from "./IPolicyService.sol";
|
34
|
-
import {IPoolService} from "../pool/IPoolService.sol";
|
35
|
-
import {IPricingService} from "./IPricingService.sol";
|
36
33
|
|
37
34
|
contract PolicyService is
|
38
|
-
|
35
|
+
Service,
|
39
36
|
IPolicyService
|
40
37
|
{
|
38
|
+
IAccountingService private _accountingService;
|
41
39
|
IComponentService internal _componentService;
|
42
40
|
IDistributionService internal _distributionService;
|
43
41
|
IPoolService internal _poolService;
|
@@ -59,6 +57,7 @@ contract PolicyService is
|
|
59
57
|
_initializeService(registryAddress, authority, owner);
|
60
58
|
|
61
59
|
VersionPart majorVersion = getVersion().toMajorPart();
|
60
|
+
_accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
|
62
61
|
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
63
62
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
64
63
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
@@ -75,26 +74,15 @@ contract PolicyService is
|
|
75
74
|
virtual
|
76
75
|
nonReentrant()
|
77
76
|
{
|
78
|
-
|
79
|
-
|
80
|
-
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
81
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
77
|
+
// checks
|
78
|
+
(IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
|
82
79
|
|
83
80
|
// check policy is in state applied
|
84
|
-
if (
|
81
|
+
if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
|
85
82
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
86
83
|
}
|
87
84
|
|
88
|
-
//
|
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
|
-
|
85
|
+
// effects
|
98
86
|
// store updated policy info
|
99
87
|
instance.getInstanceStore().updatePolicyState(
|
100
88
|
applicationNftId,
|
@@ -114,26 +102,20 @@ contract PolicyService is
|
|
114
102
|
nonReentrant()
|
115
103
|
returns (Amount premiumAmount)
|
116
104
|
{
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
105
|
+
// checks
|
106
|
+
(
|
107
|
+
IInstance instance,
|
108
|
+
NftId productNftId,
|
109
|
+
IPolicy.PolicyInfo memory applicationInfo
|
110
|
+
) = _getAndVerifyCallerForPolicy(applicationNftId);
|
122
111
|
|
123
112
|
// check policy is in state applied
|
113
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
124
114
|
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
125
115
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
126
116
|
}
|
127
117
|
|
128
|
-
//
|
129
|
-
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
130
|
-
if(applicationInfo.productNftId != productNftId) {
|
131
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
132
|
-
applicationNftId,
|
133
|
-
applicationInfo.productNftId,
|
134
|
-
productNftId);
|
135
|
-
}
|
136
|
-
|
118
|
+
// effects
|
137
119
|
// actual collateralizaion
|
138
120
|
_poolService.lockCollateral(
|
139
121
|
instance,
|
@@ -144,11 +126,8 @@ contract PolicyService is
|
|
144
126
|
applicationInfo.sumInsuredAmount);
|
145
127
|
|
146
128
|
// optional activation of policy
|
147
|
-
if(activateAt >
|
148
|
-
applicationInfo = _activate(
|
149
|
-
applicationNftId,
|
150
|
-
applicationInfo,
|
151
|
-
activateAt);
|
129
|
+
if(activateAt > TimestampLib.zero()) {
|
130
|
+
applicationInfo = _activate(applicationNftId, applicationInfo, activateAt);
|
152
131
|
}
|
153
132
|
|
154
133
|
// update policy and set state to collateralized
|
@@ -158,35 +137,42 @@ contract PolicyService is
|
|
158
137
|
COLLATERALIZED());
|
159
138
|
|
160
139
|
// calculate and store premium
|
140
|
+
RiskId riskId = applicationInfo.riskId;
|
141
|
+
NftId bundleNftId = applicationInfo.bundleNftId;
|
142
|
+
|
161
143
|
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
162
144
|
productNftId,
|
163
|
-
|
145
|
+
riskId,
|
164
146
|
applicationInfo.sumInsuredAmount,
|
165
147
|
applicationInfo.lifetime,
|
166
148
|
applicationInfo.applicationData,
|
167
|
-
|
149
|
+
bundleNftId,
|
168
150
|
applicationInfo.referralId);
|
169
151
|
|
152
|
+
premiumAmount = premium.fullPremiumAmount;
|
170
153
|
instance.getInstanceStore().createPremium(
|
171
154
|
applicationNftId,
|
172
155
|
premium);
|
173
156
|
|
174
|
-
|
175
|
-
|
176
|
-
// update referral counter
|
157
|
+
// update referral counter if product has linked distributino component
|
177
158
|
{
|
178
159
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
179
|
-
|
180
|
-
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
160
|
+
if (productInfo.hasDistribution) {
|
181
161
|
_distributionService.processReferral(
|
182
162
|
productInfo.distributionNftId,
|
183
163
|
applicationInfo.referralId);
|
184
164
|
}
|
185
165
|
}
|
186
166
|
|
167
|
+
// link policy to risk and bundle
|
168
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
169
|
+
instance.getRiskSet().linkPolicy(productNftId, riskId, applicationNftId);
|
170
|
+
instance.getBundleSet().linkPolicy(poolNftId, bundleNftId, applicationNftId);
|
171
|
+
|
187
172
|
// log policy creation before interactions with token and policy holder
|
188
173
|
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
189
174
|
|
175
|
+
// interactions
|
190
176
|
// callback to policy holder if applicable
|
191
177
|
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
192
178
|
}
|
@@ -201,30 +187,40 @@ contract PolicyService is
|
|
201
187
|
virtual
|
202
188
|
nonReentrant()
|
203
189
|
{
|
204
|
-
|
190
|
+
// checks
|
191
|
+
(
|
192
|
+
IInstance instance,
|
193
|
+
NftId productNftId,
|
194
|
+
IPolicy.PolicyInfo memory policyInfo
|
195
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
205
196
|
|
206
|
-
// check
|
207
|
-
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
197
|
+
// check policy is in state collateralized
|
208
198
|
InstanceReader instanceReader = instance.getInstanceReader();
|
209
|
-
|
210
|
-
|
211
|
-
// check policy is in state collateralized or active
|
212
|
-
if (!(stateId == COLLATERALIZED())) {
|
199
|
+
if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
|
213
200
|
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
214
201
|
}
|
215
202
|
|
216
|
-
// check if premium
|
203
|
+
// check if premium has already been collected
|
217
204
|
if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
|
218
205
|
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
219
206
|
}
|
220
207
|
|
221
|
-
|
222
|
-
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
208
|
+
// check funds and allowance of policy holder
|
209
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
210
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, policyInfo.productNftId);
|
211
|
+
_checkPremiumBalanceAndAllowance(
|
212
|
+
tokenHandler.TOKEN(),
|
213
|
+
address(tokenHandler),
|
214
|
+
getRegistry().ownerOf(policyNftId),
|
215
|
+
premium.premiumAmount);
|
216
|
+
|
217
|
+
// effects
|
218
|
+
_processSale(
|
219
|
+
instanceReader,
|
220
|
+
instance.getInstanceStore(),
|
221
|
+
productNftId,
|
222
|
+
policyInfo.bundleNftId,
|
223
|
+
policyInfo.referralId,
|
228
224
|
premium);
|
229
225
|
|
230
226
|
// optionally activate policy
|
@@ -238,29 +234,31 @@ contract PolicyService is
|
|
238
234
|
// log premium collection before interactions with token
|
239
235
|
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
240
236
|
|
237
|
+
// interactions
|
241
238
|
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
242
239
|
}
|
243
240
|
|
241
|
+
|
244
242
|
/// @inheritdoc IPolicyService
|
245
243
|
function activate(NftId policyNftId, Timestamp activateAt)
|
246
244
|
external
|
247
245
|
virtual
|
248
246
|
nonReentrant()
|
249
247
|
{
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
248
|
+
// checks
|
249
|
+
(
|
250
|
+
IInstance instance,,
|
251
|
+
IPolicy.PolicyInfo memory policyInfo
|
252
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
255
253
|
|
256
|
-
|
254
|
+
// effects
|
257
255
|
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
258
|
-
|
259
256
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
260
257
|
|
261
258
|
// log policy activation before interactions with policy holder
|
262
259
|
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
263
260
|
|
261
|
+
// interactions
|
264
262
|
// callback to policy holder if applicable
|
265
263
|
_policyHolderPolicyActivated(policyNftId, activateAt);
|
266
264
|
}
|
@@ -276,26 +274,22 @@ contract PolicyService is
|
|
276
274
|
nonReentrant()
|
277
275
|
returns (Timestamp expiredAt)
|
278
276
|
{
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
285
|
-
if(policyInfo.productNftId != productNftId) {
|
286
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
287
|
-
policyNftId,
|
288
|
-
policyInfo.productNftId,
|
289
|
-
productNftId);
|
290
|
-
}
|
277
|
+
// checks
|
278
|
+
(
|
279
|
+
IInstance instance,,
|
280
|
+
IPolicy.PolicyInfo memory policyInfo
|
281
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
291
282
|
|
283
|
+
// more checks, effects + interactions
|
292
284
|
return _expire(
|
293
285
|
instance,
|
294
286
|
policyNftId,
|
287
|
+
policyInfo,
|
295
288
|
expireAt
|
296
289
|
);
|
297
290
|
}
|
298
291
|
|
292
|
+
|
299
293
|
/// @inheritdoc IPolicyService
|
300
294
|
function expirePolicy(
|
301
295
|
IInstance instance,
|
@@ -307,28 +301,112 @@ contract PolicyService is
|
|
307
301
|
nonReentrant()
|
308
302
|
returns (Timestamp expiredAt)
|
309
303
|
{
|
304
|
+
// checks
|
310
305
|
_checkNftType(policyNftId, POLICY());
|
306
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
|
307
|
+
policyNftId);
|
311
308
|
|
309
|
+
// more checks, effects + interactions
|
312
310
|
return _expire(
|
313
311
|
instance,
|
314
312
|
policyNftId,
|
313
|
+
policyInfo,
|
315
314
|
expireAt
|
316
315
|
);
|
317
316
|
}
|
318
317
|
|
318
|
+
|
319
|
+
/// @inheritdoc IPolicyService
|
320
|
+
function close(
|
321
|
+
NftId policyNftId
|
322
|
+
)
|
323
|
+
external
|
324
|
+
virtual
|
325
|
+
nonReentrant()
|
326
|
+
{
|
327
|
+
// checks
|
328
|
+
(
|
329
|
+
IInstance instance,
|
330
|
+
NftId productNftId,
|
331
|
+
IPolicy.PolicyInfo memory policyInfo
|
332
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
333
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
334
|
+
|
335
|
+
// check policy is in a closeable state
|
336
|
+
if (!policyIsCloseable(instanceReader, policyNftId)) {
|
337
|
+
revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
|
338
|
+
}
|
339
|
+
|
340
|
+
// check that policy has been activated
|
341
|
+
RiskId riskId = policyInfo.riskId;
|
342
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
343
|
+
|
344
|
+
if (instanceReader.getPremiumInfoState(policyNftId) != PAID()) {
|
345
|
+
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
346
|
+
}
|
347
|
+
|
348
|
+
// effects
|
349
|
+
// release (remaining) collateral that was blocked by policy
|
350
|
+
_poolService.releaseCollateral(
|
351
|
+
instance,
|
352
|
+
address(instanceReader.getComponentInfo(productNftId).token),
|
353
|
+
policyNftId,
|
354
|
+
policyInfo);
|
355
|
+
|
356
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
357
|
+
|
358
|
+
// update policy state to closed
|
359
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
360
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
361
|
+
|
362
|
+
// unlink policy from risk and bundle
|
363
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
364
|
+
instance.getRiskSet().unlinkPolicy(productNftId, riskId, policyNftId);
|
365
|
+
instance.getBundleSet().unlinkPolicy(poolNftId, bundleNftId, policyNftId);
|
366
|
+
|
367
|
+
emit LogPolicyServicePolicyClosed(policyNftId);
|
368
|
+
}
|
369
|
+
|
370
|
+
|
371
|
+
function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
|
372
|
+
public
|
373
|
+
view
|
374
|
+
returns (bool isCloseable)
|
375
|
+
{
|
376
|
+
// policy already closed
|
377
|
+
if (instanceReader.getPolicyState(policyNftId) == CLOSED()) {
|
378
|
+
return false;
|
379
|
+
}
|
380
|
+
|
381
|
+
IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
|
382
|
+
|
383
|
+
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
384
|
+
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
385
|
+
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
386
|
+
|
387
|
+
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
388
|
+
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
389
|
+
|
390
|
+
// not closeable: not yet expired
|
391
|
+
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
392
|
+
|
393
|
+
// all conditions to close the policy are met
|
394
|
+
return true;
|
395
|
+
}
|
396
|
+
|
397
|
+
/// @dev shared functionality for expire() and policyExpire().
|
319
398
|
function _expire(
|
320
399
|
IInstance instance,
|
321
400
|
NftId policyNftId,
|
401
|
+
IPolicy.PolicyInfo memory policyInfo,
|
322
402
|
Timestamp expireAt
|
323
403
|
)
|
324
404
|
internal
|
325
405
|
returns (Timestamp expiredAt)
|
326
406
|
{
|
327
|
-
|
328
|
-
|
407
|
+
// checks
|
329
408
|
// check policy is active
|
330
|
-
StateId policyState =
|
331
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
409
|
+
StateId policyState = instance.getInstanceReader().getPolicyState(policyNftId);
|
332
410
|
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
333
411
|
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
334
412
|
}
|
@@ -345,10 +423,12 @@ contract PolicyService is
|
|
345
423
|
if (expiredAt >= policyInfo.expiredAt) {
|
346
424
|
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
347
425
|
}
|
426
|
+
|
348
427
|
if (expiredAt < TimestampLib.blockTimestamp()) {
|
349
428
|
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
350
429
|
}
|
351
430
|
|
431
|
+
// effects
|
352
432
|
// update policyInfo with new expiredAt timestamp
|
353
433
|
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
354
434
|
policyInfo.expiredAt = expiredAt;
|
@@ -356,97 +436,33 @@ contract PolicyService is
|
|
356
436
|
|
357
437
|
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
358
438
|
|
439
|
+
// interactions
|
359
440
|
// callback to policy holder if applicable
|
360
441
|
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
361
442
|
}
|
362
443
|
|
444
|
+
// TODO cleanup
|
445
|
+
// /// @dev Calculates the premium and updates all counters in the other services.
|
446
|
+
// /// Only book keeping, no token transfers.
|
447
|
+
// function _processPremium(
|
448
|
+
// IInstance instance,
|
449
|
+
// NftId applicationNftId,
|
450
|
+
// IPolicy.PolicyInfo memory applicationInfo,
|
451
|
+
// IPolicy.PremiumInfo memory premium
|
452
|
+
// )
|
453
|
+
// internal
|
454
|
+
// virtual
|
455
|
+
// {
|
456
|
+
// // update the counters
|
457
|
+
// _processSale(
|
458
|
+
// instanceReader,
|
459
|
+
// instance.getInstanceStore(),
|
460
|
+
// productNftId,
|
461
|
+
// applicationInfo.bundleNftId,
|
462
|
+
// applicationInfo.referralId,
|
463
|
+
// premium);
|
464
|
+
// }
|
363
465
|
|
364
|
-
function close(
|
365
|
-
NftId policyNftId
|
366
|
-
)
|
367
|
-
external
|
368
|
-
virtual
|
369
|
-
nonReentrant()
|
370
|
-
{
|
371
|
-
_checkNftType(policyNftId, POLICY());
|
372
|
-
|
373
|
-
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
374
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
375
|
-
|
376
|
-
// check that policy has been activated
|
377
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
378
|
-
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
379
|
-
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
380
|
-
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
381
|
-
}
|
382
|
-
|
383
|
-
// check that policy has not already been closed
|
384
|
-
if (policyInfo.closedAt.gtz()) {
|
385
|
-
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
386
|
-
}
|
387
|
-
|
388
|
-
// check that policy does not have any open claims
|
389
|
-
if (policyInfo.openClaimsCount > 0) {
|
390
|
-
revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
391
|
-
}
|
392
|
-
|
393
|
-
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
394
|
-
// TODO consider to remove requirement for fully paid premiums altogether
|
395
|
-
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
396
|
-
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
397
|
-
}
|
398
|
-
|
399
|
-
// release (remaining) collateral that was blocked by policy
|
400
|
-
_poolService.releaseCollateral(
|
401
|
-
instance,
|
402
|
-
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
403
|
-
policyNftId,
|
404
|
-
policyInfo);
|
405
|
-
|
406
|
-
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
407
|
-
|
408
|
-
// update policy state to closed
|
409
|
-
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
410
|
-
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
411
|
-
|
412
|
-
emit LogPolicyServicePolicyClosed(policyNftId);
|
413
|
-
}
|
414
|
-
|
415
|
-
|
416
|
-
/// @dev calculates the premium and updates all counters in the other services
|
417
|
-
function _processPremium(
|
418
|
-
IInstance instance,
|
419
|
-
NftId applicationNftId,
|
420
|
-
IPolicy.PolicyInfo memory applicationInfo,
|
421
|
-
IPolicy.PremiumInfo memory premium
|
422
|
-
)
|
423
|
-
internal
|
424
|
-
virtual
|
425
|
-
{
|
426
|
-
NftId productNftId = applicationInfo.productNftId;
|
427
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
428
|
-
|
429
|
-
// check if premium balance and allowance of policy holder is sufficient
|
430
|
-
{
|
431
|
-
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
432
|
-
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
433
|
-
|
434
|
-
_checkPremiumBalanceAndAllowance(
|
435
|
-
tokenHandler.TOKEN(),
|
436
|
-
address(tokenHandler),
|
437
|
-
policyHolder,
|
438
|
-
premium.premiumAmount);
|
439
|
-
}
|
440
|
-
|
441
|
-
// update the counters
|
442
|
-
_processSale(
|
443
|
-
instanceReader,
|
444
|
-
instance.getInstanceStore(),
|
445
|
-
productNftId,
|
446
|
-
applicationInfo.bundleNftId,
|
447
|
-
applicationInfo.referralId,
|
448
|
-
premium);
|
449
|
-
}
|
450
466
|
|
451
467
|
function _activate(
|
452
468
|
NftId policyNftId,
|
@@ -486,12 +502,12 @@ contract PolicyService is
|
|
486
502
|
internal
|
487
503
|
virtual
|
488
504
|
{
|
489
|
-
(NftId distributionNftId
|
505
|
+
(NftId distributionNftId,,,) = _getDistributionNftAndWallets(
|
490
506
|
instanceReader,
|
491
507
|
productNftId);
|
492
508
|
|
493
509
|
// update product fees, distribution and pool fees
|
494
|
-
|
510
|
+
_accountingService.increaseProductFees(
|
495
511
|
instanceStore,
|
496
512
|
productNftId,
|
497
513
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
@@ -682,10 +698,35 @@ contract PolicyService is
|
|
682
698
|
}
|
683
699
|
|
684
700
|
|
685
|
-
function
|
686
|
-
|
687
|
-
|
688
|
-
|
701
|
+
function _getAndVerifyCallerForPolicy(NftId policyNftId)
|
702
|
+
internal
|
703
|
+
virtual
|
704
|
+
view
|
705
|
+
returns (
|
706
|
+
IInstance instance,
|
707
|
+
NftId productNftId,
|
708
|
+
IPolicy.PolicyInfo memory policyInfo
|
709
|
+
)
|
710
|
+
{
|
711
|
+
(
|
712
|
+
IRegistry.ObjectInfo memory productInfo,
|
713
|
+
address instanceAddress
|
714
|
+
) = ContractLib.getAndVerifyComponent(
|
715
|
+
getRegistry(),
|
716
|
+
msg.sender, // caller contract
|
717
|
+
PRODUCT(), // caller must be product
|
718
|
+
true); // only active caller
|
719
|
+
|
720
|
+
productNftId = productInfo.nftId;
|
721
|
+
instance = IInstance(instanceAddress);
|
722
|
+
policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
723
|
+
|
724
|
+
if (policyInfo.productNftId != productNftId) {
|
725
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
726
|
+
policyNftId,
|
727
|
+
productNftId,
|
728
|
+
policyInfo.productNftId);
|
729
|
+
}
|
689
730
|
}
|
690
731
|
|
691
732
|
|
@@ -19,7 +19,7 @@ import {IProductComponent} from "./IProductComponent.sol";
|
|
19
19
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
20
20
|
import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
|
21
21
|
import {PayoutId} from "../type/PayoutId.sol";
|
22
|
-
import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
|
22
|
+
import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE, RISK } from "../type/ObjectType.sol";
|
23
23
|
import {ReferralId} from "../type/Referral.sol";
|
24
24
|
import {RiskId, RiskIdLib} from "../type/RiskId.sol";
|
25
25
|
import {Seconds} from "../type/Seconds.sol";
|
@@ -154,7 +154,7 @@ abstract contract Product is
|
|
154
154
|
|
155
155
|
ProductStorage storage $ = _getProductStorage();
|
156
156
|
$._productInfo = productInfo;
|
157
|
-
$._riskService = IRiskService(_getServiceAddress(
|
157
|
+
$._riskService = IRiskService(_getServiceAddress(RISK()));
|
158
158
|
$._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
|
159
159
|
$._policyService = IPolicyService(_getServiceAddress(POLICY()));
|
160
160
|
$._claimService = IClaimService(_getServiceAddress(CLAIM()));
|
@@ -216,11 +216,6 @@ abstract contract Product is
|
|
216
216
|
}
|
217
217
|
|
218
218
|
|
219
|
-
function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
|
220
|
-
return getInstance().getInstanceReader().getRiskInfo(id);
|
221
|
-
}
|
222
|
-
|
223
|
-
|
224
219
|
function _createApplication(
|
225
220
|
address applicationOwner,
|
226
221
|
RiskId riskId,
|