@etherisc/gif-next 0.0.2-f18fb8b-243 → 0.0.2-f1f3b2c-994
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +81 -63
- 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 +48 -30
- 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/IServiceAuthorization.sol/IServiceAuthorization.json +21 -2
- 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 +72 -9
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -248
- 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 +64 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +64 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -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 +1512 -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 +1999 -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 +1432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +17 -106
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +146 -112
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -129
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +44 -151
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +285 -228
- 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 +45 -4
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -229
- 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 +45 -31
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +42 -213
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +94 -274
- 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 +458 -161
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +154 -86
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +229 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +87 -88
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +360 -171
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +84 -270
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +492 -333
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +62 -242
- 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 +263 -181
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +104 -100
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +147 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +295 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +62 -57
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +406 -321
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +62 -242
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -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 +274 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- 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 +493 -80
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +263 -145
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +46 -5
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1061 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +70 -12
- 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 +15 -205
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -161
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -95
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -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 +15 -20
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +34 -31
- 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/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/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +34 -216
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +41 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +41 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -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 +8 -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 +5 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- 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 +42 -21
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +100 -256
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +45 -4
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
- 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 +31 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +176 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -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 +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +7 -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 +50 -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 +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +31 -24
- package/contracts/authorization/Authorization.sol +5 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -2
- package/contracts/authorization/IServiceAuthorization.sol +4 -2
- package/contracts/authorization/ServiceAuthorization.sol +27 -11
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +23 -11
- package/contracts/distribution/DistributionService.sol +76 -42
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +18 -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/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +11 -34
- package/contracts/instance/IInstanceService.sol +5 -5
- package/contracts/instance/Instance.sol +13 -38
- package/contracts/instance/InstanceAdmin.sol +31 -9
- package/contracts/instance/InstanceAuthorizationV3.sol +16 -14
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +71 -49
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +4 -8
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +17 -7
- package/contracts/oracle/OracleService.sol +11 -8
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +11 -2
- package/contracts/pool/BundleService.sol +221 -56
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +42 -5
- package/contracts/pool/IPoolComponent.sol +24 -8
- package/contracts/pool/IPoolService.sol +57 -36
- package/contracts/pool/Pool.sol +72 -30
- package/contracts/pool/PoolService.sol +240 -129
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +62 -65
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +254 -115
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +18 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +404 -193
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +90 -50
- package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +65 -19
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +340 -211
- package/contracts/registry/RegistryAdmin.sol +155 -72
- package/contracts/registry/RegistryService.sol +59 -66
- package/contracts/registry/RegistryServiceManager.sol +4 -4
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +496 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +13 -15
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +38 -43
- package/contracts/shared/ComponentService.sol +88 -28
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +7 -4
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +26 -6
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +13 -2
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +19 -15
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -3
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +27 -42
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +19 -18
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +33 -10
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- 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/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- 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/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -487
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
| @@ -1,48 +1,26 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IRisk} from "../instance/module/IRisk.sol";
         | 
| 5 | 
            -
            import {IService} from "./IApplicationService.sol";
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 8 | 
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 9 | 
            -
            import {IProductComponent} from "./IProductComponent.sol";
         | 
| 10 | 
            -
            import {Product} from "./Product.sol";
         | 
| 11 | 
            -
            import {IPoolComponent} from "../pool/IPoolComponent.sol";
         | 
| 12 | 
            -
            import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
         | 
| 13 | 
            -
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 14 | 
            -
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 15 | 
            -
            import {IRisk} from "../instance/module/IRisk.sol";
         | 
| 16 | 
            -
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 17 | 
            -
            import {IProductService} from "./IProductService.sol";
         | 
| 18 | 
            -
             | 
| 19 | 
            -
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 20 | 
            -
             | 
| 21 | 
            -
            import {IVersionable} from "../shared/IVersionable.sol";
         | 
| 22 | 
            -
            import {Versionable} from "../shared/Versionable.sol";
         | 
| 23 | 
            -
             | 
