@etherisc/gif-next 0.0.2-b8e869c-076 → 0.0.2-b95860d-028
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 +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- 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 -32
- 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 +148 -222
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +88 -186
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +174 -237
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -111
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +75 -57
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -31
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1551 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2090 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1484 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1244 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2108 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +48 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -105
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +446 -81
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
- 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 +130 -204
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- 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 +71 -53
- 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 +84 -182
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -190
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +184 -185
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +120 -104
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +96 -50
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -135
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -177
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +296 -296
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +102 -94
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +143 -200
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +288 -188
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -16
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +129 -70
- 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 +257 -218
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +110 -110
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +143 -200
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +65 -138
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +69 -77
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -34
- 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 +0 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- 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 +129 -221
- 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 +63 -157
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +351 -263
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +50 -28
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +71 -53
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +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/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +84 -182
- 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 +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
- 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/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 +77 -29
- 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 +83 -30
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +166 -206
- 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 +102 -87
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
- 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 +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- 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/Seconds.sol/SecondsLib.json +26 -2
- 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/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- 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 +55 -70
- 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 +64 -59
- package/contracts/authorization/Authorization.sol +111 -39
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- 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 +2 -1
- package/contracts/distribution/Distribution.sol +5 -15
- package/contracts/distribution/DistributionService.sol +79 -47
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionService.sol +8 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +412 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +21 -12
- package/contracts/instance/InstanceAdmin.sol +22 -30
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +106 -19
- package/contracts/instance/InstanceService.sol +24 -81
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +7 -1
- package/contracts/instance/module/IComponents.sol +10 -5
- package/contracts/instance/module/IPolicy.sol +23 -23
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +14 -26
- package/contracts/pool/BasicPoolAuthorization.sol +0 -1
- package/contracts/pool/BundleService.sol +40 -15
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +9 -0
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +24 -20
- package/contracts/pool/Pool.sol +53 -46
- package/contracts/pool/PoolService.sol +106 -122
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +13 -12
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +7 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +268 -93
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +30 -7
- package/contracts/product/IPolicyService.sol +16 -20
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/PolicyService.sol +197 -98
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +45 -52
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -61
- package/contracts/product/RiskService.sol +4 -5
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +65 -36
- package/contracts/registry/IRegistry.sol +55 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +0 -1
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +124 -50
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -188
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/shared/Component.sol +27 -19
- package/contracts/shared/ComponentService.sol +231 -137
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +6 -2
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +72 -31
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +23 -7
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +20 -18
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -0
- package/contracts/staking/Staking.sol +8 -8
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +3 -17
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -14,13 +14,14 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
14
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
15
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
16
16
|
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
17
|
-
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
|
17
|
+
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
18
18
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
19
19
|
import {ReferralId} from "../type/Referral.sol";
|
20
20
|
import {StateId} from "../type/StateId.sol";
|
21
21
|
import {VersionPart} from "../type/Version.sol";
|
22
22
|
|
23
23
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
24
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
24
25
|
import {IApplicationService} from "./IApplicationService.sol";
|
25
26
|
import {IBundleService} from "../pool/IBundleService.sol";
|
26
27
|
import {IClaimService} from "./IClaimService.sol";
|
@@ -28,6 +29,7 @@ import {IComponentService} from "../shared/IComponentService.sol";
|
|
28
29
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
29
30
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
30
31
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
32
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
31
33
|
import {IPolicyService} from "./IPolicyService.sol";
|
32
34
|
import {IPoolService} from "../pool/IPoolService.sol";
|
33
35
|
import {IPricingService} from "./IPricingService.sol";
|
@@ -36,9 +38,6 @@ contract PolicyService is
|
|
36
38
|
ComponentVerifyingService,
|
37
39
|
IPolicyService
|
38
40
|
{
|
39
|
-
using NftIdLib for NftId;
|
40
|
-
using TimestampLib for Timestamp;
|
41
|
-
|
42
41
|
IApplicationService internal _applicationService;
|
43
42
|
IComponentService internal _componentService;
|
44
43
|
IBundleService internal _bundleService;
|
@@ -56,12 +55,11 @@ contract PolicyService is
|
|
56
55
|
initializer
|
57
56
|
{
|
58
57
|
(
|
59
|
-
address registryAddress
|
60
|
-
//address managerAddress
|
58
|
+
address registryAddress,
|
61
59
|
address authority
|
62
|
-
) = abi.decode(data, (address, address
|
60
|
+
) = abi.decode(data, (address, address));
|
63
61
|
|
64
|
-
|
62
|
+
_initializeService(registryAddress, authority, owner);
|
65
63
|
|
66
64
|
VersionPart majorVersion = getVersion().toMajorPart();
|
67
65
|
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
@@ -72,7 +70,7 @@ contract PolicyService is
|
|
72
70
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
73
71
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
74
72
|
|
75
|
-
|
73
|
+
_registerInterface(type(IPolicyService).interfaceId);
|
76
74
|
}
|
77
75
|
|
78
76
|
|
@@ -80,7 +78,8 @@ contract PolicyService is
|
|
80
78
|
NftId applicationNftId // = policyNftId
|
81
79
|
)
|
82
80
|
external
|
83
|
-
virtual
|
81
|
+
virtual
|
82
|
+
nonReentrant()
|
84
83
|
{
|
85
84
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
86
85
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -112,11 +111,11 @@ contract PolicyService is
|
|
112
111
|
/// @inheritdoc IPolicyService
|
113
112
|
function createPolicy(
|
114
113
|
NftId applicationNftId, // = policyNftId
|
115
|
-
bool requirePremiumPayment,
|
116
114
|
Timestamp activateAt
|
117
115
|
)
|
118
116
|
external
|
119
|
-
virtual
|
117
|
+
virtual
|
118
|
+
nonReentrant()
|
120
119
|
{
|
121
120
|
// check caller is registered product
|
122
121
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
@@ -136,13 +135,8 @@ contract PolicyService is
|
|
136
135
|
productNftId);
|
137
136
|
}
|
138
137
|
|
139
|
-
StateId newPolicyState = COLLATERALIZED();
|
140
|
-
|
141
138
|
// actual collateralizaion
|
142
|
-
(
|
143
|
-
Amount localCollateralAmount,
|
144
|
-
Amount totalCollateralAmount
|
145
|
-
) = _poolService.lockCollateral(
|
139
|
+
_poolService.lockCollateral(
|
146
140
|
instance,
|
147
141
|
address(instanceReader.getComponentInfo(productNftId).token),
|
148
142
|
productNftId,
|
@@ -152,38 +146,50 @@ contract PolicyService is
|
|
152
146
|
|
153
147
|
// optional activation of policy
|
154
148
|
if(activateAt > zeroTimestamp()) {
|
155
|
-
applicationInfo
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
IPolicy.Premium memory premium;
|
160
|
-
|
161
|
-
// optional: calculate the premium and update counters for collection at the end of this function
|
162
|
-
if(requirePremiumPayment) {
|
163
|
-
premium = _calculateAndProcessPremium(
|
164
|
-
instance,
|
165
|
-
applicationNftId,
|
166
|
-
applicationInfo);
|
167
|
-
|
168
|
-
applicationInfo.premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
|
149
|
+
applicationInfo = _activate(
|
150
|
+
applicationNftId,
|
151
|
+
applicationInfo,
|
152
|
+
activateAt);
|
169
153
|
}
|
170
154
|
|
171
|
-
//
|
155
|
+
// update policy and set state to collateralized
|
172
156
|
instance.getInstanceStore().updatePolicy(
|
173
157
|
applicationNftId,
|
174
158
|
applicationInfo,
|
175
|
-
|
159
|
+
COLLATERALIZED());
|
176
160
|
|
177
|
-
//
|
161
|
+
// calculate and store premium
|
162
|
+
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
163
|
+
productNftId,
|
164
|
+
applicationInfo.riskId,
|
165
|
+
applicationInfo.sumInsuredAmount,
|
166
|
+
applicationInfo.lifetime,
|
167
|
+
applicationInfo.applicationData,
|
168
|
+
applicationInfo.bundleNftId,
|
169
|
+
applicationInfo.referralId);
|
178
170
|
|
179
|
-
|
171
|
+
instance.getInstanceStore().createPremium(
|
172
|
+
applicationNftId,
|
173
|
+
premium);
|
180
174
|
|
181
|
-
//
|
182
|
-
|
183
|
-
|
175
|
+
// update referral counter
|
176
|
+
{
|
177
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
178
|
+
|
179
|
+
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
180
|
+
_distributionService.processReferral(
|
181
|
+
productInfo.distributionNftId,
|
182
|
+
applicationInfo.referralId);
|
183
|
+
}
|
184
184
|
}
|
185
185
|
|
186
|
-
//
|
186
|
+
// log policy creation before interactions with token and policy holder
|
187
|
+
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
188
|
+
|
189
|
+
// TODO add calling pool contract if it needs to validate application
|
190
|
+
|
191
|
+
// callback to policy holder if applicable
|
192
|
+
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
187
193
|
}
|
188
194
|
|
189
195
|
|
@@ -194,6 +200,7 @@ contract PolicyService is
|
|
194
200
|
)
|
195
201
|
external
|
196
202
|
virtual
|
203
|
+
nonReentrant()
|
197
204
|
{
|
198
205
|
// check caller is registered product
|
199
206
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
@@ -205,20 +212,19 @@ contract PolicyService is
|
|
205
212
|
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
206
213
|
}
|
207
214
|
|
208
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
209
|
-
|
210
215
|
// check if premium is already collected
|
211
|
-
if (
|
212
|
-
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId
|
216
|
+
if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
|
217
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
213
218
|
}
|
214
219
|
|
215
|
-
|
216
|
-
IPolicy.
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
220
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
221
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
222
|
+
|
223
|
+
_processPremium(
|
224
|
+
instance,
|
225
|
+
policyNftId,
|
226
|
+
policyInfo,
|
227
|
+
premium);
|
222
228
|
|
223
229
|
// optionally activate policy
|
224
230
|
if(activateAt.gtz()) {
|
@@ -226,16 +232,20 @@ contract PolicyService is
|
|
226
232
|
}
|
227
233
|
|
228
234
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
235
|
+
instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
|
229
236
|
|
230
|
-
//
|
237
|
+
// log premium collection before interactions with token
|
238
|
+
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
231
239
|
|
232
240
|
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
233
|
-
|
234
|
-
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
235
241
|
}
|
236
242
|
|
237
243
|
/// @inheritdoc IPolicyService
|
238
|
-
function activate(NftId policyNftId, Timestamp activateAt)
|
244
|
+
function activate(NftId policyNftId, Timestamp activateAt)
|
245
|
+
external
|
246
|
+
virtual
|
247
|
+
nonReentrant()
|
248
|
+
{
|
239
249
|
// check caller is registered product
|
240
250
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
241
251
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -245,9 +255,11 @@ contract PolicyService is
|
|
245
255
|
|
246
256
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
247
257
|
|
248
|
-
//
|
258
|
+
// log policy activation before interactions with policy holder
|
259
|
+
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
249
260
|
|
250
|
-
//
|
261
|
+
// callback to policy holder if applicable
|
262
|
+
_policyHolderPolicyActivated(policyNftId, activateAt);
|
251
263
|
}
|
252
264
|
|
253
265
|
|
@@ -257,15 +269,14 @@ contract PolicyService is
|
|
257
269
|
Timestamp expireAt
|
258
270
|
)
|
259
271
|
external
|
260
|
-
override
|
261
272
|
virtual
|
273
|
+
nonReentrant()
|
262
274
|
returns (Timestamp expiredAt)
|
263
275
|
{
|
264
276
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
265
|
-
|
266
|
-
|
277
|
+
|
267
278
|
// check policy matches with calling product
|
268
|
-
IPolicy.PolicyInfo memory policyInfo =
|
279
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
269
280
|
if(policyInfo.productNftId != productNftId) {
|
270
281
|
revert ErrorPolicyServicePolicyProductMismatch(
|
271
282
|
policyNftId,
|
@@ -273,8 +284,44 @@ contract PolicyService is
|
|
273
284
|
productNftId);
|
274
285
|
}
|
275
286
|
|
287
|
+
return _expire(
|
288
|
+
instance,
|
289
|
+
policyNftId,
|
290
|
+
expireAt
|
291
|
+
);
|
292
|
+
}
|
293
|
+
|
294
|
+
/// @inheritdoc IPolicyService
|
295
|
+
function expirePolicy(
|
296
|
+
IInstance instance,
|
297
|
+
NftId policyNftId,
|
298
|
+
Timestamp expireAt
|
299
|
+
)
|
300
|
+
external
|
301
|
+
virtual
|
302
|
+
nonReentrant()
|
303
|
+
returns (Timestamp expiredAt)
|
304
|
+
{
|
305
|
+
return _expire(
|
306
|
+
instance,
|
307
|
+
policyNftId,
|
308
|
+
expireAt
|
309
|
+
);
|
310
|
+
}
|
311
|
+
|
312
|
+
function _expire(
|
313
|
+
IInstance instance,
|
314
|
+
NftId policyNftId,
|
315
|
+
Timestamp expireAt
|
316
|
+
)
|
317
|
+
internal
|
318
|
+
returns (Timestamp expiredAt)
|
319
|
+
{
|
320
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
321
|
+
|
276
322
|
// check policy is active
|
277
323
|
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
324
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
278
325
|
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
279
326
|
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
280
327
|
}
|
@@ -296,12 +343,14 @@ contract PolicyService is
|
|
296
343
|
}
|
297
344
|
|
298
345
|
// update policyInfo with new expiredAt timestamp
|
346
|
+
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
299
347
|
policyInfo.expiredAt = expiredAt;
|
300
348
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
301
349
|
|
302
|
-
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
350
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
303
351
|
|
304
|
-
//
|
352
|
+
// callback to policy holder if applicable
|
353
|
+
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
305
354
|
}
|
306
355
|
|
307
356
|
|
@@ -309,7 +358,8 @@ contract PolicyService is
|
|
309
358
|
NftId policyNftId
|
310
359
|
)
|
311
360
|
external
|
312
|
-
|
361
|
+
virtual
|
362
|
+
nonReentrant()
|
313
363
|
{
|
314
364
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
315
365
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -333,8 +383,8 @@ contract PolicyService is
|
|
333
383
|
|
334
384
|
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
335
385
|
// TODO consider to remove requirement for fully paid premiums altogether
|
336
|
-
if (!
|
337
|
-
revert
|
386
|
+
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
387
|
+
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
338
388
|
}
|
339
389
|
|
340
390
|
// release (remaining) collateral that was blocked by policy
|
@@ -350,35 +400,23 @@ contract PolicyService is
|
|
350
400
|
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
351
401
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
352
402
|
|
353
|
-
|
403
|
+
emit LogPolicyServicePolicyClosed(policyNftId);
|
354
404
|
}
|
355
405
|
|
356
406
|
|
357
407
|
/// @dev calculates the premium and updates all counters in the other services
|
358
|
-
function
|
408
|
+
function _processPremium(
|
359
409
|
IInstance instance,
|
360
410
|
NftId applicationNftId,
|
361
|
-
IPolicy.PolicyInfo memory applicationInfo
|
411
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
412
|
+
IPolicy.PremiumInfo memory premium
|
362
413
|
)
|
363
414
|
internal
|
364
415
|
virtual
|
365
|
-
returns (
|
366
|
-
IPolicy.Premium memory premium
|
367
|
-
)
|
368
416
|
{
|
369
417
|
NftId productNftId = applicationInfo.productNftId;
|
370
418
|
InstanceReader instanceReader = instance.getInstanceReader();
|
371
419
|
|
372
|
-
// calculate premium details
|
373
|
-
premium = _pricingService.calculatePremium(
|
374
|
-
productNftId,
|
375
|
-
applicationInfo.riskId,
|
376
|
-
applicationInfo.sumInsuredAmount,
|
377
|
-
applicationInfo.lifetime,
|
378
|
-
applicationInfo.applicationData,
|
379
|
-
applicationInfo.bundleNftId,
|
380
|
-
applicationInfo.referralId);
|
381
|
-
|
382
420
|
// check if premium balance and allowance of policy holder is sufficient
|
383
421
|
{
|
384
422
|
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
@@ -388,7 +426,7 @@ contract PolicyService is
|
|
388
426
|
tokenHandler.getToken(),
|
389
427
|
address(tokenHandler),
|
390
428
|
policyHolder,
|
391
|
-
|
429
|
+
premium.premiumAmount);
|
392
430
|
}
|
393
431
|
|
394
432
|
// update the counters
|
@@ -401,7 +439,6 @@ contract PolicyService is
|
|
401
439
|
premium);
|
402
440
|
}
|
403
441
|
|
404
|
-
|
405
442
|
function _activate(
|
406
443
|
NftId policyNftId,
|
407
444
|
IPolicy.PolicyInfo memory policyInfo,
|
@@ -412,10 +449,16 @@ contract PolicyService is
|
|
412
449
|
view
|
413
450
|
returns (IPolicy.PolicyInfo memory)
|
414
451
|
{
|
415
|
-
if
|
452
|
+
// fail if policy has already been activated and activateAt is different
|
453
|
+
if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
|
416
454
|
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
417
455
|
}
|
418
456
|
|
457
|
+
// ignore if policy has already been activated and activateAt is the same
|
458
|
+
if (policyInfo.activatedAt == activateAt) {
|
459
|
+
return policyInfo;
|
460
|
+
}
|
461
|
+
|
419
462
|
policyInfo.activatedAt = activateAt;
|
420
463
|
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
421
464
|
|
@@ -429,17 +472,12 @@ contract PolicyService is
|
|
429
472
|
NftId productNftId,
|
430
473
|
NftId bundleNftId,
|
431
474
|
ReferralId referralId,
|
432
|
-
IPolicy.
|
475
|
+
IPolicy.PremiumInfo memory premium
|
433
476
|
)
|
434
477
|
internal
|
435
478
|
virtual
|
436
479
|
{
|
437
|
-
(
|
438
|
-
NftId distributionNftId,
|
439
|
-
address distributionWallet,
|
440
|
-
address poolWallet,
|
441
|
-
address productWallet
|
442
|
-
) = _getDistributionNftAndWallets(
|
480
|
+
(NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
|
443
481
|
instanceReader,
|
444
482
|
productNftId);
|
445
483
|
|
@@ -447,13 +485,15 @@ contract PolicyService is
|
|
447
485
|
_componentService.increaseProductFees(
|
448
486
|
instanceStore,
|
449
487
|
productNftId,
|
450
|
-
|
488
|
+
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
451
489
|
|
452
490
|
// update distribution fees and distributor commission and pool fees
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
491
|
+
if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
492
|
+
_distributionService.processSale(
|
493
|
+
distributionNftId,
|
494
|
+
referralId,
|
495
|
+
premium);
|
496
|
+
}
|
457
497
|
|
458
498
|
// update pool and bundle fees
|
459
499
|
_poolService.processSale(
|
@@ -467,7 +507,7 @@ contract PolicyService is
|
|
467
507
|
InstanceReader instanceReader,
|
468
508
|
NftId policyNftId,
|
469
509
|
NftId productNftId,
|
470
|
-
IPolicy.
|
510
|
+
IPolicy.PremiumInfo memory premium
|
471
511
|
)
|
472
512
|
internal
|
473
513
|
virtual
|
@@ -536,6 +576,64 @@ contract PolicyService is
|
|
536
576
|
}
|
537
577
|
|
538
578
|
|
579
|
+
function _policyHolderPolicyActivated(
|
580
|
+
NftId policyNftId,
|
581
|
+
Timestamp activateAt
|
582
|
+
)
|
583
|
+
internal
|
584
|
+
virtual
|
585
|
+
{
|
586
|
+
// immediately return if policy is not activated
|
587
|
+
if (activateAt.eqz()) {
|
588
|
+
return;
|
589
|
+
}
|
590
|
+
|
591
|
+
// get policy holder address
|
592
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
593
|
+
|
594
|
+
// execute callback if policy holder implements IPolicyHolder
|
595
|
+
if (address(policyHolder) != address(0)) {
|
596
|
+
policyHolder.policyActivated(policyNftId, activateAt);
|
597
|
+
}
|
598
|
+
}
|
599
|
+
|
600
|
+
|
601
|
+
function _policyHolderPolicyExpired(
|
602
|
+
NftId policyNftId,
|
603
|
+
Timestamp expiredAt
|
604
|
+
)
|
605
|
+
internal
|
606
|
+
virtual
|
607
|
+
{
|
608
|
+
// immediately return if policy is not activated
|
609
|
+
if (expiredAt.eqz()) {
|
610
|
+
return;
|
611
|
+
}
|
612
|
+
|
613
|
+
// get policy holder address
|
614
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
615
|
+
|
616
|
+
// execute callback if policy holder implements IPolicyHolder
|
617
|
+
if (address(policyHolder) != address(0)) {
|
618
|
+
policyHolder.policyExpired(policyNftId, expiredAt);
|
619
|
+
}
|
620
|
+
}
|
621
|
+
|
622
|
+
|
623
|
+
function _getPolicyHolder(NftId policyNftId)
|
624
|
+
internal
|
625
|
+
view
|
626
|
+
returns (IPolicyHolder policyHolder)
|
627
|
+
{
|
628
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
629
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
630
|
+
|
631
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
632
|
+
policyHolder = IPolicyHolder(address(0));
|
633
|
+
}
|
634
|
+
}
|
635
|
+
|
636
|
+
|
539
637
|
function _getTokenHandler(
|
540
638
|
InstanceReader instanceReader,
|
541
639
|
NftId productNftId
|
@@ -550,6 +648,7 @@ contract PolicyService is
|
|
550
648
|
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
551
649
|
}
|
552
650
|
|
651
|
+
|
553
652
|
function _getDistributionNftAndWallets(
|
554
653
|
InstanceReader instanceReader,
|
555
654
|
NftId productNftId
|
@@ -12,14 +12,14 @@ contract PolicyServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with product service implementation
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
19
|
PolicyService svc = new PolicyService{salt: salt}();
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
23
|
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|