@etherisc/gif-next 0.0.2-b3a9c97-695 → 0.0.2-b3e9a44-364
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 +5 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +52 -212
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +16 -184
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +148 -284
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +100 -120
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +16 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +65 -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 +1507 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1978 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -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 +1427 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1187 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1561 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1996 -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 +16 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +16 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +26 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +97 -100
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +424 -74
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +55 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +77 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +249 -111
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +42 -202
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
- 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 +16 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +16 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +16 -184
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +53 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +76 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +45 -185
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +146 -220
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +115 -107
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +40 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +48 -41
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +219 -118
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -185
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +284 -300
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +96 -92
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +47 -146
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +73 -81
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +44 -210
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +256 -229
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +117 -109
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +16 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +148 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +128 -16
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +59 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +44 -63
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +18 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +218 -289
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +108 -128
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +133 -261
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +97 -117
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +44 -210
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +604 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +698 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +288 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +16 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +494 -82
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +243 -131
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +39 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -72
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +16 -173
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +103 -265
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +112 -126
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +21 -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 +16 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +16 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +16 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/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 +16 -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 +16 -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 +16 -184
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +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 +24 -97
- 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 +21 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +288 -16
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +43 -27
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +16 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -248
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -100
- 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 +47 -159
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +72 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +84 -84
- 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 +2 -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 +25 -24
- package/contracts/authorization/Authorization.sol +5 -2
- package/contracts/authorization/IAccessAdmin.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +2 -0
- package/contracts/distribution/Distribution.sol +3 -2
- package/contracts/distribution/DistributionService.sol +70 -45
- 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 +411 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -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 +7 -30
- package/contracts/instance/Instance.sol +10 -35
- package/contracts/instance/InstanceAdmin.sol +29 -7
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +106 -19
- package/contracts/instance/InstanceService.sol +12 -14
- 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 +4 -2
- package/contracts/instance/module/IPolicy.sol +23 -23
- package/contracts/oracle/Oracle.sol +2 -1
- package/contracts/oracle/OracleService.sol +41 -33
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +12 -13
- package/contracts/pool/BundleService.sol +41 -17
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +10 -0
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +49 -25
- package/contracts/pool/Pool.sol +61 -32
- package/contracts/pool/PoolService.sol +116 -77
- 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 +1 -0
- package/contracts/product/ClaimService.sol +245 -81
- 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 +7 -7
- package/contracts/product/IProductComponent.sol +17 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +209 -118
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +42 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +67 -46
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +55 -15
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +336 -197
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +55 -48
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +12 -6
- package/contracts/registry/ServiceAuthorizationV3.sol +6 -8
- package/contracts/shared/Component.sol +12 -32
- package/contracts/shared/ComponentService.sol +17 -16
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +0 -1
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -7
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +5 -6
- package/contracts/shared/NftOwnable.sol +21 -5
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +16 -11
- package/contracts/shared/TokenHandler.sol +99 -22
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +11 -29
- 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/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +1 -0
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +67 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -1,23 +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";
|
18
16
|
import {IClaimService} from "./IClaimService.sol";
|
17
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
18
|
+
import {IInstance} from "../instance/IInstance.sol";
|
19
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
20
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
21
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
22
|
+
import {IPolicyService} from "../product/IPolicyService.sol";
|
19
23
|
import {IPoolService} from "../pool/IPoolService.sol";
|
20
|
-
import {TokenTransferLib} from "../shared/TokenTransferLib.sol";
|
21
24
|
|
22
25
|
|
23
26
|
contract ClaimService is
|
@@ -25,6 +28,7 @@ contract ClaimService is
|
|
25
28
|
IClaimService
|
26
29
|
{
|
27
30
|
|
31
|
+
IPolicyService internal _policyService;
|
28
32
|
IPoolService internal _poolService;
|
29
33
|
|
30
34
|
function _initialize(
|
@@ -36,16 +40,16 @@ contract ClaimService is
|
|
36
40
|
initializer()
|
37
41
|
{
|
38
42
|
(
|
39
|
-
address registryAddress
|
40
|
-
//address managerAddress
|
43
|
+
address registryAddress,
|
41
44
|
address authority
|
42
|
-
) = abi.decode(data, (address, address
|
45
|
+
) = abi.decode(data, (address, address));
|
43
46
|
|
44
|
-
|
47
|
+
_initializeService(registryAddress, authority, owner);
|
45
48
|
|
49
|
+
_policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
|
46
50
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
47
51
|
|
48
|
-
|
52
|
+
_registerInterface(type(IClaimService).interfaceId);
|
49
53
|
}
|
50
54
|
|
51
55
|
function submit(
|
@@ -55,9 +59,11 @@ contract ClaimService is
|
|
55
59
|
)
|
56
60
|
external
|
57
61
|
virtual
|
62
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
58
63
|
returns (ClaimId claimId)
|
59
64
|
{
|
60
65
|
(
|
66
|
+
,
|
61
67
|
IInstance instance,
|
62
68
|
InstanceReader instanceReader,
|
63
69
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -68,6 +74,7 @@ contract ClaimService is
|
|
68
74
|
revert ErrorClaimServicePolicyNotOpen(policyNftId);
|
69
75
|
}
|
70
76
|
|
77
|
+
// TODO check claim amount > 0
|
71
78
|
// check policy including this claim is still within sum insured
|
72
79
|
if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
|
73
80
|
revert ErrorClaimServiceClaimExceedsSumInsured(
|
@@ -81,14 +88,14 @@ contract ClaimService is
|
|
81
88
|
instance.getInstanceStore().createClaim(
|
82
89
|
policyNftId,
|
83
90
|
claimId,
|
84
|
-
IPolicy.ClaimInfo(
|
85
|
-
claimAmount,
|
86
|
-
AmountLib.zero(),
|
87
|
-
0,
|
88
|
-
0,
|
89
|
-
claimData,
|
90
|
-
"",
|
91
|
-
TimestampLib.zero()));
|
91
|
+
IPolicy.ClaimInfo({
|
92
|
+
claimAmount: claimAmount,
|
93
|
+
paidAmount: AmountLib.zero(),
|
94
|
+
payoutsCount: 0,
|
95
|
+
openPayoutsCount: 0,
|
96
|
+
submissionData: claimData,
|
97
|
+
processData: "",
|
98
|
+
closedAt: TimestampLib.zero()}));
|
92
99
|
|
93
100
|
// update and save policy info with instance
|
94
101
|
policyInfo.claimsCount += 1;
|
@@ -108,13 +115,17 @@ contract ClaimService is
|
|
108
115
|
)
|
109
116
|
external
|
110
117
|
virtual
|
118
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
111
119
|
{
|
112
120
|
(
|
121
|
+
NftId productNftId,
|
113
122
|
IInstance instance,
|
114
123
|
InstanceReader instanceReader,
|
115
124
|
IPolicy.PolicyInfo memory policyInfo
|
116
125
|
) = _verifyCallerWithPolicy(policyNftId);
|
117
126
|
|
127
|
+
// TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
|
128
|
+
|
118
129
|
// check/update claim info
|
119
130
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
120
131
|
claimInfo.claimAmount = confirmedAmount;
|
@@ -125,9 +136,21 @@ contract ClaimService is
|
|
125
136
|
policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
|
126
137
|
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
127
138
|
|
139
|
+
// should policy still be active it needs to become expired
|
140
|
+
if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
|
141
|
+
_policyService.expirePolicy(instance, policyNftId, TimestampLib.blockTimestamp());
|
142
|
+
}
|
143
|
+
|
128
144
|
emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
145
|
+
|
146
|
+
// callback to pool if applicable
|
147
|
+
_processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
|
148
|
+
|
149
|
+
// callback to policy holder if applicable
|
150
|
+
_policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
129
151
|
}
|
130
152
|
|
153
|
+
|
131
154
|
function decline(
|
132
155
|
NftId policyNftId,
|
133
156
|
ClaimId claimId,
|
@@ -135,8 +158,10 @@ contract ClaimService is
|
|
135
158
|
)
|
136
159
|
external
|
137
160
|
virtual
|
161
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
138
162
|
{
|
139
163
|
(
|
164
|
+
,
|
140
165
|
IInstance instance,
|
141
166
|
InstanceReader instanceReader,
|
142
167
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -155,14 +180,46 @@ contract ClaimService is
|
|
155
180
|
emit LogClaimServiceClaimDeclined(policyNftId, claimId);
|
156
181
|
}
|
157
182
|
|
183
|
+
|
184
|
+
// TODO add test case
|
185
|
+
function revoke(
|
186
|
+
NftId policyNftId,
|
187
|
+
ClaimId claimId
|
188
|
+
)
|
189
|
+
external
|
190
|
+
virtual
|
191
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
192
|
+
{
|
193
|
+
(
|
194
|
+
,
|
195
|
+
IInstance instance,
|
196
|
+
InstanceReader instanceReader,
|
197
|
+
IPolicy.PolicyInfo memory policyInfo
|
198
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
199
|
+
|
200
|
+
// check/update claim info
|
201
|
+
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
202
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
203
|
+
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, REVOKED());
|
204
|
+
|
205
|
+
// update and save policy info with instance
|
206
|
+
policyInfo.openClaimsCount -= 1;
|
207
|
+
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
208
|
+
|
209
|
+
emit LogClaimServiceClaimRevoked(policyNftId, claimId);
|
210
|
+
}
|
211
|
+
|
212
|
+
|
158
213
|
function close(
|
159
214
|
NftId policyNftId,
|
160
215
|
ClaimId claimId
|
161
216
|
)
|
162
217
|
external
|
163
218
|
virtual
|
219
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
164
220
|
{
|
165
221
|
(
|
222
|
+
,
|
166
223
|
IInstance instance,
|
167
224
|
InstanceReader instanceReader,
|
168
225
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -193,51 +250,48 @@ contract ClaimService is
|
|
193
250
|
}
|
194
251
|
|
195
252
|
|
196
|
-
function
|
253
|
+
function createPayoutForBeneficiary(
|
197
254
|
NftId policyNftId,
|
198
255
|
ClaimId claimId,
|
199
256
|
Amount amount,
|
257
|
+
address beneficiary,
|
200
258
|
bytes memory data
|
201
259
|
)
|
202
260
|
external
|
261
|
+
virtual
|
262
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
203
263
|
returns (PayoutId payoutId)
|
204
264
|
{
|
205
|
-
(
|
206
|
-
|
207
|
-
|
208
|
-
IPolicy.PolicyInfo memory policyInfo
|
209
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
210
|
-
|
211
|
-
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
212
|
-
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
213
|
-
|
214
|
-
// TODO add checks
|
215
|
-
// claim needs to be open
|
216
|
-
// claim.paidAmount + amount <= claim.claimAmount
|
265
|
+
if (beneficiary == address(0)) {
|
266
|
+
revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
|
267
|
+
}
|
217
268
|
|
218
|
-
|
219
|
-
// create payout info with instance
|
220
|
-
uint8 claimNo = claimInfo.payoutsCount + 1;
|
221
|
-
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
222
|
-
instance.getInstanceStore().createPayout(
|
269
|
+
return _createPayout(
|
223
270
|
policyNftId,
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
TimestampLib.zero()));
|
230
|
-
|
231
|
-
// update and save claim info with instance
|
232
|
-
claimInfo.payoutsCount += 1;
|
233
|
-
claimInfo.openPayoutsCount += 1;
|
234
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
271
|
+
claimId,
|
272
|
+
amount,
|
273
|
+
beneficiary,
|
274
|
+
data);
|
275
|
+
}
|
235
276
|
|
236
|
-
// update and save policy info with instance
|
237
|
-
policyInfo.payoutAmount.add(amount);
|
238
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
239
277
|
|
240
|
-
|
278
|
+
function createPayout(
|
279
|
+
NftId policyNftId,
|
280
|
+
ClaimId claimId,
|
281
|
+
Amount amount,
|
282
|
+
bytes memory data
|
283
|
+
)
|
284
|
+
external
|
285
|
+
virtual
|
286
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
287
|
+
returns (PayoutId payoutId)
|
288
|
+
{
|
289
|
+
return _createPayout(
|
290
|
+
policyNftId,
|
291
|
+
claimId,
|
292
|
+
amount,
|
293
|
+
address(0), // defaults to owner of policy nft
|
294
|
+
data);
|
241
295
|
}
|
242
296
|
|
243
297
|
|
@@ -247,8 +301,10 @@ contract ClaimService is
|
|
247
301
|
)
|
248
302
|
external
|
249
303
|
virtual
|
304
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
250
305
|
{
|
251
306
|
(
|
307
|
+
,
|
252
308
|
IInstance instance,
|
253
309
|
InstanceReader instanceReader,
|
254
310
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -261,7 +317,6 @@ contract ClaimService is
|
|
261
317
|
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
262
318
|
instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
263
319
|
|
264
|
-
// TODO update and save claim info with instance
|
265
320
|
ClaimId claimId = payoutId.toClaimId();
|
266
321
|
Amount payoutAmount = payoutInfo.amount;
|
267
322
|
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
@@ -271,7 +326,7 @@ contract ClaimService is
|
|
271
326
|
// check if this payout is closing the linked claim
|
272
327
|
// update claim and policy info accordingly
|
273
328
|
if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
|
274
|
-
claimInfo.closedAt
|
329
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
275
330
|
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
276
331
|
|
277
332
|
policyInfo.openClaimsCount -= 1;
|
@@ -284,16 +339,17 @@ contract ClaimService is
|
|
284
339
|
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
285
340
|
|
286
341
|
// inform pool about payout
|
287
|
-
_poolService.
|
342
|
+
_poolService.processPayout(
|
288
343
|
instance,
|
289
344
|
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
290
345
|
policyNftId,
|
291
346
|
policyInfo,
|
292
347
|
payoutAmount);
|
293
|
-
|
348
|
+
|
294
349
|
// transfer payout token and fee
|
295
350
|
(
|
296
351
|
Amount netPayoutAmount,
|
352
|
+
Amount processingFeeAmount,
|
297
353
|
address beneficiary
|
298
354
|
) = _calculatePayoutAmount(
|
299
355
|
instanceReader,
|
@@ -301,17 +357,78 @@ contract ClaimService is
|
|
301
357
|
policyInfo,
|
302
358
|
payoutInfo);
|
303
359
|
|
304
|
-
|
305
|
-
|
306
|
-
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
|
360
|
+
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
|
307
361
|
|
308
362
|
{
|
309
363
|
NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
|
310
364
|
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
311
|
-
|
365
|
+
poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
|
366
|
+
|
367
|
+
// TODO add 2nd token tx if processingFeeAmount > 0
|
368
|
+
}
|
369
|
+
|
370
|
+
// callback to policy holder if applicable
|
371
|
+
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
372
|
+
}
|
373
|
+
|
374
|
+
// internal functions
|
375
|
+
|
376
|
+
|
377
|
+
function _createPayout(
|
378
|
+
NftId policyNftId,
|
379
|
+
ClaimId claimId,
|
380
|
+
Amount amount,
|
381
|
+
address beneficiary,
|
382
|
+
bytes memory data
|
383
|
+
)
|
384
|
+
internal
|
385
|
+
virtual
|
386
|
+
returns (PayoutId payoutId)
|
387
|
+
{
|
388
|
+
(
|
389
|
+
,
|
390
|
+
IInstance instance,
|
391
|
+
InstanceReader instanceReader,
|
392
|
+
IPolicy.PolicyInfo memory policyInfo
|
393
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
394
|
+
|
395
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
396
|
+
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
397
|
+
|
398
|
+
// TODO add checks
|
399
|
+
// claim needs to be open
|
400
|
+
// claim.paidAmount + amount <= claim.claimAmount
|
401
|
+
|
402
|
+
// check/update claim info
|
403
|
+
// create payout info with instance
|
404
|
+
uint24 payoutNo = claimInfo.payoutsCount + 1;
|
405
|
+
payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
|
406
|
+
if (beneficiary == address(0)) {
|
407
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
312
408
|
}
|
409
|
+
instance.getInstanceStore().createPayout(
|
410
|
+
policyNftId,
|
411
|
+
payoutId,
|
412
|
+
IPolicy.PayoutInfo({
|
413
|
+
claimId: payoutId.toClaimId(),
|
414
|
+
amount: amount,
|
415
|
+
beneficiary: beneficiary,
|
416
|
+
data: data,
|
417
|
+
paidAt: TimestampLib.zero()}));
|
418
|
+
|
419
|
+
// update and save claim info with instance
|
420
|
+
claimInfo.payoutsCount += 1;
|
421
|
+
claimInfo.openPayoutsCount += 1;
|
422
|
+
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
423
|
+
|
424
|
+
// update and save policy info with instance
|
425
|
+
policyInfo.payoutAmount.add(amount);
|
426
|
+
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
427
|
+
|
428
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
|
313
429
|
}
|
314
430
|
|
431
|
+
|
315
432
|
function _calculatePayoutAmount(
|
316
433
|
InstanceReader instanceReader,
|
317
434
|
NftId policyNftId,
|
@@ -321,6 +438,7 @@ contract ClaimService is
|
|
321
438
|
internal
|
322
439
|
returns (
|
323
440
|
Amount netPayoutAmount,
|
441
|
+
Amount processingFeeAmount,
|
324
442
|
address beneficiary
|
325
443
|
)
|
326
444
|
{
|
@@ -334,33 +452,20 @@ contract ClaimService is
|
|
334
452
|
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
335
453
|
|
336
454
|
netPayoutAmount = payoutAmount;
|
337
|
-
|
455
|
+
|
456
|
+
if (payoutInfo.beneficiary == address(0)) {
|
457
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
458
|
+
} else {
|
459
|
+
beneficiary = payoutInfo.beneficiary;
|
460
|
+
}
|
338
461
|
|
339
462
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
340
463
|
if(FeeLib.gtz(productInfo.processingFee)) {
|
341
|
-
// TODO calculate net payout and processing fees
|
342
|
-
// TODO transfer processing fees to product wallet
|
343
|
-
// TODO inform product to update fee book keeping
|
464
|
+
// TODO calculate and set net payout and processing fees
|
344
465
|
}
|
345
466
|
}
|
346
467
|
}
|
347
468
|
|
348
|
-
// internal functions
|
349
|
-
|
350
|
-
function _getBeneficiary(
|
351
|
-
NftId policyNftId,
|
352
|
-
ClaimId claimId
|
353
|
-
)
|
354
|
-
internal
|
355
|
-
returns (address beneficiary)
|
356
|
-
{
|
357
|
-
// TODO check if owner is IPolicyHolder
|
358
|
-
// if so, obtain beneficiary from this contract
|
359
|
-
|
360
|
-
// default beneficiary is policy nft owner
|
361
|
-
beneficiary = getRegistry().ownerOf(policyNftId);
|
362
|
-
}
|
363
|
-
|
364
469
|
|
365
470
|
function _verifyCallerWithPolicy(
|
366
471
|
NftId policyNftId
|
@@ -369,12 +474,12 @@ contract ClaimService is
|
|
369
474
|
view
|
370
475
|
virtual
|
371
476
|
returns (
|
477
|
+
NftId productNftId,
|
372
478
|
IInstance instance,
|
373
479
|
InstanceReader instanceReader,
|
374
480
|
IPolicy.PolicyInfo memory policyInfo
|
375
481
|
)
|
376
482
|
{
|
377
|
-
NftId productNftId;
|
378
483
|
(productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
379
484
|
instanceReader = instance.getInstanceReader();
|
380
485
|
|
@@ -410,6 +515,65 @@ contract ClaimService is
|
|
410
515
|
claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
411
516
|
}
|
412
517
|
|
518
|
+
function _processConfirmedClaimByPool(
|
519
|
+
InstanceReader instanceReader,
|
520
|
+
NftId productNftId,
|
521
|
+
NftId policyNftId,
|
522
|
+
ClaimId claimId,
|
523
|
+
Amount amount
|
524
|
+
)
|
525
|
+
internal
|
526
|
+
{
|
527
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
528
|
+
if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
|
529
|
+
address poolAddress = getRegistry().getObjectAddress(poolNftId);
|
530
|
+
IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
|
531
|
+
}
|
532
|
+
}
|
533
|
+
|
534
|
+
|
535
|
+
function _policyHolderClaimConfirmed(
|
536
|
+
NftId policyNftId,
|
537
|
+
ClaimId claimId,
|
538
|
+
Amount confirmedAmount
|
539
|
+
)
|
540
|
+
internal
|
541
|
+
{
|
542
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
543
|
+
if(address(policyHolder) != address(0)) {
|
544
|
+
policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
|
545
|
+
}
|
546
|
+
}
|
547
|
+
|
548
|
+
|
549
|
+
function _policyHolderPayoutExecuted(
|
550
|
+
NftId policyNftId,
|
551
|
+
PayoutId payoutId,
|
552
|
+
address beneficiary,
|
553
|
+
Amount payoutAmount
|
554
|
+
)
|
555
|
+
internal
|
556
|
+
{
|
557
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
558
|
+
if(address(policyHolder) != address(0)) {
|
559
|
+
policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
|
560
|
+
}
|
561
|
+
}
|
562
|
+
|
563
|
+
|
564
|
+
function _getPolicyHolder(NftId policyNftId)
|
565
|
+
internal
|
566
|
+
view
|
567
|
+
returns (IPolicyHolder policyHolder)
|
568
|
+
{
|
569
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
570
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
571
|
+
|
572
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
573
|
+
policyHolder = IPolicyHolder(address(0));
|
574
|
+
}
|
575
|
+
}
|
576
|
+
|
413
577
|
|
414
578
|
function _getDomain() internal pure override returns(ObjectType) {
|
415
579
|
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);
|
@@ -23,17 +23,20 @@ interface IClaimService is
|
|
23
23
|
event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
|
24
24
|
event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
|
25
25
|
event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
|
26
|
+
event LogClaimServiceClaimRevoked(NftId policyNftId, ClaimId claimId);
|
26
27
|
event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
|
27
28
|
|
28
|
-
event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
|
29
|
-
event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
|
29
|
+
event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
|
30
|
+
event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
|
31
|
+
error ErrorClaimServiceBeneficiarySet(NftId policyNftId, PayoutId payoutId, address beneficiary);
|
30
32
|
|
31
33
|
error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
|
32
34
|
error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
|
33
35
|
error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
|
36
|
+
error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
|
34
37
|
error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
|
35
38
|
|
36
|
-
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId,
|
39
|
+
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint24 openPayouts);
|
37
40
|
error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
|
38
41
|
error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
|
39
42
|
|
@@ -47,9 +50,6 @@ interface IClaimService is
|
|
47
50
|
) external returns (ClaimId claimId);
|
48
51
|
|
49
52
|
|
50
|
-
// TODO add claim revoke functionality
|
51
|
-
|
52
|
-
|
53
53
|
/// @dev declines the specified claim
|
54
54
|
/// function can only be called by product, policy needs to match with calling product
|
55
55
|
function decline(
|
@@ -59,6 +59,14 @@ interface IClaimService is
|
|
59
59
|
) external;
|
60
60
|
|
61
61
|
|
62
|
+
/// @dev revokes the specified claim
|
63
|
+
/// function can only be called by product, policy needs to match with calling product
|
64
|
+
function revoke(
|
65
|
+
NftId policyNftId,
|
66
|
+
ClaimId claimId
|
67
|
+
) external;
|
68
|
+
|
69
|
+
|
62
70
|
/// @dev confirms the specified claim and specifies the payout amount
|
63
71
|
/// function can only be called by product, policy needs to match with calling product
|
64
72
|
function confirm(
|
@@ -77,7 +85,8 @@ interface IClaimService is
|
|
77
85
|
) external;
|
78
86
|
|
79
87
|
|
80
|
-
/// @dev
|
88
|
+
/// @dev Creates a new payout for the specified claim.
|
89
|
+
/// The beneficiary is the holder of the policy NFT
|
81
90
|
/// returns the id of the newly created payout, this id is unique for the specified policy
|
82
91
|
/// function can only be called by product, policy needs to match with calling product
|
83
92
|
function createPayout(
|
@@ -90,6 +99,20 @@ interface IClaimService is
|
|
90
99
|
returns (PayoutId payoutId);
|
91
100
|
|
92
101
|
|
102
|
+
/// @dev Creates a new payout for the specified claim and beneficiary.
|
103
|
+
/// returns the id of the newly created payout, this id is unique for the specified policy
|
104
|
+
/// function can only be called by product, policy needs to match with calling product
|
105
|
+
function createPayoutForBeneficiary(
|
106
|
+
NftId policyNftId,
|
107
|
+
ClaimId claimId,
|
108
|
+
Amount amount,
|
109
|
+
address beneficiary,
|
110
|
+
bytes memory data
|
111
|
+
)
|
112
|
+
external
|
113
|
+
returns (PayoutId payoutId);
|
114
|
+
|
115
|
+
|
93
116
|
/// @dev processes the specified payout
|
94
117
|
/// this includes moving the payout token to the beneficiary (default: policy holder)
|
95
118
|
/// function can only be called by product, policy needs to match with calling product
|