| 24 4 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 25 | 
            -
            import { | 
| 26 | 
            -
            import { | 
| 27 | 
            -
            import { | 
| 28 | 
            -
            import { | 
| 29 | 
            -
            import { | 
| 30 | 
            -
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 31 | 
            -
            import {Fee, FeeLib} from "../type/Fee.sol";
         | 
| 32 | 
            -
            import {ReferralId} from "../type/Referral.sol";
         | 
| 33 | 
            -
            import {RiskId} from "../type/RiskId.sol";
         | 
| 5 | 
            +
            import {TimestampLib} from "../type/Timestamp.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";
         | 
| 8 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 9 | 
            +
            import {FeeLib} from "../type/Fee.sol";
         | 
| 34 10 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 35 11 | 
             
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         | 
| 36 12 | 
             
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         | 
| 37 | 
            -
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 38 | 
            -
             | 
| 39 13 | 
             
            import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
         | 
| 14 | 
            +
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 40 15 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 41 | 
            -
            import {IBundleService} from "../pool/IBundleService.sol";
         | 
| 42 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";
         | 
| 43 23 | 
             
            import {IPoolService} from "../pool/IPoolService.sol";
         | 
| 44 | 
            -
            import {IService} from "../shared/IService.sol";
         | 
| 45 | 
            -
            import {Service} from "../shared/Service.sol";
         | 
| 46 24 |  | 
| 47 25 |  | 
| 48 26 | 
             
            contract ClaimService is 
         | 
| @@ -50,6 +28,7 @@ contract ClaimService is | |
| 50 28 | 
             
                IClaimService
         | 
| 51 29 | 
             
            {
         | 
| 52 30 |  | 
| 31 | 
            +
                IPolicyService internal _policyService;
         | 
| 53 32 | 
             
                IPoolService internal _poolService;
         | 
| 54 33 |  | 
| 55 34 | 
             
                function _initialize(
         | 
| @@ -61,16 +40,16 @@ contract ClaimService is | |
| 61 40 | 
             
                    initializer()
         | 
| 62 41 | 
             
                {
         | 
| 63 42 | 
             
                    (
         | 
| 64 | 
            -
                        address registryAddress | 
| 65 | 
            -
                        //address managerAddress
         | 
| 43 | 
            +
                        address registryAddress,
         | 
| 66 44 | 
             
                        address authority
         | 
| 67 | 
            -
                    ) = abi.decode(data, (address, address | 
| 45 | 
            +
                    ) = abi.decode(data, (address, address));
         | 
| 68 46 |  | 
| 69 | 
            -
                     | 
| 47 | 
            +
                    _initializeService(registryAddress, authority, owner);
         | 
| 70 48 |  | 
| 49 | 
            +
                    _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
         | 
| 71 50 | 
             
                    _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
         | 
| 72 51 |  | 
| 73 | 
            -
                     | 
| 52 | 
            +
                    _registerInterface(type(IClaimService).interfaceId);
         | 
| 74 53 | 
             
                }
         | 
| 75 54 |  | 
| 76 55 | 
             
                function submit(
         | 
| @@ -80,9 +59,11 @@ contract ClaimService is | |
| 80 59 | 
             
                )
         | 
| 81 60 | 
             
                    external
         | 
| 82 61 | 
             
                    virtual
         | 
| 62 | 
            +
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 83 63 | 
             
                    returns (ClaimId claimId)
         | 
| 84 64 | 
             
                {
         | 
| 85 65 | 
             
                    (
         | 
| 66 | 
            +
                        ,
         | 
| 86 67 | 
             
                        IInstance instance,
         | 
| 87 68 | 
             
                        InstanceReader instanceReader,
         | 
| 88 69 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| @@ -93,6 +74,7 @@ contract ClaimService is | |
| 93 74 | 
             
                        revert ErrorClaimServicePolicyNotOpen(policyNftId);
         | 
| 94 75 | 
             
                    }
         | 
| 95 76 |  | 
| 77 | 
            +
                    // TODO check claim amount > 0
         | 
| 96 78 | 
             
                    // check policy including this claim is still within sum insured
         | 
| 97 79 | 
             
                    if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
         | 
| 98 80 | 
             
                        revert ErrorClaimServiceClaimExceedsSumInsured(
         | 
| @@ -106,14 +88,14 @@ contract ClaimService is | |
| 106 88 | 
             
                    instance.getInstanceStore().createClaim(
         | 
| 107 89 | 
             
                        policyNftId, 
         | 
| 108 90 | 
             
                        claimId, 
         | 
| 109 | 
            -
                        IPolicy.ClaimInfo(
         | 
| 110 | 
            -
                            claimAmount,
         | 
| 111 | 
            -
                            AmountLib.zero(), | 
| 112 | 
            -
                            0, | 
| 113 | 
            -
                            0, | 
| 114 | 
            -
                            claimData, | 
| 115 | 
            -
                            "", | 
| 116 | 
            -
                            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()}));
         | 
| 117 99 |  | 
| 118 100 | 
             
                    // update and save policy info with instance
         | 
| 119 101 | 
             
                    policyInfo.claimsCount += 1;
         | 
| @@ -133,13 +115,17 @@ contract ClaimService is | |
| 133 115 | 
             
                )
         | 
| 134 116 | 
             
                    external
         | 
| 135 117 | 
             
                    virtual
         | 
| 118 | 
            +
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 136 119 | 
             
                {
         | 
| 137 120 | 
             
                    (
         | 
| 121 | 
            +
                        NftId productNftId,
         | 
| 138 122 | 
             
                        IInstance instance,
         | 
| 139 123 | 
             
                        InstanceReader instanceReader,
         | 
| 140 124 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 141 125 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 142 126 |  | 
| 127 | 
            +
                    // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
         | 
| 128 | 
            +
             | 
| 143 129 | 
             
                    // check/update claim info
         | 
| 144 130 | 
             
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 145 131 | 
             
                    claimInfo.claimAmount = confirmedAmount;
         | 
| @@ -150,9 +136,21 @@ contract ClaimService is | |
| 150 136 | 
             
                    policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
         | 
| 151 137 | 
             
                    instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 152 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 | 
            +
             | 
| 153 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);
         | 
| 154 151 | 
             
                }
         | 
| 155 152 |  | 
| 153 | 
            +
             | 
| 156 154 | 
             
                function decline(
         | 
| 157 155 | 
             
                    NftId policyNftId, 
         | 
| 158 156 | 
             
                    ClaimId claimId,
         | 
| @@ -160,8 +158,10 @@ contract ClaimService is | |
| 160 158 | 
             
                )
         | 
| 161 159 | 
             
                    external
         | 
| 162 160 | 
             
                    virtual
         | 
| 161 | 
            +
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 163 162 | 
             
                {
         | 
| 164 163 | 
             
                    (
         | 
| 164 | 
            +
                        ,
         | 
| 165 165 | 
             
                        IInstance instance,
         | 
| 166 166 | 
             
                        InstanceReader instanceReader,
         | 
| 167 167 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| @@ -180,14 +180,46 @@ contract ClaimService is | |
| 180 180 | 
             
                    emit LogClaimServiceClaimDeclined(policyNftId, claimId);
         | 
| 181 181 | 
             
                }
         | 
| 182 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 | 
            +
             | 
| 183 213 | 
             
                function close(
         | 
| 184 214 | 
             
                    NftId policyNftId, 
         | 
| 185 215 | 
             
                    ClaimId claimId
         | 
| 186 216 | 
             
                )
         | 
| 187 217 | 
             
                    external
         | 
| 188 218 | 
             
                    virtual
         | 
| 219 | 
            +
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 189 220 | 
             
                {
         | 
| 190 221 | 
             
                    (
         | 
| 222 | 
            +
                        ,
         | 
| 191 223 | 
             
                        IInstance instance,
         | 
| 192 224 | 
             
                        InstanceReader instanceReader,
         | 
| 193 225 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| @@ -218,51 +250,48 @@ contract ClaimService is | |
| 218 250 | 
             
                }
         | 
| 219 251 |  | 
| 220 252 |  | 
| 221 | 
            -
                function  | 
| 253 | 
            +
                function createPayoutForBeneficiary(
         | 
| 222 254 | 
             
                    NftId policyNftId, 
         | 
| 223 255 | 
             
                    ClaimId claimId,
         | 
| 224 256 | 
             
                    Amount amount,
         | 
| 257 | 
            +
                    address beneficiary,
         | 
| 225 258 | 
             
                    bytes memory data
         | 
| 226 259 | 
             
                )
         | 
| 227 260 | 
             
                    external
         | 
| 261 | 
            +
                    virtual
         | 
| 262 | 
            +
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 228 263 | 
             
                    returns (PayoutId payoutId)
         | 
| 229 264 | 
             
                {
         | 
| 230 | 
            -
                    (
         | 
| 231 | 
            -
                         | 
| 232 | 
            -
             | 
| 233 | 
            -
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 234 | 
            -
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 235 | 
            -
             | 
| 236 | 
            -
                    IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 237 | 
            -
                    StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
         | 
| 238 | 
            -
             | 
| 239 | 
            -
                    // TODO add checks
         | 
| 240 | 
            -
                    // claim needs to be open
         | 
| 241 | 
            -
                    // claim.paidAmount + amount <= claim.claimAmount
         | 
| 265 | 
            +
                    if (beneficiary == address(0)) {
         | 
| 266 | 
            +
                        revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
         | 
| 267 | 
            +
                    }
         | 
| 242 268 |  | 
| 243 | 
            -
                     | 
| 244 | 
            -
                    // create payout info with instance
         | 
| 245 | 
            -
                    uint8 claimNo = claimInfo.payoutsCount + 1;
         | 
| 246 | 
            -
                    payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
         | 
| 247 | 
            -
                    instance.getInstanceStore().createPayout(
         | 
| 269 | 
            +
                    return _createPayout(
         | 
| 248 270 | 
             
                        policyNftId, 
         | 
| 249 | 
            -
                         | 
| 250 | 
            -
                         | 
| 251 | 
            -
             | 
| 252 | 
            -
             | 
| 253 | 
            -
             | 
| 254 | 
            -
                            TimestampLib.zero()));
         | 
| 255 | 
            -
             | 
| 256 | 
            -
                    // update and save claim info with instance
         | 
| 257 | 
            -
                    claimInfo.payoutsCount += 1;
         | 
| 258 | 
            -
                    claimInfo.openPayoutsCount += 1;
         | 
| 259 | 
            -
                    instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
         | 
| 271 | 
            +
                        claimId, 
         | 
| 272 | 
            +
                        amount, 
         | 
| 273 | 
            +
                        beneficiary,
         | 
| 274 | 
            +
                        data);
         | 
| 275 | 
            +
                }
         | 
| 260 276 |  | 
| 261 | 
            -
                    // update and save policy info with instance
         | 
| 262 | 
            -
                    policyInfo.payoutAmount.add(amount);
         | 
| 263 | 
            -
                    instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 264 277 |  | 
| 265 | 
            -
             | 
| 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);
         | 
| 266 295 | 
             
                }
         | 
| 267 296 |  | 
| 268 297 |  | 
| @@ -272,8 +301,10 @@ contract ClaimService is | |
| 272 301 | 
             
                )
         | 
| 273 302 | 
             
                    external
         | 
| 274 303 | 
             
                    virtual
         | 
| 304 | 
            +
                    // nonReentrant() // prevents creating a reinsurance payout in a single tx
         | 
| 275 305 | 
             
                {
         | 
| 276 306 | 
             
                    (
         | 
| 307 | 
            +
                        ,
         | 
| 277 308 | 
             
                        IInstance instance,
         | 
| 278 309 | 
             
                        InstanceReader instanceReader,
         | 
| 279 310 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| @@ -286,7 +317,6 @@ contract ClaimService is | |
| 286 317 | 
             
                    payoutInfo.paidAt = TimestampLib.blockTimestamp();
         | 
| 287 318 | 
             
                    instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
         | 
| 288 319 |  | 
| 289 | 
            -
                    // TODO update and save claim info with instance
         | 
| 290 320 | 
             
                    ClaimId claimId = payoutId.toClaimId();
         | 
| 291 321 | 
             
                    Amount payoutAmount = payoutInfo.amount;
         | 
| 292 322 | 
             
                    IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| @@ -296,7 +326,7 @@ contract ClaimService is | |
| 296 326 | 
             
                    // check if this payout is closing the linked claim
         | 
| 297 327 | 
             
                    // update claim and policy info accordingly
         | 
| 298 328 | 
             
                    if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
         | 
| 299 | 
            -
                        claimInfo.closedAt  | 
| 329 | 
            +
                        claimInfo.closedAt = TimestampLib.blockTimestamp();
         | 
| 300 330 | 
             
                        instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
         | 
| 301 331 |  | 
| 302 332 | 
             
                        policyInfo.openClaimsCount -= 1;
         | 
| @@ -309,30 +339,97 @@ contract ClaimService is | |
| 309 339 | 
             
                    instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 310 340 |  | 
| 311 341 | 
             
                    // inform pool about payout
         | 
| 312 | 
            -
                    _poolService. | 
| 342 | 
            +
                    _poolService.processPayout(
         | 
| 313 343 | 
             
                        instance, 
         | 
| 314 344 | 
             
                        address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
         | 
| 315 345 | 
             
                        policyNftId, 
         | 
| 316 346 | 
             
                        policyInfo, 
         | 
| 317 347 | 
             
                        payoutAmount);
         | 
| 318 | 
            -
             | 
| 348 | 
            +
                    
         | 
| 319 349 | 
             
                    // transfer payout token and fee
         | 
| 320 350 | 
             
                    (
         | 
| 321 351 | 
             
                        Amount netPayoutAmount,
         | 
| 352 | 
            +
                        Amount processingFeeAmount,
         | 
| 322 353 | 
             
                        address beneficiary
         | 
| 323 | 
            -
                    ) =  | 
| 354 | 
            +
                    ) = _calculatePayoutAmount(
         | 
| 324 355 | 
             
                        instanceReader,
         | 
| 325 356 | 
             
                        policyNftId,
         | 
| 326 357 | 
             
                        policyInfo,
         | 
| 327 358 | 
             
                        payoutInfo);
         | 
| 328 359 |  | 
| 329 | 
            -
                     | 
| 360 | 
            +
                    emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
         | 
| 361 | 
            +
             | 
| 362 | 
            +
                    {
         | 
| 363 | 
            +
                        NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
         | 
| 364 | 
            +
                        IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
         | 
| 365 | 
            +
                        poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
         | 
| 366 | 
            +
             | 
| 367 | 
            +
                        // TODO add 2nd token tx if processingFeeAmount > 0
         | 
| 368 | 
            +
                    }
         | 
| 330 369 |  | 
| 331 | 
            -
                     | 
| 370 | 
            +
                    // callback to policy holder if applicable
         | 
| 371 | 
            +
                    _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
         | 
| 332 372 | 
             
                }
         | 
| 333 373 |  | 
| 334 | 
            -
                //  | 
| 335 | 
            -
             | 
| 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);
         | 
| 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);
         | 
| 429 | 
            +
                }
         | 
| 430 | 
            +
             | 
| 431 | 
            +
             | 
| 432 | 
            +
                function _calculatePayoutAmount(
         | 
| 336 433 | 
             
                    InstanceReader instanceReader,
         | 
| 337 434 | 
             
                    NftId policyNftId,
         | 
| 338 435 | 
             
                    IPolicy.PolicyInfo memory policyInfo,
         | 
| @@ -341,6 +438,7 @@ contract ClaimService is | |
| 341 438 | 
             
                    internal
         | 
| 342 439 | 
             
                    returns (
         | 
| 343 440 | 
             
                        Amount netPayoutAmount,
         | 
| 441 | 
            +
                        Amount processingFeeAmount,
         | 
| 344 442 | 
             
                        address beneficiary
         | 
| 345 443 | 
             
                    )
         | 
| 346 444 | 
             
                {
         | 
| @@ -354,38 +452,20 @@ contract ClaimService is | |
| 354 452 | 
             
                        IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
         | 
| 355 453 |  | 
| 356 454 | 
             
                        netPayoutAmount = payoutAmount;
         | 
| 357 | 
            -
             | 
| 455 | 
            +
             | 
| 456 | 
            +
                        if (payoutInfo.beneficiary == address(0)) {
         | 
| 457 | 
            +
                            beneficiary = getRegistry().ownerOf(policyNftId);
         | 
| 458 | 
            +
                        } else { 
         | 
| 459 | 
            +
                            beneficiary = payoutInfo.beneficiary;
         | 
| 460 | 
            +
                        }
         | 
| 358 461 |  | 
| 359 462 | 
             
                        IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
         | 
| 360 463 | 
             
                        if(FeeLib.gtz(productInfo.processingFee)) {
         | 
| 361 | 
            -
                            // TODO calculate net payout and processing fees
         | 
| 362 | 
            -
                            // TODO transfer processing fees to product wallet
         | 
| 363 | 
            -
                            // TODO inform product to update fee book keeping
         | 
| 464 | 
            +
                            // TODO calculate and set net payout and processing fees
         | 
| 364 465 | 
             
                        }
         | 
| 365 | 
            -
             | 
| 366 | 
            -
                        poolInfo.tokenHandler.transfer(
         | 
| 367 | 
            -
                            poolInfo.wallet,
         | 
| 368 | 
            -
                            beneficiary,
         | 
| 369 | 
            -
                            netPayoutAmount);
         | 
| 370 466 | 
             
                    }
         | 
| 371 467 | 
             
                }
         | 
| 372 468 |  | 
| 373 | 
            -
                // internal functions
         | 
| 374 | 
            -
             | 
| 375 | 
            -
                function _getBeneficiary(
         | 
| 376 | 
            -
                    NftId policyNftId,
         | 
| 377 | 
            -
                    ClaimId claimId
         | 
| 378 | 
            -
                )
         | 
| 379 | 
            -
                    internal
         | 
| 380 | 
            -
                    returns (address beneficiary)
         | 
| 381 | 
            -
                {
         | 
| 382 | 
            -
                    // TODO check if owner is IPolicyHolder
         | 
| 383 | 
            -
                    // if so, obtain beneficiary from this contract
         | 
| 384 | 
            -
             | 
| 385 | 
            -
                    // default beneficiary is policy nft owner
         | 
| 386 | 
            -
                    beneficiary = getRegistry().ownerOf(policyNftId);
         | 
| 387 | 
            -
                }
         | 
| 388 | 
            -
             | 
| 389 469 |  | 
| 390 470 | 
             
                function _verifyCallerWithPolicy(
         | 
| 391 471 | 
             
                    NftId policyNftId
         | 
| @@ -394,12 +474,12 @@ contract ClaimService is | |
| 394 474 | 
             
                    view
         | 
| 395 475 | 
             
                    virtual
         | 
| 396 476 | 
             
                    returns (
         | 
| 477 | 
            +
                        NftId productNftId,
         | 
| 397 478 | 
             
                        IInstance instance,
         | 
| 398 479 | 
             
                        InstanceReader instanceReader,
         | 
| 399 480 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 400 481 | 
             
                    )
         | 
| 401 482 | 
             
                {
         | 
| 402 | 
            -
                    NftId productNftId;
         | 
| 403 483 | 
             
                    (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
         | 
| 404 484 | 
             
                    instanceReader = instance.getInstanceReader();
         | 
| 405 485 |  | 
| @@ -435,6 +515,65 @@ contract ClaimService is | |
| 435 515 | 
             
                    claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 436 516 | 
             
                }
         | 
| 437 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 | 
            +
             | 
| 438 577 |  | 
| 439 578 | 
             
                function _getDomain() internal pure override returns(ObjectType) {
         | 
| 440 579 | 
             
                    return CLAIM();
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IVersionable} from "../ | 
| 5 | 
            -
            import {ProxyManager} from "../ | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 6 6 | 
             
            import {ClaimService} from "./ClaimService.sol";
         | 
| 7 7 |  | 
| 8 8 | 
             
            contract ClaimServiceManager is ProxyManager {
         | 
| @@ -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,16 +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);
         | 
| 37 | 
            +
                error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
         | 
| 34 38 |  | 
| 35 | 
            -
                error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId,  | 
| 39 | 
            +
                error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint24 openPayouts);
         | 
| 36 40 | 
             
                error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
         | 
| 37 41 | 
             
                error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
         | 
| 38 42 |  | 
| @@ -46,9 +50,6 @@ interface IClaimService is | |
| 46 50 | 
             
                ) external returns (ClaimId claimId);
         | 
| 47 51 |  | 
| 48 52 |  | 
| 49 | 
            -
                // TODO add claim revoke functionality
         | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 53 | 
             
                /// @dev declines the specified claim
         | 
| 53 54 | 
             
                /// function can only be called by product, policy needs to match with calling product
         | 
| 54 55 | 
             
                function decline(
         | 
| @@ -58,6 +59,14 @@ interface IClaimService is | |
| 58 59 | 
             
                ) external;
         | 
| 59 60 |  | 
| 60 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 | 
            +
             | 
| 61 70 | 
             
                /// @dev confirms the specified claim and specifies the payout amount
         | 
| 62 71 | 
             
                /// function can only be called by product, policy needs to match with calling product
         | 
| 63 72 | 
             
                function confirm(
         | 
| @@ -76,7 +85,8 @@ interface IClaimService is | |
| 76 85 | 
             
                ) external;
         | 
| 77 86 |  | 
| 78 87 |  | 
| 79 | 
            -
                /// @dev  | 
| 88 | 
            +
                /// @dev Creates a new payout for the specified claim.
         | 
| 89 | 
            +
                /// The beneficiary is the holder of the policy NFT
         | 
| 80 90 | 
             
                /// returns the id of the newly created payout, this id is unique for the specified policy
         | 
| 81 91 | 
             
                /// function can only be called by product, policy needs to match with calling product
         | 
| 82 92 | 
             
                function createPayout(
         | 
| @@ -89,6 +99,20 @@ interface IClaimService is | |
| 89 99 | 
             
                    returns (PayoutId payoutId);
         | 
| 90 100 |  | 
| 91 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 | 
            +
             | 
| 92 116 | 
             
                /// @dev processes the specified payout
         | 
| 93 117 | 
             
                /// this includes moving the payout token to the beneficiary (default: policy holder)
         | 
| 94 118 | 
             
                /// function can only be called by product, policy needs to match with calling product
         |