@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
@@ -1,21 +1,26 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
5
|
-
import {IInstance} from "../instance/IInstance.sol";
|
6
|
-
import {IPolicy} from "../instance/module/IPolicy.sol";
|
7
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
8
5
|
import {TimestampLib} from "../type/Timestamp.sol";
|
9
|
-
import {ObjectType, CLAIM,
|
10
|
-
import {SUBMITTED, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
|
6
|
+
import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
|
7
|
+
import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
|
11
8
|
import {NftId} from "../type/NftId.sol";
|
12
9
|
import {FeeLib} from "../type/Fee.sol";
|
13
10
|
import {StateId} from "../type/StateId.sol";
|
14
11
|
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
15
12
|
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
16
13
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
14
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
17
15
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
16
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
18
17
|
import {IClaimService} from "./IClaimService.sol";
|
18
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
19
|
+
import {IInstance} from "../instance/IInstance.sol";
|
20
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
21
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
22
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
23
|
+
import {IPolicyService} from "../product/IPolicyService.sol";
|
19
24
|
import {IPoolService} from "../pool/IPoolService.sol";
|
20
25
|
|
21
26
|
|
@@ -24,6 +29,7 @@ contract ClaimService is
|
|
24
29
|
IClaimService
|
25
30
|
{
|
26
31
|
|
32
|
+
IPolicyService internal _policyService;
|
27
33
|
IPoolService internal _poolService;
|
28
34
|
|
29
35
|
function _initialize(
|
@@ -35,16 +41,16 @@ contract ClaimService is
|
|
35
41
|
initializer()
|
36
42
|
{
|
37
43
|
(
|
38
|
-
address registryAddress
|
39
|
-
//address managerAddress
|
44
|
+
address registryAddress,
|
40
45
|
address authority
|
41
|
-
) = abi.decode(data, (address, address
|
46
|
+
) = abi.decode(data, (address, address));
|
42
47
|
|
43
|
-
|
48
|
+
_initializeService(registryAddress, authority, owner);
|
44
49
|
|
50
|
+
_policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
|
45
51
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
46
52
|
|
47
|
-
|
53
|
+
_registerInterface(type(IClaimService).interfaceId);
|
48
54
|
}
|
49
55
|
|
50
56
|
function submit(
|
@@ -54,11 +60,13 @@ contract ClaimService is
|
|
54
60
|
)
|
55
61
|
external
|
56
62
|
virtual
|
63
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
57
64
|
returns (ClaimId claimId)
|
58
65
|
{
|
59
66
|
(
|
60
|
-
|
61
|
-
|
67
|
+
,
|
68
|
+
IInstance instance,,
|
69
|
+
InstanceStore instanceStore,
|
62
70
|
IPolicy.PolicyInfo memory policyInfo
|
63
71
|
) = _verifyCallerWithPolicy(policyNftId);
|
64
72
|
|
@@ -67,6 +75,7 @@ contract ClaimService is
|
|
67
75
|
revert ErrorClaimServicePolicyNotOpen(policyNftId);
|
68
76
|
}
|
69
77
|
|
78
|
+
// TODO check claim amount > 0
|
70
79
|
// check policy including this claim is still within sum insured
|
71
80
|
if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
|
72
81
|
revert ErrorClaimServiceClaimExceedsSumInsured(
|
@@ -77,23 +86,23 @@ contract ClaimService is
|
|
77
86
|
|
78
87
|
// create new claim
|
79
88
|
claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
|
80
|
-
|
89
|
+
instanceStore.createClaim(
|
81
90
|
policyNftId,
|
82
91
|
claimId,
|
83
|
-
IPolicy.ClaimInfo(
|
84
|
-
claimAmount,
|
85
|
-
AmountLib.zero(),
|
86
|
-
0,
|
87
|
-
0,
|
88
|
-
claimData,
|
89
|
-
"",
|
90
|
-
TimestampLib.zero()));
|
92
|
+
IPolicy.ClaimInfo({
|
93
|
+
claimAmount: claimAmount,
|
94
|
+
paidAmount: AmountLib.zero(),
|
95
|
+
payoutsCount: 0,
|
96
|
+
openPayoutsCount: 0,
|
97
|
+
submissionData: claimData,
|
98
|
+
processData: "",
|
99
|
+
closedAt: TimestampLib.zero()}));
|
91
100
|
|
92
101
|
// update and save policy info with instance
|
102
|
+
// policy claim amount is only updated when claim is confirmed
|
93
103
|
policyInfo.claimsCount += 1;
|
94
104
|
policyInfo.openClaimsCount += 1;
|
95
|
-
|
96
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
105
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
97
106
|
|
98
107
|
emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
|
99
108
|
}
|
@@ -107,26 +116,43 @@ contract ClaimService is
|
|
107
116
|
)
|
108
117
|
external
|
109
118
|
virtual
|
119
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
110
120
|
{
|
111
121
|
(
|
122
|
+
NftId productNftId,
|
112
123
|
IInstance instance,
|
113
124
|
InstanceReader instanceReader,
|
125
|
+
InstanceStore instanceStore,
|
114
126
|
IPolicy.PolicyInfo memory policyInfo
|
115
127
|
) = _verifyCallerWithPolicy(policyNftId);
|
116
128
|
|
129
|
+
// TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
|
130
|
+
|
117
131
|
// check/update claim info
|
118
132
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
119
133
|
claimInfo.claimAmount = confirmedAmount;
|
120
134
|
claimInfo.processData = data;
|
121
|
-
|
135
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
|
122
136
|
|
123
137
|
// update and save policy info with instance
|
124
138
|
policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
|
125
|
-
|
139
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
140
|
+
|
141
|
+
// should policy still be active it needs to become expired
|
142
|
+
if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
|
143
|
+
_policyService.expirePolicy(instance, policyNftId, TimestampLib.blockTimestamp());
|
144
|
+
}
|
126
145
|
|
127
146
|
emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
147
|
+
|
148
|
+
// callback to pool if applicable
|
149
|
+
_processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
|
150
|
+
|
151
|
+
// callback to policy holder if applicable
|
152
|
+
_policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
128
153
|
}
|
129
154
|
|
155
|
+
|
130
156
|
function decline(
|
131
157
|
NftId policyNftId,
|
132
158
|
ClaimId claimId,
|
@@ -134,10 +160,13 @@ contract ClaimService is
|
|
134
160
|
)
|
135
161
|
external
|
136
162
|
virtual
|
163
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
137
164
|
{
|
138
165
|
(
|
166
|
+
,
|
139
167
|
IInstance instance,
|
140
168
|
InstanceReader instanceReader,
|
169
|
+
InstanceStore instanceStore,
|
141
170
|
IPolicy.PolicyInfo memory policyInfo
|
142
171
|
) = _verifyCallerWithPolicy(policyNftId);
|
143
172
|
|
@@ -145,25 +174,59 @@ contract ClaimService is
|
|
145
174
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
146
175
|
claimInfo.processData = data;
|
147
176
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
148
|
-
|
177
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
|
149
178
|
|
150
179
|
// update and save policy info with instance
|
151
180
|
policyInfo.openClaimsCount -= 1;
|
152
|
-
|
181
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
153
182
|
|
154
183
|
emit LogClaimServiceClaimDeclined(policyNftId, claimId);
|
155
184
|
}
|
156
185
|
|
186
|
+
|
187
|
+
// TODO add test case
|
188
|
+
function revoke(
|
189
|
+
NftId policyNftId,
|
190
|
+
ClaimId claimId
|
191
|
+
)
|
192
|
+
external
|
193
|
+
virtual
|
194
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
195
|
+
{
|
196
|
+
(
|
197
|
+
,
|
198
|
+
IInstance instance,
|
199
|
+
InstanceReader instanceReader,
|
200
|
+
InstanceStore instanceStore,
|
201
|
+
IPolicy.PolicyInfo memory policyInfo
|
202
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
203
|
+
|
204
|
+
// check/update claim info
|
205
|
+
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
206
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
207
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
|
208
|
+
|
209
|
+
// update and save policy info with instance
|
210
|
+
policyInfo.openClaimsCount -= 1;
|
211
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
212
|
+
|
213
|
+
emit LogClaimServiceClaimRevoked(policyNftId, claimId);
|
214
|
+
}
|
215
|
+
|
216
|
+
|
157
217
|
function close(
|
158
218
|
NftId policyNftId,
|
159
219
|
ClaimId claimId
|
160
220
|
)
|
161
221
|
external
|
162
222
|
virtual
|
223
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
163
224
|
{
|
164
225
|
(
|
226
|
+
,
|
165
227
|
IInstance instance,
|
166
228
|
InstanceReader instanceReader,
|
229
|
+
InstanceStore instanceStore,
|
167
230
|
IPolicy.PolicyInfo memory policyInfo
|
168
231
|
) = _verifyCallerWithPolicy(policyNftId);
|
169
232
|
|
@@ -188,55 +251,52 @@ contract ClaimService is
|
|
188
251
|
}
|
189
252
|
|
190
253
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
191
|
-
|
254
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
192
255
|
}
|
193
256
|
|
194
257
|
|
195
|
-
function
|
258
|
+
function createPayoutForBeneficiary(
|
196
259
|
NftId policyNftId,
|
197
260
|
ClaimId claimId,
|
198
261
|
Amount amount,
|
262
|
+
address beneficiary,
|
199
263
|
bytes memory data
|
200
264
|
)
|
201
265
|
external
|
266
|
+
virtual
|
267
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
202
268
|
returns (PayoutId payoutId)
|
203
269
|
{
|
204
|
-
(
|
205
|
-
|
206
|
-
|
207
|
-
IPolicy.PolicyInfo memory policyInfo
|
208
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
209
|
-
|
210
|
-
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
211
|
-
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
212
|
-
|
213
|
-
// TODO add checks
|
214
|
-
// claim needs to be open
|
215
|
-
// claim.paidAmount + amount <= claim.claimAmount
|
270
|
+
if (beneficiary == address(0)) {
|
271
|
+
revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
|
272
|
+
}
|
216
273
|
|
217
|
-
|
218
|
-
// create payout info with instance
|
219
|
-
uint8 claimNo = claimInfo.payoutsCount + 1;
|
220
|
-
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
221
|
-
instance.getInstanceStore().createPayout(
|
274
|
+
return _createPayout(
|
222
275
|
policyNftId,
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
TimestampLib.zero()));
|
276
|
+
claimId,
|
277
|
+
amount,
|
278
|
+
beneficiary,
|
279
|
+
data);
|
280
|
+
}
|
229
281
|
|
230
|
-
// update and save claim info with instance
|
231
|
-
claimInfo.payoutsCount += 1;
|
232
|
-
claimInfo.openPayoutsCount += 1;
|
233
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
234
282
|
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
283
|
+
function createPayout(
|
284
|
+
NftId policyNftId,
|
285
|
+
ClaimId claimId,
|
286
|
+
Amount amount,
|
287
|
+
bytes memory data
|
288
|
+
)
|
289
|
+
external
|
290
|
+
virtual
|
291
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
292
|
+
returns (PayoutId payoutId)
|
293
|
+
{
|
294
|
+
return _createPayout(
|
295
|
+
policyNftId,
|
296
|
+
claimId,
|
297
|
+
amount,
|
298
|
+
address(0), // defaults to owner of policy nft
|
299
|
+
data);
|
240
300
|
}
|
241
301
|
|
242
302
|
|
@@ -246,10 +306,13 @@ contract ClaimService is
|
|
246
306
|
)
|
247
307
|
external
|
248
308
|
virtual
|
309
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
249
310
|
{
|
250
311
|
(
|
312
|
+
,
|
251
313
|
IInstance instance,
|
252
314
|
InstanceReader instanceReader,
|
315
|
+
InstanceStore instanceStore,
|
253
316
|
IPolicy.PolicyInfo memory policyInfo
|
254
317
|
) = _verifyCallerWithPolicy(policyNftId);
|
255
318
|
|
@@ -258,9 +321,8 @@ contract ClaimService is
|
|
258
321
|
|
259
322
|
// update and save payout info with instance
|
260
323
|
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
261
|
-
|
324
|
+
instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
262
325
|
|
263
|
-
// TODO update and save claim info with instance
|
264
326
|
ClaimId claimId = payoutId.toClaimId();
|
265
327
|
Amount payoutAmount = payoutInfo.amount;
|
266
328
|
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
@@ -270,29 +332,30 @@ contract ClaimService is
|
|
270
332
|
// check if this payout is closing the linked claim
|
271
333
|
// update claim and policy info accordingly
|
272
334
|
if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
|
273
|
-
claimInfo.closedAt
|
274
|
-
|
335
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
336
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
275
337
|
|
276
338
|
policyInfo.openClaimsCount -= 1;
|
277
339
|
} else {
|
278
|
-
|
340
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
279
341
|
}
|
280
342
|
|
281
343
|
// update and save policy info with instance
|
282
344
|
policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
|
283
|
-
|
345
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
284
346
|
|
285
347
|
// inform pool about payout
|
286
|
-
_poolService.
|
348
|
+
_poolService.processPayout(
|
287
349
|
instance,
|
288
350
|
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
289
351
|
policyNftId,
|
290
352
|
policyInfo,
|
291
353
|
payoutAmount);
|
292
|
-
|
354
|
+
|
293
355
|
// transfer payout token and fee
|
294
356
|
(
|
295
357
|
Amount netPayoutAmount,
|
358
|
+
Amount processingFeeAmount,
|
296
359
|
address beneficiary
|
297
360
|
) = _calculatePayoutAmount(
|
298
361
|
instanceReader,
|
@@ -300,17 +363,80 @@ contract ClaimService is
|
|
300
363
|
policyInfo,
|
301
364
|
payoutInfo);
|
302
365
|
|
303
|
-
|
304
|
-
|
305
|
-
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
|
366
|
+
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
|
306
367
|
|
307
368
|
{
|
308
369
|
NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
|
309
370
|
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
310
371
|
poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
|
372
|
+
|
373
|
+
// TODO add 2nd token tx if processingFeeAmount > 0
|
311
374
|
}
|
375
|
+
|
376
|
+
// callback to policy holder if applicable
|
377
|
+
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
312
378
|
}
|
313
379
|
|
380
|
+
// internal functions
|
381
|
+
|
382
|
+
|
383
|
+
function _createPayout(
|
384
|
+
NftId policyNftId,
|
385
|
+
ClaimId claimId,
|
386
|
+
Amount amount,
|
387
|
+
address beneficiary,
|
388
|
+
bytes memory data
|
389
|
+
)
|
390
|
+
internal
|
391
|
+
virtual
|
392
|
+
returns (PayoutId payoutId)
|
393
|
+
{
|
394
|
+
(
|
395
|
+
,
|
396
|
+
,
|
397
|
+
InstanceReader instanceReader,
|
398
|
+
InstanceStore instanceStore,
|
399
|
+
IPolicy.PolicyInfo memory policyInfo
|
400
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
401
|
+
|
402
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
403
|
+
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
404
|
+
|
405
|
+
// TODO add checks
|
406
|
+
// claim needs to be open
|
407
|
+
// claim.paidAmount + amount <= claim.claimAmount
|
408
|
+
|
409
|
+
// check/update claim info
|
410
|
+
// create payout info with instance
|
411
|
+
uint24 payoutNo = claimInfo.payoutsCount + 1;
|
412
|
+
payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
|
413
|
+
if (beneficiary == address(0)) {
|
414
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
415
|
+
}
|
416
|
+
|
417
|
+
instanceStore.createPayout(
|
418
|
+
policyNftId,
|
419
|
+
payoutId,
|
420
|
+
IPolicy.PayoutInfo({
|
421
|
+
claimId: payoutId.toClaimId(),
|
422
|
+
amount: amount,
|
423
|
+
beneficiary: beneficiary,
|
424
|
+
data: data,
|
425
|
+
paidAt: TimestampLib.zero()}));
|
426
|
+
|
427
|
+
// update and save claim info with instance
|
428
|
+
claimInfo.payoutsCount += 1;
|
429
|
+
claimInfo.openPayoutsCount += 1;
|
430
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
431
|
+
|
432
|
+
// update and save policy info with instance
|
433
|
+
policyInfo.payoutAmount.add(amount);
|
434
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
435
|
+
|
436
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
|
437
|
+
}
|
438
|
+
|
439
|
+
|
314
440
|
function _calculatePayoutAmount(
|
315
441
|
InstanceReader instanceReader,
|
316
442
|
NftId policyNftId,
|
@@ -320,6 +446,7 @@ contract ClaimService is
|
|
320
446
|
internal
|
321
447
|
returns (
|
322
448
|
Amount netPayoutAmount,
|
449
|
+
Amount processingFeeAmount,
|
323
450
|
address beneficiary
|
324
451
|
)
|
325
452
|
{
|
@@ -333,33 +460,20 @@ contract ClaimService is
|
|
333
460
|
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
334
461
|
|
335
462
|
netPayoutAmount = payoutAmount;
|
336
|
-
|
463
|
+
|
464
|
+
if (payoutInfo.beneficiary == address(0)) {
|
465
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
466
|
+
} else {
|
467
|
+
beneficiary = payoutInfo.beneficiary;
|
468
|
+
}
|
337
469
|
|
338
470
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
339
471
|
if(FeeLib.gtz(productInfo.processingFee)) {
|
340
|
-
// TODO calculate net payout and processing fees
|
341
|
-
// TODO transfer processing fees to product wallet
|
342
|
-
// TODO inform product to update fee book keeping
|
472
|
+
// TODO calculate and set net payout and processing fees
|
343
473
|
}
|
344
474
|
}
|
345
475
|
}
|
346
476
|
|
347
|
-
// internal functions
|
348
|
-
|
349
|
-
function _getBeneficiary(
|
350
|
-
NftId policyNftId,
|
351
|
-
ClaimId claimId
|
352
|
-
)
|
353
|
-
internal
|
354
|
-
returns (address beneficiary)
|
355
|
-
{
|
356
|
-
// TODO check if owner is IPolicyHolder
|
357
|
-
// if so, obtain beneficiary from this contract
|
358
|
-
|
359
|
-
// default beneficiary is policy nft owner
|
360
|
-
beneficiary = getRegistry().ownerOf(policyNftId);
|
361
|
-
}
|
362
|
-
|
363
477
|
|
364
478
|
function _verifyCallerWithPolicy(
|
365
479
|
NftId policyNftId
|
@@ -368,14 +482,16 @@ contract ClaimService is
|
|
368
482
|
view
|
369
483
|
virtual
|
370
484
|
returns (
|
485
|
+
NftId productNftId,
|
371
486
|
IInstance instance,
|
372
487
|
InstanceReader instanceReader,
|
488
|
+
InstanceStore instanceStore,
|
373
489
|
IPolicy.PolicyInfo memory policyInfo
|
374
490
|
)
|
375
491
|
{
|
376
|
-
NftId productNftId;
|
377
492
|
(productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
378
493
|
instanceReader = instance.getInstanceReader();
|
494
|
+
instanceStore = instance.getInstanceStore();
|
379
495
|
|
380
496
|
// check caller(product) policy match
|
381
497
|
policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -409,6 +525,65 @@ contract ClaimService is
|
|
409
525
|
claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
410
526
|
}
|
411
527
|
|
528
|
+
function _processConfirmedClaimByPool(
|
529
|
+
InstanceReader instanceReader,
|
530
|
+
NftId productNftId,
|
531
|
+
NftId policyNftId,
|
532
|
+
ClaimId claimId,
|
533
|
+
Amount amount
|
534
|
+
)
|
535
|
+
internal
|
536
|
+
{
|
537
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
538
|
+
if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
|
539
|
+
address poolAddress = getRegistry().getObjectAddress(poolNftId);
|
540
|
+
IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
|
541
|
+
}
|
542
|
+
}
|
543
|
+
|
544
|
+
|
545
|
+
function _policyHolderClaimConfirmed(
|
546
|
+
NftId policyNftId,
|
547
|
+
ClaimId claimId,
|
548
|
+
Amount confirmedAmount
|
549
|
+
)
|
550
|
+
internal
|
551
|
+
{
|
552
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
553
|
+
if(address(policyHolder) != address(0)) {
|
554
|
+
policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
|
555
|
+
}
|
556
|
+
}
|
557
|
+
|
558
|
+
|
559
|
+
function _policyHolderPayoutExecuted(
|
560
|
+
NftId policyNftId,
|
561
|
+
PayoutId payoutId,
|
562
|
+
address beneficiary,
|
563
|
+
Amount payoutAmount
|
564
|
+
)
|
565
|
+
internal
|
566
|
+
{
|
567
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
568
|
+
if(address(policyHolder) != address(0)) {
|
569
|
+
policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
|
570
|
+
}
|
571
|
+
}
|
572
|
+
|
573
|
+
|
574
|
+
function _getPolicyHolder(NftId policyNftId)
|
575
|
+
internal
|
576
|
+
view
|
577
|
+
returns (IPolicyHolder policyHolder)
|
578
|
+
{
|
579
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
580
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
581
|
+
|
582
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
583
|
+
policyHolder = IPolicyHolder(address(0));
|
584
|
+
}
|
585
|
+
}
|
586
|
+
|
412
587
|
|
413
588
|
function _getDomain() internal pure override returns(ObjectType) {
|
414
589
|
return CLAIM();
|
@@ -12,14 +12,14 @@ contract ClaimServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with 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
|
ClaimService svc = new ClaimService{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);
|