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