@etherisc/gif-next 0.0.2-f1e0c66-773 → 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 +7 -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 +63 -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 +21 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +134 -286
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +84 -120
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +21 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
- 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 +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/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +145 -111
- 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 +437 -124
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
- 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 -218
- 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 +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/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 +47 -232
- 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 +15 -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 +15 -216
- 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 +51 -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 +319 -188
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +130 -94
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +149 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -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 +41 -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 +43 -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 +282 -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 +43 -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 +399 -327
- 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 +115 -267
- 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 +43 -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 +238 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +436 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +261 -143
- 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 +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +117 -215
- 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 +89 -212
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -114
- 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/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +15 -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 +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 +15 -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 +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 +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 +63 -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 +168 -127
- 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/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 +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 +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 +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 +39 -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 +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/Distribution.sol +1 -1
- package/contracts/distribution/DistributionService.sol +32 -33
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionService.sol +9 -5
- 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 +115 -25
- package/contracts/instance/InstanceService.sol +63 -41
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +4 -7
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +2 -1
- package/contracts/oracle/OracleService.sol +11 -8
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +5 -2
- package/contracts/pool/BundleService.sol +166 -46
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -8
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +57 -36
- package/contracts/pool/Pool.sol +59 -34
- package/contracts/pool/PoolService.sol +231 -102
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +50 -29
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +251 -87
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -34
- 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 +379 -192
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +81 -50
- 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 +51 -18
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +328 -197
- package/contracts/registry/RegistryAdmin.sol +134 -51
- package/contracts/registry/RegistryService.sol +55 -48
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +194 -183
- package/contracts/registry/ServiceAuthorizationV3.sol +8 -10
- package/contracts/shared/Component.sol +25 -29
- package/contracts/shared/ComponentService.sol +20 -30
- 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 +7 -4
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +5 -6
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +13 -2
- package/contracts/shared/NftOwnable.sol +5 -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 +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- 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 +10 -14
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- 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 +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- 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 +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/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -12,14 +12,14 @@ contract ApplicationServiceManager 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
|
ApplicationService svc = new ApplicationService{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);
|
@@ -1,21 +1,25 @@
|
|
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
24
|
|
21
25
|
|
@@ -24,6 +28,7 @@ contract ClaimService is
|
|
24
28
|
IClaimService
|
25
29
|
{
|
26
30
|
|
31
|
+
IPolicyService internal _policyService;
|
27
32
|
IPoolService internal _poolService;
|
28
33
|
|
29
34
|
function _initialize(
|
@@ -35,16 +40,16 @@ contract ClaimService is
|
|
35
40
|
initializer()
|
36
41
|
{
|
37
42
|
(
|
38
|
-
address registryAddress
|
39
|
-
//address managerAddress
|
43
|
+
address registryAddress,
|
40
44
|
address authority
|
41
|
-
) = abi.decode(data, (address, address
|
45
|
+
) = abi.decode(data, (address, address));
|
42
46
|
|
43
|
-
|
47
|
+
_initializeService(registryAddress, authority, owner);
|
44
48
|
|
49
|
+
_policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
|
45
50
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
46
51
|
|
47
|
-
|
52
|
+
_registerInterface(type(IClaimService).interfaceId);
|
48
53
|
}
|
49
54
|
|
50
55
|
function submit(
|
@@ -54,9 +59,11 @@ contract ClaimService is
|
|
54
59
|
)
|
55
60
|
external
|
56
61
|
virtual
|
62
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
57
63
|
returns (ClaimId claimId)
|
58
64
|
{
|
59
65
|
(
|
66
|
+
,
|
60
67
|
IInstance instance,
|
61
68
|
InstanceReader instanceReader,
|
62
69
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -67,6 +74,7 @@ contract ClaimService is
|
|
67
74
|
revert ErrorClaimServicePolicyNotOpen(policyNftId);
|
68
75
|
}
|
69
76
|
|
77
|
+
// TODO check claim amount > 0
|
70
78
|
// check policy including this claim is still within sum insured
|
71
79
|
if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
|
72
80
|
revert ErrorClaimServiceClaimExceedsSumInsured(
|
@@ -80,14 +88,14 @@ contract ClaimService is
|
|
80
88
|
instance.getInstanceStore().createClaim(
|
81
89
|
policyNftId,
|
82
90
|
claimId,
|
83
|
-
IPolicy.ClaimInfo(
|
84
|
-
claimAmount,
|
85
|
-
AmountLib.zero(),
|
86
|
-
0,
|
87
|
-
0,
|
88
|
-
claimData,
|
89
|
-
"",
|
90
|
-
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()}));
|
91
99
|
|
92
100
|
// update and save policy info with instance
|
93
101
|
policyInfo.claimsCount += 1;
|
@@ -107,13 +115,17 @@ contract ClaimService is
|
|
107
115
|
)
|
108
116
|
external
|
109
117
|
virtual
|
118
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
110
119
|
{
|
111
120
|
(
|
121
|
+
NftId productNftId,
|
112
122
|
IInstance instance,
|
113
123
|
InstanceReader instanceReader,
|
114
124
|
IPolicy.PolicyInfo memory policyInfo
|
115
125
|
) = _verifyCallerWithPolicy(policyNftId);
|
116
126
|
|
127
|
+
// TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
|
128
|
+
|
117
129
|
// check/update claim info
|
118
130
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
119
131
|
claimInfo.claimAmount = confirmedAmount;
|
@@ -124,9 +136,21 @@ contract ClaimService is
|
|
124
136
|
policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
|
125
137
|
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
126
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
|
+
|
127
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);
|
128
151
|
}
|
129
152
|
|
153
|
+
|
130
154
|
function decline(
|
131
155
|
NftId policyNftId,
|
132
156
|
ClaimId claimId,
|
@@ -134,8 +158,10 @@ contract ClaimService is
|
|
134
158
|
)
|
135
159
|
external
|
136
160
|
virtual
|
161
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
137
162
|
{
|
138
163
|
(
|
164
|
+
,
|
139
165
|
IInstance instance,
|
140
166
|
InstanceReader instanceReader,
|
141
167
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -154,14 +180,46 @@ contract ClaimService is
|
|
154
180
|
emit LogClaimServiceClaimDeclined(policyNftId, claimId);
|
155
181
|
}
|
156
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
|
+
|
157
213
|
function close(
|
158
214
|
NftId policyNftId,
|
159
215
|
ClaimId claimId
|
160
216
|
)
|
161
217
|
external
|
162
218
|
virtual
|
219
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
163
220
|
{
|
164
221
|
(
|
222
|
+
,
|
165
223
|
IInstance instance,
|
166
224
|
InstanceReader instanceReader,
|
167
225
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -192,51 +250,48 @@ contract ClaimService is
|
|
192
250
|
}
|
193
251
|
|
194
252
|
|
195
|
-
function
|
253
|
+
function createPayoutForBeneficiary(
|
196
254
|
NftId policyNftId,
|
197
255
|
ClaimId claimId,
|
198
256
|
Amount amount,
|
257
|
+
address beneficiary,
|
199
258
|
bytes memory data
|
200
259
|
)
|
201
260
|
external
|
261
|
+
virtual
|
262
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
202
263
|
returns (PayoutId payoutId)
|
203
264
|
{
|
204
|
-
(
|
205
|
-
|
206
|
-
|
207
|
-
IPolicy.PolicyInfo memory policyInfo
|
208
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
209
|
-
|
210
|
-
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
211
|
-
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
212
|
-
|
213
|
-
// TODO add checks
|
214
|
-
// claim needs to be open
|
215
|
-
// claim.paidAmount + amount <= claim.claimAmount
|
265
|
+
if (beneficiary == address(0)) {
|
266
|
+
revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
|
267
|
+
}
|
216
268
|
|
217
|
-
|
218
|
-
// create payout info with instance
|
219
|
-
uint8 claimNo = claimInfo.payoutsCount + 1;
|
220
|
-
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
221
|
-
instance.getInstanceStore().createPayout(
|
269
|
+
return _createPayout(
|
222
270
|
policyNftId,
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
TimestampLib.zero()));
|
229
|
-
|
230
|
-
// update and save claim info with instance
|
231
|
-
claimInfo.payoutsCount += 1;
|
232
|
-
claimInfo.openPayoutsCount += 1;
|
233
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
271
|
+
claimId,
|
272
|
+
amount,
|
273
|
+
beneficiary,
|
274
|
+
data);
|
275
|
+
}
|
234
276
|
|
235
|
-
// update and save policy info with instance
|
236
|
-
policyInfo.payoutAmount.add(amount);
|
237
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
238
277
|
|
239
|
-
|
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);
|
240
295
|
}
|
241
296
|
|
242
297
|
|
@@ -246,8 +301,10 @@ contract ClaimService is
|
|
246
301
|
)
|
247
302
|
external
|
248
303
|
virtual
|
304
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
249
305
|
{
|
250
306
|
(
|
307
|
+
,
|
251
308
|
IInstance instance,
|
252
309
|
InstanceReader instanceReader,
|
253
310
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -260,7 +317,6 @@ contract ClaimService is
|
|
260
317
|
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
261
318
|
instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
262
319
|
|
263
|
-
// TODO update and save claim info with instance
|
264
320
|
ClaimId claimId = payoutId.toClaimId();
|
265
321
|
Amount payoutAmount = payoutInfo.amount;
|
266
322
|
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
@@ -270,7 +326,7 @@ contract ClaimService is
|
|
270
326
|
// check if this payout is closing the linked claim
|
271
327
|
// update claim and policy info accordingly
|
272
328
|
if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
|
273
|
-
claimInfo.closedAt
|
329
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
274
330
|
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
275
331
|
|
276
332
|
policyInfo.openClaimsCount -= 1;
|
@@ -283,30 +339,97 @@ contract ClaimService is
|
|
283
339
|
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
284
340
|
|
285
341
|
// inform pool about payout
|
286
|
-
_poolService.
|
342
|
+
_poolService.processPayout(
|
287
343
|
instance,
|
288
344
|
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
289
345
|
policyNftId,
|
290
346
|
policyInfo,
|
291
347
|
payoutAmount);
|
292
|
-
|
348
|
+
|
293
349
|
// transfer payout token and fee
|
294
350
|
(
|
295
351
|
Amount netPayoutAmount,
|
352
|
+
Amount processingFeeAmount,
|
296
353
|
address beneficiary
|
297
|
-
) =
|
354
|
+
) = _calculatePayoutAmount(
|
298
355
|
instanceReader,
|
299
356
|
policyNftId,
|
300
357
|
policyInfo,
|
301
358
|
payoutInfo);
|
302
359
|
|
303
|
-
|
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
|
+
}
|
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);
|
304
397
|
|
305
|
-
|
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);
|
306
429
|
}
|
307
430
|
|
308
|
-
|
309
|
-
function
|
431
|
+
|
432
|
+
function _calculatePayoutAmount(
|
310
433
|
InstanceReader instanceReader,
|
311
434
|
NftId policyNftId,
|
312
435
|
IPolicy.PolicyInfo memory policyInfo,
|
@@ -315,6 +438,7 @@ contract ClaimService is
|
|
315
438
|
internal
|
316
439
|
returns (
|
317
440
|
Amount netPayoutAmount,
|
441
|
+
Amount processingFeeAmount,
|
318
442
|
address beneficiary
|
319
443
|
)
|
320
444
|
{
|
@@ -328,39 +452,20 @@ contract ClaimService is
|
|
328
452
|
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
329
453
|
|
330
454
|
netPayoutAmount = payoutAmount;
|
331
|
-
|
455
|
+
|
456
|
+
if (payoutInfo.beneficiary == address(0)) {
|
457
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
458
|
+
} else {
|
459
|
+
beneficiary = payoutInfo.beneficiary;
|
460
|
+
}
|
332
461
|
|
333
462
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
334
463
|
if(FeeLib.gtz(productInfo.processingFee)) {
|
335
|
-
// TODO calculate net payout and processing fees
|
336
|
-
// TODO transfer processing fees to product wallet
|
337
|
-
// TODO inform product to update fee book keeping
|
464
|
+
// TODO calculate and set net payout and processing fees
|
338
465
|
}
|
339
|
-
|
340
|
-
// TODO: centralize token handling (issue #471)
|
341
|
-
poolInfo.tokenHandler.transfer(
|
342
|
-
poolInfo.wallet,
|
343
|
-
beneficiary,
|
344
|
-
netPayoutAmount);
|
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,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
|