@etherisc/gif-next 0.0.2-de7c770-422 → 0.0.2-df73b56-462
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +26 -45
- 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/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +2 -2
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +9 -4
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +92 -61
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +60 -32
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +33 -28
- 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 +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +88 -91
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +70 -60
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +11 -6
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +69 -38
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +32 -12
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- 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/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +2 -2
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +9 -4
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +68 -37
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +28 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +15 -10
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -59
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +28 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +28 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +35 -30
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +71 -40
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +17 -12
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +65 -34
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +5 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +91 -70
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +97 -58
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +82 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +5 -0
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +167 -48
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +92 -45
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +39 -34
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +76 -45
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +5 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +11 -6
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +62 -31
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +108 -111
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +9 -4
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +60 -29
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
- 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/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +39 -34
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +97 -56
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -0
- 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/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -5
- 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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +17 -7
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +5 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2 -2
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +78 -42
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +11 -6
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +64 -33
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- 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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- 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/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- 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 +47 -27
- 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 +24 -21
- package/contracts/authorization/IAccessAdmin.sol +0 -1
- package/contracts/distribution/DistributionService.sol +6 -6
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/instance/InstanceService.sol +2 -3
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/module/IComponents.sol +3 -1
- package/contracts/oracle/OracleService.sol +6 -4
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BundleService.sol +6 -6
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/Pool.sol +26 -10
- package/contracts/pool/PoolService.sol +2 -3
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +3 -4
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/ClaimService.sol +147 -61
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IPolicyService.sol +7 -3
- package/contracts/product/PolicyService.sol +93 -20
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +2 -3
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +1 -0
- package/contracts/product/RiskService.sol +2 -3
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/shared/ComponentService.sol +5 -5
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IPolicyHolder.sol +12 -13
- package/contracts/shared/PolicyHolder.sol +7 -5
- package/contracts/shared/Service.sol +12 -7
- package/contracts/staking/Staking.sol +1 -1
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/upgradeability/ProxyManager.sol +67 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +1 -1
@@ -24,6 +24,7 @@ interface IComponents {
|
|
24
24
|
struct ProductInfo {
|
25
25
|
NftId distributionNftId;
|
26
26
|
NftId poolNftId;
|
27
|
+
bool isProcessingFundedClaims; // custom logic to react to pool events for funded claims
|
27
28
|
Fee productFee; // product fee on net premium
|
28
29
|
Fee processingFee; // product fee on payout amounts
|
29
30
|
Fee distributionFee; // distribution fee for sales that do not include commissions
|
@@ -37,7 +38,8 @@ interface IComponents {
|
|
37
38
|
struct PoolInfo {
|
38
39
|
Amount maxBalanceAmount; // max balance amount allowed for pool
|
39
40
|
RoleId bundleOwnerRole; // the required role for bundle owners
|
40
|
-
bool isInterceptingBundleTransfers; //
|
41
|
+
bool isInterceptingBundleTransfers; // custom logic for bundle nft transfers
|
42
|
+
bool isProcessingConfirmedClaims; // custom logic for claims confirmation
|
41
43
|
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
42
44
|
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
43
45
|
UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
|
@@ -30,10 +30,12 @@ contract OracleService is
|
|
30
30
|
virtual override
|
31
31
|
initializer()
|
32
32
|
{
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
(
|
34
|
+
address registryAddress,
|
35
|
+
address authority
|
36
|
+
) = abi.decode(data, (address, address));
|
37
|
+
|
38
|
+
_initializeService(registryAddress, authority, owner);
|
37
39
|
_registerInterface(type(IOracleService).interfaceId);
|
38
40
|
}
|
39
41
|
|
@@ -12,15 +12,15 @@ contract OracleServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with service implementation and deploys instance
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
|
-
OracleService
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
23
|
-
|
19
|
+
OracleService svc = new OracleService{salt: salt}();
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
|
+
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
26
26
|
|
@@ -43,12 +43,12 @@ contract BundleService is
|
|
43
43
|
virtual override
|
44
44
|
initializer()
|
45
45
|
{
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
_initializeService(registryAddress,
|
46
|
+
(
|
47
|
+
address registryAddress,
|
48
|
+
address authority
|
49
|
+
) = abi.decode(data, (address, address));
|
50
|
+
|
51
|
+
_initializeService(registryAddress, authority, owner);
|
52
52
|
|
53
53
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
54
54
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
@@ -12,15 +12,15 @@ contract BundleServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with pool 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
|
-
BundleService
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
23
|
-
|
19
|
+
BundleService svc = new BundleService{salt: salt}();
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
|
+
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
26
26
|
|
@@ -2,6 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
5
6
|
import {Fee} from "../type/Fee.sol";
|
6
7
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
7
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
@@ -20,10 +21,10 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
20
21
|
|
21
22
|
event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
|
22
23
|
|
23
|
-
/// @dev
|
24
|
-
///
|
25
|
-
///
|
26
|
-
///
|
24
|
+
/// @dev This is a callback function that is called by the product service when underwriting a policy.
|
25
|
+
/// The pool has the option to check the details and object to underwriting by reverting.
|
26
|
+
/// The function is only called for "active" pools that ask to be involved/notified.
|
27
|
+
/// The default implementation is empty.
|
27
28
|
function verifyApplication(
|
28
29
|
NftId applicationNftId,
|
29
30
|
bytes memory applicationData,
|
@@ -32,9 +33,9 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
32
33
|
Amount collateralizationAmount
|
33
34
|
) external;
|
34
35
|
|
35
|
-
/// @dev
|
36
|
-
///
|
37
|
-
/// default implementation returns true
|
36
|
+
/// @dev Returns true iff the application matches with the bundle.
|
37
|
+
/// This is a callback function that is only called if a pool declares itself as a verifying pool
|
38
|
+
/// The default implementation returns true.
|
38
39
|
function applicationMatchesBundle(
|
39
40
|
NftId applicationNftId,
|
40
41
|
bytes memory applicationData,
|
@@ -46,13 +47,22 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
46
47
|
view
|
47
48
|
returns (bool isMatching);
|
48
49
|
|
50
|
+
/// @dev This is a callback function that is called by the claim service when a claim is confirmed.
|
51
|
+
/// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
|
52
|
+
/// The default implementation is empty.
|
53
|
+
function processConfirmedClaim(
|
54
|
+
NftId policyNftId,
|
55
|
+
ClaimId claimId,
|
56
|
+
Amount amount
|
57
|
+
) external;
|
58
|
+
|
49
59
|
/// @dev Withdraw bundle feeds for the given bundle
|
50
60
|
/// @param bundleNftId the bundle Nft Id
|
51
61
|
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
52
62
|
/// @return withdrawnAmount the effective withdrawn amount
|
53
63
|
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
54
64
|
|
55
|
-
/// @dev
|
65
|
+
/// @dev Returns initial pool specific infos for this pool
|
56
66
|
function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
|
57
67
|
|
58
68
|
}
|
package/contracts/pool/Pool.sol
CHANGED
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
5
|
import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
|
6
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
6
7
|
import {IBundleService} from "./IBundleService.sol";
|
7
8
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
8
9
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
@@ -40,6 +41,16 @@ abstract contract Pool is
|
|
40
41
|
}
|
41
42
|
|
42
43
|
|
44
|
+
function register()
|
45
|
+
external
|
46
|
+
virtual
|
47
|
+
onlyOwner()
|
48
|
+
{
|
49
|
+
_getPoolStorage()._componentService.registerPool();
|
50
|
+
_approveTokenHandler(type(uint256).max);
|
51
|
+
}
|
52
|
+
|
53
|
+
|
43
54
|
/// @dev see {IPoolComponent.verifyApplication}
|
44
55
|
function verifyApplication(
|
45
56
|
NftId applicationNftId,
|
@@ -67,6 +78,20 @@ abstract contract Pool is
|
|
67
78
|
}
|
68
79
|
|
69
80
|
|
81
|
+
/// @dev see {IPoolComponent.processConfirmedClaim}
|
82
|
+
function processConfirmedClaim(
|
83
|
+
NftId policyNftId,
|
84
|
+
ClaimId claimId,
|
85
|
+
Amount amount
|
86
|
+
)
|
87
|
+
public
|
88
|
+
virtual
|
89
|
+
restricted()
|
90
|
+
{
|
91
|
+
// default implementation is empty
|
92
|
+
}
|
93
|
+
|
94
|
+
|
70
95
|
/// @dev see {IPoolComponent.applicationMatchesBundle}
|
71
96
|
/// Override this function to implement any custom application verification
|
72
97
|
/// Default implementation always returns true
|
@@ -85,16 +110,6 @@ abstract contract Pool is
|
|
85
110
|
return true;
|
86
111
|
}
|
87
112
|
|
88
|
-
|
89
|
-
function register()
|
90
|
-
external
|
91
|
-
virtual
|
92
|
-
onlyOwner()
|
93
|
-
{
|
94
|
-
_getPoolStorage()._componentService.registerPool();
|
95
|
-
_approveTokenHandler(type(uint256).max);
|
96
|
-
}
|
97
|
-
|
98
113
|
/// @inheritdoc IPoolComponent
|
99
114
|
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
100
115
|
external
|
@@ -117,6 +132,7 @@ abstract contract Pool is
|
|
117
132
|
maxBalanceAmount: AmountLib.max(),
|
118
133
|
bundleOwnerRole: PUBLIC_ROLE(),
|
119
134
|
isInterceptingBundleTransfers: isNftInterceptor(),
|
135
|
+
isProcessingConfirmedClaims: false,
|
120
136
|
isExternallyManaged: false,
|
121
137
|
isVerifyingApplications: false,
|
122
138
|
collateralizationLevel: UFixedLib.toUFixed(1),
|
@@ -48,10 +48,9 @@ contract PoolService is
|
|
48
48
|
initializer()
|
49
49
|
{
|
50
50
|
(
|
51
|
-
address registryAddress
|
52
|
-
//address managerAddress
|
51
|
+
address registryAddress,
|
53
52
|
address authority
|
54
|
-
) = abi.decode(data, (address, address
|
53
|
+
) = abi.decode(data, (address, address));
|
55
54
|
|
56
55
|
_initializeService(registryAddress, authority, owner);
|
57
56
|
|
@@ -12,14 +12,14 @@ contract PoolServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with pool 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
|
PoolService poolSrv = new PoolService{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(poolSrv),
|
24
24
|
data,
|
25
25
|
salt);
|
@@ -41,12 +41,11 @@ contract ApplicationService is
|
|
41
41
|
initializer()
|
42
42
|
{
|
43
43
|
(
|
44
|
-
address registryAddress
|
45
|
-
//address managerAddress
|
44
|
+
address registryAddress,
|
46
45
|
address authority
|
47
|
-
) = abi.decode(data, (address, address
|
46
|
+
) = abi.decode(data, (address, address));
|
48
47
|
|
49
|
-
_initializeService(registryAddress,
|
48
|
+
_initializeService(registryAddress, authority, owner);
|
50
49
|
|
51
50
|
_distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
52
51
|
_pricingService = IPricingService(_getServiceAddress(PRICE()));
|
@@ -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,9 +1,6 @@
|
|
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
6
|
import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
|
@@ -14,8 +11,14 @@ 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";
|
19
22
|
import {IPoolService} from "../pool/IPoolService.sol";
|
20
23
|
|
21
24
|
|
@@ -35,10 +38,9 @@ contract ClaimService is
|
|
35
38
|
initializer()
|
36
39
|
{
|
37
40
|
(
|
38
|
-
address registryAddress
|
39
|
-
//address managerAddress
|
41
|
+
address registryAddress,
|
40
42
|
address authority
|
41
|
-
) = abi.decode(data, (address, address
|
43
|
+
) = abi.decode(data, (address, address));
|
42
44
|
|
43
45
|
_initializeService(registryAddress, authority, owner);
|
44
46
|
|
@@ -54,9 +56,11 @@ contract ClaimService is
|
|
54
56
|
)
|
55
57
|
external
|
56
58
|
virtual
|
59
|
+
nonReentrant()
|
57
60
|
returns (ClaimId claimId)
|
58
61
|
{
|
59
62
|
(
|
63
|
+
,
|
60
64
|
IInstance instance,
|
61
65
|
InstanceReader instanceReader,
|
62
66
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -108,8 +112,10 @@ contract ClaimService is
|
|
108
112
|
)
|
109
113
|
external
|
110
114
|
virtual
|
115
|
+
nonReentrant()
|
111
116
|
{
|
112
117
|
(
|
118
|
+
NftId productNftId,
|
113
119
|
IInstance instance,
|
114
120
|
InstanceReader instanceReader,
|
115
121
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -131,8 +137,15 @@ contract ClaimService is
|
|
131
137
|
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
132
138
|
|
133
139
|
emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
140
|
+
|
141
|
+
// callback to pool if applicable
|
142
|
+
_processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
|
143
|
+
|
144
|
+
// callback to policy holder if applicable
|
145
|
+
_policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
134
146
|
}
|
135
147
|
|
148
|
+
|
136
149
|
function decline(
|
137
150
|
NftId policyNftId,
|
138
151
|
ClaimId claimId,
|
@@ -140,8 +153,10 @@ contract ClaimService is
|
|
140
153
|
)
|
141
154
|
external
|
142
155
|
virtual
|
156
|
+
nonReentrant()
|
143
157
|
{
|
144
158
|
(
|
159
|
+
,
|
145
160
|
IInstance instance,
|
146
161
|
InstanceReader instanceReader,
|
147
162
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -168,8 +183,10 @@ contract ClaimService is
|
|
168
183
|
)
|
169
184
|
external
|
170
185
|
virtual
|
186
|
+
nonReentrant()
|
171
187
|
{
|
172
188
|
(
|
189
|
+
,
|
173
190
|
IInstance instance,
|
174
191
|
InstanceReader instanceReader,
|
175
192
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -194,8 +211,10 @@ contract ClaimService is
|
|
194
211
|
)
|
195
212
|
external
|
196
213
|
virtual
|
214
|
+
nonReentrant()
|
197
215
|
{
|
198
216
|
(
|
217
|
+
,
|
199
218
|
IInstance instance,
|
200
219
|
InstanceReader instanceReader,
|
201
220
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -225,7 +244,7 @@ contract ClaimService is
|
|
225
244
|
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
226
245
|
}
|
227
246
|
|
228
|
-
|
247
|
+
|
229
248
|
function createPayoutForBeneficiary(
|
230
249
|
NftId policyNftId,
|
231
250
|
ClaimId claimId,
|
@@ -235,6 +254,7 @@ contract ClaimService is
|
|
235
254
|
)
|
236
255
|
external
|
237
256
|
virtual
|
257
|
+
nonReentrant()
|
238
258
|
returns (PayoutId payoutId)
|
239
259
|
{
|
240
260
|
if (beneficiary == address(0)) {
|
@@ -258,6 +278,7 @@ contract ClaimService is
|
|
258
278
|
)
|
259
279
|
external
|
260
280
|
virtual
|
281
|
+
nonReentrant()
|
261
282
|
returns (PayoutId payoutId)
|
262
283
|
{
|
263
284
|
return _createPayout(
|
@@ -268,56 +289,6 @@ contract ClaimService is
|
|
268
289
|
data);
|
269
290
|
}
|
270
291
|
|
271
|
-
function _createPayout(
|
272
|
-
NftId policyNftId,
|
273
|
-
ClaimId claimId,
|
274
|
-
Amount amount,
|
275
|
-
address beneficiary,
|
276
|
-
bytes memory data
|
277
|
-
)
|
278
|
-
internal
|
279
|
-
virtual
|
280
|
-
returns (PayoutId payoutId)
|
281
|
-
{
|
282
|
-
(
|
283
|
-
IInstance instance,
|
284
|
-
InstanceReader instanceReader,
|
285
|
-
IPolicy.PolicyInfo memory policyInfo
|
286
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
287
|
-
|
288
|
-
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
289
|
-
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
290
|
-
|
291
|
-
// TODO add checks
|
292
|
-
// claim needs to be open
|
293
|
-
// claim.paidAmount + amount <= claim.claimAmount
|
294
|
-
|
295
|
-
// check/update claim info
|
296
|
-
// create payout info with instance
|
297
|
-
uint8 claimNo = claimInfo.payoutsCount + 1;
|
298
|
-
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
299
|
-
instance.getInstanceStore().createPayout(
|
300
|
-
policyNftId,
|
301
|
-
payoutId,
|
302
|
-
IPolicy.PayoutInfo({
|
303
|
-
claimId: payoutId.toClaimId(),
|
304
|
-
amount: amount,
|
305
|
-
beneficiary: beneficiary,
|
306
|
-
data: data,
|
307
|
-
paidAt: TimestampLib.zero()}));
|
308
|
-
|
309
|
-
// update and save claim info with instance
|
310
|
-
claimInfo.payoutsCount += 1;
|
311
|
-
claimInfo.openPayoutsCount += 1;
|
312
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
313
|
-
|
314
|
-
// update and save policy info with instance
|
315
|
-
policyInfo.payoutAmount.add(amount);
|
316
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
317
|
-
|
318
|
-
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
|
319
|
-
}
|
320
|
-
|
321
292
|
|
322
293
|
function processPayout(
|
323
294
|
NftId policyNftId,
|
@@ -325,8 +296,10 @@ contract ClaimService is
|
|
325
296
|
)
|
326
297
|
external
|
327
298
|
virtual
|
299
|
+
nonReentrant()
|
328
300
|
{
|
329
301
|
(
|
302
|
+
,
|
330
303
|
IInstance instance,
|
331
304
|
InstanceReader instanceReader,
|
332
305
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -339,7 +312,6 @@ contract ClaimService is
|
|
339
312
|
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
340
313
|
instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
341
314
|
|
342
|
-
// TODO update and save claim info with instance
|
343
315
|
ClaimId claimId = payoutId.toClaimId();
|
344
316
|
Amount payoutAmount = payoutInfo.amount;
|
345
317
|
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
@@ -390,9 +362,65 @@ contract ClaimService is
|
|
390
362
|
// TODO add 2nd token tx if processingFeeAmount > 0
|
391
363
|
}
|
392
364
|
|
393
|
-
//
|
365
|
+
// callback to policy holder if applicable
|
366
|
+
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
394
367
|
}
|
395
368
|
|
369
|
+
// internal functions
|
370
|
+
|
371
|
+
|
372
|
+
function _createPayout(
|
373
|
+
NftId policyNftId,
|
374
|
+
ClaimId claimId,
|
375
|
+
Amount amount,
|
376
|
+
address beneficiary,
|
377
|
+
bytes memory data
|
378
|
+
)
|
379
|
+
internal
|
380
|
+
virtual
|
381
|
+
returns (PayoutId payoutId)
|
382
|
+
{
|
383
|
+
(
|
384
|
+
,
|
385
|
+
IInstance instance,
|
386
|
+
InstanceReader instanceReader,
|
387
|
+
IPolicy.PolicyInfo memory policyInfo
|
388
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
389
|
+
|
390
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
391
|
+
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
392
|
+
|
393
|
+
// TODO add checks
|
394
|
+
// claim needs to be open
|
395
|
+
// claim.paidAmount + amount <= claim.claimAmount
|
396
|
+
|
397
|
+
// check/update claim info
|
398
|
+
// create payout info with instance
|
399
|
+
uint8 claimNo = claimInfo.payoutsCount + 1;
|
400
|
+
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
401
|
+
instance.getInstanceStore().createPayout(
|
402
|
+
policyNftId,
|
403
|
+
payoutId,
|
404
|
+
IPolicy.PayoutInfo({
|
405
|
+
claimId: payoutId.toClaimId(),
|
406
|
+
amount: amount,
|
407
|
+
beneficiary: beneficiary,
|
408
|
+
data: data,
|
409
|
+
paidAt: TimestampLib.zero()}));
|
410
|
+
|
411
|
+
// update and save claim info with instance
|
412
|
+
claimInfo.payoutsCount += 1;
|
413
|
+
claimInfo.openPayoutsCount += 1;
|
414
|
+
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
415
|
+
|
416
|
+
// update and save policy info with instance
|
417
|
+
policyInfo.payoutAmount.add(amount);
|
418
|
+
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
419
|
+
|
420
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
|
421
|
+
}
|
422
|
+
|
423
|
+
|
396
424
|
function _calculatePayoutAmount(
|
397
425
|
InstanceReader instanceReader,
|
398
426
|
NftId policyNftId,
|
@@ -430,7 +458,6 @@ contract ClaimService is
|
|
430
458
|
}
|
431
459
|
}
|
432
460
|
|
433
|
-
// internal functions
|
434
461
|
|
435
462
|
function _verifyCallerWithPolicy(
|
436
463
|
NftId policyNftId
|
@@ -439,12 +466,12 @@ contract ClaimService is
|
|
439
466
|
view
|
440
467
|
virtual
|
441
468
|
returns (
|
469
|
+
NftId productNftId,
|
442
470
|
IInstance instance,
|
443
471
|
InstanceReader instanceReader,
|
444
472
|
IPolicy.PolicyInfo memory policyInfo
|
445
473
|
)
|
446
474
|
{
|
447
|
-
NftId productNftId;
|
448
475
|
(productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
449
476
|
instanceReader = instance.getInstanceReader();
|
450
477
|
|
@@ -480,6 +507,65 @@ contract ClaimService is
|
|
480
507
|
claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
481
508
|
}
|
482
509
|
|
510
|
+
function _processConfirmedClaimByPool(
|
511
|
+
InstanceReader instanceReader,
|
512
|
+
NftId productNftId,
|
513
|
+
NftId policyNftId,
|
514
|
+
ClaimId claimId,
|
515
|
+
Amount amount
|
516
|
+
)
|
517
|
+
internal
|
518
|
+
{
|
519
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
520
|
+
if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
|
521
|
+
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
522
|
+
IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
|
523
|
+
}
|
524
|
+
}
|
525
|
+
|
526
|
+
|
527
|
+
function _policyHolderClaimConfirmed(
|
528
|
+
NftId policyNftId,
|
529
|
+
ClaimId claimId,
|
530
|
+
Amount confirmedAmount
|
531
|
+
)
|
532
|
+
internal
|
533
|
+
{
|
534
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
535
|
+
if(address(policyHolder) != address(0)) {
|
536
|
+
policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
|
537
|
+
}
|
538
|
+
}
|
539
|
+
|
540
|
+
|
541
|
+
function _policyHolderPayoutExecuted(
|
542
|
+
NftId policyNftId,
|
543
|
+
PayoutId payoutId,
|
544
|
+
address beneficiary,
|
545
|
+
Amount payoutAmount
|
546
|
+
)
|
547
|
+
internal
|
548
|
+
{
|
549
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
550
|
+
if(address(policyHolder) != address(0)) {
|
551
|
+
policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
|
552
|
+
}
|
553
|
+
}
|
554
|
+
|
555
|
+
|
556
|
+
function _getPolicyHolder(NftId policyNftId)
|
557
|
+
internal
|
558
|
+
view
|
559
|
+
returns (IPolicyHolder policyHolder)
|
560
|
+
{
|
561
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
562
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
563
|
+
|
564
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
565
|
+
policyHolder = IPolicyHolder(address(0));
|
566
|
+
}
|
567
|
+
}
|
568
|
+
|
483
569
|
|
484
570
|
function _getDomain() internal pure override returns(ObjectType) {
|
485
571
|
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);
|