@etherisc/gif-next 0.0.2-abde86b-349 → 0.0.2-ac2f4a6-957
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/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +154 -94
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +94 -58
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +120 -86
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +72 -60
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +81 -58
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
- 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 +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +156 -96
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +137 -77
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +153 -106
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +222 -107
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -40
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +148 -118
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +108 -125
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +72 -130
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +48 -40
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +160 -89
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +135 -75
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
- 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 +76 -53
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +89 -53
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +86 -47
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +48 -36
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +89 -66
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +180 -82
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +76 -53
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +136 -120
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +89 -53
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +209 -180
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -47
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -33
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +129 -54
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +167 -82
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +81 -57
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +56 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +58 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +116 -54
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +139 -60
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +67 -47
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +149 -107
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +61 -45
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +129 -54
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +60 -26
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +42 -30
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +48 -15
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +92 -51
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +193 -165
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +145 -61
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +41 -29
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +121 -223
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +68 -28
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +350 -155
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +83 -63
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -28
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +76 -53
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +55 -28
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +138 -78
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +68 -42
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +66 -53
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +45 -33
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
- 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/Amount.sol/AmountLib.json +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- 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/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/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 +28 -12
- 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 +65 -61
- package/contracts/authorization/Authorization.sol +106 -38
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -2
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +2 -1
- package/contracts/distribution/Distribution.sol +6 -16
- package/contracts/distribution/DistributionService.sol +53 -34
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- 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 +418 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -4
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +4 -4
- package/contracts/examples/unpermissioned/SimpleProduct.sol +10 -10
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +20 -17
- package/contracts/instance/InstanceAdmin.sol +16 -27
- package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
- package/contracts/instance/InstanceReader.sol +9 -33
- package/contracts/instance/InstanceService.sol +14 -68
- package/contracts/instance/module/IComponents.sol +6 -3
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +4 -15
- package/contracts/oracle/OracleService.sol +37 -27
- package/contracts/pool/BasicPool.sol +14 -26
- package/contracts/pool/BasicPoolAuthorization.sol +0 -1
- package/contracts/pool/BundleService.sol +75 -20
- package/contracts/pool/IBundleService.sol +9 -0
- package/contracts/pool/IPoolService.sol +2 -6
- package/contracts/pool/Pool.sol +11 -29
- package/contracts/pool/PoolService.sol +65 -69
- package/contracts/product/ApplicationService.sol +9 -1
- package/contracts/product/BasicProduct.sol +6 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +97 -58
- package/contracts/product/IClaimService.sol +2 -1
- package/contracts/product/IPolicyService.sol +3 -0
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +6 -0
- package/contracts/product/PolicyService.sol +50 -13
- package/contracts/product/PricingService.sol +4 -7
- package/contracts/product/Product.sol +61 -38
- package/contracts/registry/ChainNft.sol +6 -9
- package/contracts/registry/IRegistry.sol +4 -3
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +14 -4
- package/contracts/registry/RegistryAdmin.sol +7 -23
- package/contracts/registry/RegistryService.sol +37 -55
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +201 -191
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
- package/contracts/shared/Component.sol +25 -28
- package/contracts/shared/ComponentService.sol +224 -130
- package/contracts/shared/ComponentVerifyingService.sol +22 -12
- package/contracts/shared/IComponent.sol +6 -2
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InstanceLinkedComponent.sol +67 -25
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +23 -3
- package/contracts/shared/Registerable.sol +15 -5
- package/contracts/shared/Service.sol +4 -7
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +2 -3
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +1 -15
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -1
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
5
|
import {TimestampLib} from "../type/Timestamp.sol";
|
6
|
-
import {ObjectType, CLAIM,
|
6
|
+
import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
|
7
7
|
import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
|
8
8
|
import {NftId} from "../type/NftId.sol";
|
9
9
|
import {FeeLib} from "../type/Fee.sol";
|
@@ -13,12 +13,14 @@ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
|
13
13
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
14
14
|
import {ContractLib} from "../shared/ContractLib.sol";
|
15
15
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
16
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
16
17
|
import {IClaimService} from "./IClaimService.sol";
|
17
18
|
import {IComponents} from "../instance/module/IComponents.sol";
|
18
19
|
import {IInstance} from "../instance/IInstance.sol";
|
19
20
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
20
21
|
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
21
22
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
23
|
+
import {IPolicyService} from "../product/IPolicyService.sol";
|
22
24
|
import {IPoolService} from "../pool/IPoolService.sol";
|
23
25
|
|
24
26
|
|
@@ -27,6 +29,7 @@ contract ClaimService is
|
|
27
29
|
IClaimService
|
28
30
|
{
|
29
31
|
|
32
|
+
IPolicyService internal _policyService;
|
30
33
|
IPoolService internal _poolService;
|
31
34
|
|
32
35
|
function _initialize(
|
@@ -44,6 +47,7 @@ contract ClaimService is
|
|
44
47
|
|
45
48
|
_initializeService(registryAddress, authority, owner);
|
46
49
|
|
50
|
+
_policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
|
47
51
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
48
52
|
|
49
53
|
_registerInterface(type(IClaimService).interfaceId);
|
@@ -59,10 +63,12 @@ contract ClaimService is
|
|
59
63
|
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
60
64
|
returns (ClaimId claimId)
|
61
65
|
{
|
66
|
+
_checkNftType(policyNftId, POLICY());
|
67
|
+
|
62
68
|
(
|
63
69
|
,
|
64
|
-
IInstance instance
|
65
|
-
|
70
|
+
IInstance instance,,
|
71
|
+
InstanceStore instanceStore,
|
66
72
|
IPolicy.PolicyInfo memory policyInfo
|
67
73
|
) = _verifyCallerWithPolicy(policyNftId);
|
68
74
|
|
@@ -82,7 +88,7 @@ contract ClaimService is
|
|
82
88
|
|
83
89
|
// create new claim
|
84
90
|
claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
|
85
|
-
|
91
|
+
instanceStore.createClaim(
|
86
92
|
policyNftId,
|
87
93
|
claimId,
|
88
94
|
IPolicy.ClaimInfo({
|
@@ -95,10 +101,10 @@ contract ClaimService is
|
|
95
101
|
closedAt: TimestampLib.zero()}));
|
96
102
|
|
97
103
|
// update and save policy info with instance
|
104
|
+
// policy claim amount is only updated when claim is confirmed
|
98
105
|
policyInfo.claimsCount += 1;
|
99
106
|
policyInfo.openClaimsCount += 1;
|
100
|
-
|
101
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
107
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
102
108
|
|
103
109
|
emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
|
104
110
|
}
|
@@ -114,10 +120,13 @@ contract ClaimService is
|
|
114
120
|
virtual
|
115
121
|
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
116
122
|
{
|
123
|
+
_checkNftType(policyNftId, POLICY());
|
124
|
+
|
117
125
|
(
|
118
126
|
NftId productNftId,
|
119
127
|
IInstance instance,
|
120
128
|
InstanceReader instanceReader,
|
129
|
+
InstanceStore instanceStore,
|
121
130
|
IPolicy.PolicyInfo memory policyInfo
|
122
131
|
) = _verifyCallerWithPolicy(policyNftId);
|
123
132
|
|
@@ -127,14 +136,16 @@ contract ClaimService is
|
|
127
136
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
128
137
|
claimInfo.claimAmount = confirmedAmount;
|
129
138
|
claimInfo.processData = data;
|
130
|
-
|
131
|
-
|
132
|
-
// TODO test if claim results in total claim amount == sum insured amount
|
133
|
-
// should policy still be active it needs to automatically become expired
|
139
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
|
134
140
|
|
135
141
|
// update and save policy info with instance
|
136
142
|
policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
|
137
|
-
|
143
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
144
|
+
|
145
|
+
// should policy still be active it needs to become expired
|
146
|
+
if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
|
147
|
+
_policyService.expirePolicy(instance, policyNftId, TimestampLib.blockTimestamp());
|
148
|
+
}
|
138
149
|
|
139
150
|
emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
140
151
|
|
@@ -155,10 +166,13 @@ contract ClaimService is
|
|
155
166
|
virtual
|
156
167
|
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
157
168
|
{
|
169
|
+
_checkNftType(policyNftId, POLICY());
|
170
|
+
|
158
171
|
(
|
159
172
|
,
|
160
173
|
IInstance instance,
|
161
174
|
InstanceReader instanceReader,
|
175
|
+
InstanceStore instanceStore,
|
162
176
|
IPolicy.PolicyInfo memory policyInfo
|
163
177
|
) = _verifyCallerWithPolicy(policyNftId);
|
164
178
|
|
@@ -166,11 +180,11 @@ contract ClaimService is
|
|
166
180
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
167
181
|
claimInfo.processData = data;
|
168
182
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
169
|
-
|
183
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
|
170
184
|
|
171
185
|
// update and save policy info with instance
|
172
186
|
policyInfo.openClaimsCount -= 1;
|
173
|
-
|
187
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
174
188
|
|
175
189
|
emit LogClaimServiceClaimDeclined(policyNftId, claimId);
|
176
190
|
}
|
@@ -185,21 +199,24 @@ contract ClaimService is
|
|
185
199
|
virtual
|
186
200
|
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
187
201
|
{
|
202
|
+
_checkNftType(policyNftId, POLICY());
|
203
|
+
|
188
204
|
(
|
189
205
|
,
|
190
206
|
IInstance instance,
|
191
207
|
InstanceReader instanceReader,
|
208
|
+
InstanceStore instanceStore,
|
192
209
|
IPolicy.PolicyInfo memory policyInfo
|
193
210
|
) = _verifyCallerWithPolicy(policyNftId);
|
194
211
|
|
195
212
|
// check/update claim info
|
196
213
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
197
214
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
198
|
-
|
215
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
|
199
216
|
|
200
217
|
// update and save policy info with instance
|
201
218
|
policyInfo.openClaimsCount -= 1;
|
202
|
-
|
219
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
203
220
|
|
204
221
|
emit LogClaimServiceClaimRevoked(policyNftId, claimId);
|
205
222
|
}
|
@@ -213,10 +230,13 @@ contract ClaimService is
|
|
213
230
|
virtual
|
214
231
|
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
215
232
|
{
|
233
|
+
_checkNftType(policyNftId, POLICY());
|
234
|
+
|
216
235
|
(
|
217
236
|
,
|
218
237
|
IInstance instance,
|
219
238
|
InstanceReader instanceReader,
|
239
|
+
InstanceStore instanceStore,
|
220
240
|
IPolicy.PolicyInfo memory policyInfo
|
221
241
|
) = _verifyCallerWithPolicy(policyNftId);
|
222
242
|
|
@@ -241,7 +261,7 @@ contract ClaimService is
|
|
241
261
|
}
|
242
262
|
|
243
263
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
244
|
-
|
264
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
245
265
|
}
|
246
266
|
|
247
267
|
|
@@ -257,6 +277,8 @@ contract ClaimService is
|
|
257
277
|
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
258
278
|
returns (PayoutId payoutId)
|
259
279
|
{
|
280
|
+
_checkNftType(policyNftId, POLICY());
|
281
|
+
|
260
282
|
if (beneficiary == address(0)) {
|
261
283
|
revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
|
262
284
|
}
|
@@ -281,6 +303,8 @@ contract ClaimService is
|
|
281
303
|
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
282
304
|
returns (PayoutId payoutId)
|
283
305
|
{
|
306
|
+
_checkNftType(policyNftId, POLICY());
|
307
|
+
|
284
308
|
return _createPayout(
|
285
309
|
policyNftId,
|
286
310
|
claimId,
|
@@ -298,10 +322,13 @@ contract ClaimService is
|
|
298
322
|
virtual
|
299
323
|
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
300
324
|
{
|
325
|
+
_checkNftType(policyNftId, POLICY());
|
326
|
+
|
301
327
|
(
|
302
328
|
,
|
303
329
|
IInstance instance,
|
304
330
|
InstanceReader instanceReader,
|
331
|
+
InstanceStore instanceStore,
|
305
332
|
IPolicy.PolicyInfo memory policyInfo
|
306
333
|
) = _verifyCallerWithPolicy(policyNftId);
|
307
334
|
|
@@ -310,60 +337,65 @@ contract ClaimService is
|
|
310
337
|
|
311
338
|
// update and save payout info with instance
|
312
339
|
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
313
|
-
|
340
|
+
instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
314
341
|
|
315
|
-
ClaimId claimId = payoutId.toClaimId();
|
316
342
|
Amount payoutAmount = payoutInfo.amount;
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
343
|
+
|
344
|
+
{
|
345
|
+
ClaimId claimId = payoutId.toClaimId();
|
346
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
347
|
+
claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
|
348
|
+
claimInfo.openPayoutsCount -= 1;
|
349
|
+
|
350
|
+
// check if this payout is closing the linked claim
|
351
|
+
// update claim and policy info accordingly
|
352
|
+
if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
|
353
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
354
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
355
|
+
|
356
|
+
policyInfo.openClaimsCount -= 1;
|
357
|
+
} else {
|
358
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
359
|
+
}
|
330
360
|
}
|
331
361
|
|
332
362
|
// update and save policy info with instance
|
333
363
|
policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
|
334
|
-
|
364
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
335
365
|
|
336
366
|
// inform pool about payout
|
337
|
-
_poolService.
|
367
|
+
_poolService.processPayout(
|
338
368
|
instance,
|
339
369
|
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
340
370
|
policyNftId,
|
341
371
|
policyInfo,
|
342
372
|
payoutAmount);
|
343
|
-
|
373
|
+
|
344
374
|
// transfer payout token and fee
|
345
|
-
(
|
346
|
-
Amount netPayoutAmount,
|
347
|
-
Amount processingFeeAmount,
|
348
|
-
address beneficiary
|
349
|
-
) = _calculatePayoutAmount(
|
350
|
-
instanceReader,
|
351
|
-
policyNftId,
|
352
|
-
policyInfo,
|
353
|
-
payoutInfo);
|
354
|
-
|
355
|
-
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
|
356
|
-
|
357
375
|
{
|
358
|
-
|
359
|
-
|
360
|
-
|
376
|
+
(
|
377
|
+
Amount netPayoutAmount,
|
378
|
+
Amount processingFeeAmount,
|
379
|
+
address beneficiary
|
380
|
+
) = _calculatePayoutAmount(
|
381
|
+
instanceReader,
|
382
|
+
policyNftId,
|
383
|
+
policyInfo,
|
384
|
+
payoutInfo);
|
385
|
+
|
386
|
+
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
|
387
|
+
|
388
|
+
{
|
389
|
+
NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
|
390
|
+
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
391
|
+
poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
|
392
|
+
|
393
|
+
// TODO add 2nd token tx if processingFeeAmount > 0
|
394
|
+
}
|
361
395
|
|
362
|
-
//
|
396
|
+
// callback to policy holder if applicable
|
397
|
+
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
363
398
|
}
|
364
|
-
|
365
|
-
// callback to policy holder if applicable
|
366
|
-
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
367
399
|
}
|
368
400
|
|
369
401
|
// internal functions
|
@@ -382,8 +414,9 @@ contract ClaimService is
|
|
382
414
|
{
|
383
415
|
(
|
384
416
|
,
|
385
|
-
|
417
|
+
,
|
386
418
|
InstanceReader instanceReader,
|
419
|
+
InstanceStore instanceStore,
|
387
420
|
IPolicy.PolicyInfo memory policyInfo
|
388
421
|
) = _verifyCallerWithPolicy(policyNftId);
|
389
422
|
|
@@ -398,7 +431,11 @@ contract ClaimService is
|
|
398
431
|
// create payout info with instance
|
399
432
|
uint24 payoutNo = claimInfo.payoutsCount + 1;
|
400
433
|
payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
|
401
|
-
|
434
|
+
if (beneficiary == address(0)) {
|
435
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
436
|
+
}
|
437
|
+
|
438
|
+
instanceStore.createPayout(
|
402
439
|
policyNftId,
|
403
440
|
payoutId,
|
404
441
|
IPolicy.PayoutInfo({
|
@@ -411,13 +448,13 @@ contract ClaimService is
|
|
411
448
|
// update and save claim info with instance
|
412
449
|
claimInfo.payoutsCount += 1;
|
413
450
|
claimInfo.openPayoutsCount += 1;
|
414
|
-
|
451
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
415
452
|
|
416
453
|
// update and save policy info with instance
|
417
454
|
policyInfo.payoutAmount.add(amount);
|
418
|
-
|
455
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
419
456
|
|
420
|
-
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
|
457
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
|
421
458
|
}
|
422
459
|
|
423
460
|
|
@@ -469,11 +506,13 @@ contract ClaimService is
|
|
469
506
|
NftId productNftId,
|
470
507
|
IInstance instance,
|
471
508
|
InstanceReader instanceReader,
|
509
|
+
InstanceStore instanceStore,
|
472
510
|
IPolicy.PolicyInfo memory policyInfo
|
473
511
|
)
|
474
512
|
{
|
475
513
|
(productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
476
514
|
instanceReader = instance.getInstanceReader();
|
515
|
+
instanceStore = instance.getInstanceStore();
|
477
516
|
|
478
517
|
// check caller(product) policy match
|
479
518
|
policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -26,8 +26,9 @@ interface IClaimService is
|
|
26
26
|
event LogClaimServiceClaimRevoked(NftId policyNftId, ClaimId claimId);
|
27
27
|
event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
|
28
28
|
|
29
|
-
event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
|
29
|
+
event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
|
30
30
|
event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
|
31
|
+
error ErrorClaimServiceBeneficiarySet(NftId policyNftId, PayoutId payoutId, address beneficiary);
|
31
32
|
|
32
33
|
error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
|
33
34
|
error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
|
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IService} from "../shared/IService.sol";
|
5
5
|
|
6
6
|
import {Amount} from "../type/Amount.sol";
|
7
|
+
import {IInstance} from "../instance/IInstance.sol";
|
7
8
|
import {NftId} from "../type/NftId.sol";
|
8
9
|
import {StateId} from "../type/StateId.sol";
|
9
10
|
import {Timestamp} from "../type/Timestamp.sol";
|
@@ -69,6 +70,8 @@ interface IPolicyService is IService {
|
|
69
70
|
/// @return expiredAt the effective expiry date
|
70
71
|
function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
71
72
|
|
73
|
+
function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
74
|
+
|
72
75
|
/// @dev closes the specified policy and sets the closed data in the policy metadata
|
73
76
|
/// a policy can only be closed when it has been expired. in addition, it must not have any open claims
|
74
77
|
/// this function can only be called by a product. the policy needs to match with the calling product
|
@@ -14,15 +14,15 @@ interface IPricingService is IService
|
|
14
14
|
{
|
15
15
|
|
16
16
|
error ErrorPricingServiceTargetWalletAmountsMismatch();
|
17
|
-
error
|
18
|
-
error
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
error ErrorPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
|
18
|
+
error ErrorPricingServiceFeeCalculationMismatch(
|
19
|
+
Amount distributionFeeFixAmount,
|
20
|
+
Amount distributionFeeVarAmount,
|
21
|
+
Amount distributionOwnerFeeFixAmount,
|
22
|
+
Amount distributionOwnerFeeVarAmount,
|
23
|
+
Amount commissionAmount,
|
24
|
+
Amount discountAmount
|
25
|
+
);
|
26
26
|
|
27
27
|
function calculatePremium(
|
28
28
|
NftId productNftId,
|
@@ -6,6 +6,7 @@ import {ClaimId} from "../type/ClaimId.sol";
|
|
6
6
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
7
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
8
|
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
9
10
|
import {ReferralId} from "../type/Referral.sol";
|
10
11
|
import {RiskId} from "../type/RiskId.sol";
|
11
12
|
import {Seconds} from "../type/Seconds.sol";
|
@@ -14,6 +15,11 @@ interface IProductComponent is
|
|
14
15
|
IInstanceLinkedComponent
|
15
16
|
{
|
16
17
|
|
18
|
+
// @dev register a new component for this product cluster.
|
19
|
+
function registerComponent(address component)
|
20
|
+
external
|
21
|
+
returns (NftId componentNftId);
|
22
|
+
|
17
23
|
/// @dev Callback function to inform product compnent about arrival of funding for a claim.
|
18
24
|
/// The callback is called by the pool service after the corresponding pool triggers this function.
|
19
25
|
/// The callback is only called when the product's property isProcessingFundedClaims is set.
|
@@ -38,9 +38,6 @@ contract PolicyService is
|
|
38
38
|
ComponentVerifyingService,
|
39
39
|
IPolicyService
|
40
40
|
{
|
41
|
-
using NftIdLib for NftId;
|
42
|
-
using TimestampLib for Timestamp;
|
43
|
-
|
44
41
|
IApplicationService internal _applicationService;
|
45
42
|
IComponentService internal _componentService;
|
46
43
|
IBundleService internal _bundleService;
|
@@ -178,9 +175,12 @@ contract PolicyService is
|
|
178
175
|
// update referral counter
|
179
176
|
{
|
180
177
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
181
|
-
|
182
|
-
|
183
|
-
|
178
|
+
|
179
|
+
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
180
|
+
_distributionService.processReferral(
|
181
|
+
productInfo.distributionNftId,
|
182
|
+
applicationInfo.referralId);
|
183
|
+
}
|
184
184
|
}
|
185
185
|
|
186
186
|
// log policy creation before interactions with token and policy holder
|
@@ -274,10 +274,9 @@ contract PolicyService is
|
|
274
274
|
returns (Timestamp expiredAt)
|
275
275
|
{
|
276
276
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
277
|
-
|
278
|
-
|
277
|
+
|
279
278
|
// check policy matches with calling product
|
280
|
-
IPolicy.PolicyInfo memory policyInfo =
|
279
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
281
280
|
if(policyInfo.productNftId != productNftId) {
|
282
281
|
revert ErrorPolicyServicePolicyProductMismatch(
|
283
282
|
policyNftId,
|
@@ -285,8 +284,44 @@ contract PolicyService is
|
|
285
284
|
productNftId);
|
286
285
|
}
|
287
286
|
|
287
|
+
return _expire(
|
288
|
+
instance,
|
289
|
+
policyNftId,
|
290
|
+
expireAt
|
291
|
+
);
|
292
|
+
}
|
293
|
+
|
294
|
+
/// @inheritdoc IPolicyService
|
295
|
+
function expirePolicy(
|
296
|
+
IInstance instance,
|
297
|
+
NftId policyNftId,
|
298
|
+
Timestamp expireAt
|
299
|
+
)
|
300
|
+
external
|
301
|
+
virtual
|
302
|
+
nonReentrant()
|
303
|
+
returns (Timestamp expiredAt)
|
304
|
+
{
|
305
|
+
return _expire(
|
306
|
+
instance,
|
307
|
+
policyNftId,
|
308
|
+
expireAt
|
309
|
+
);
|
310
|
+
}
|
311
|
+
|
312
|
+
function _expire(
|
313
|
+
IInstance instance,
|
314
|
+
NftId policyNftId,
|
315
|
+
Timestamp expireAt
|
316
|
+
)
|
317
|
+
internal
|
318
|
+
returns (Timestamp expiredAt)
|
319
|
+
{
|
320
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
321
|
+
|
288
322
|
// check policy is active
|
289
323
|
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
324
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
290
325
|
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
291
326
|
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
292
327
|
}
|
@@ -453,10 +488,12 @@ contract PolicyService is
|
|
453
488
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
454
489
|
|
455
490
|
// update distribution fees and distributor commission and pool fees
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
491
|
+
if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
492
|
+
_distributionService.processSale(
|
493
|
+
distributionNftId,
|
494
|
+
referralId,
|
495
|
+
premium);
|
496
|
+
}
|
460
497
|
|
461
498
|
// update pool and bundle fees
|
462
499
|
_poolService.processSale(
|
@@ -31,11 +31,8 @@ contract PricingService is
|
|
31
31
|
ComponentVerifyingService,
|
32
32
|
IPricingService
|
33
33
|
{
|
34
|
-
using UFixedLib for UFixed;
|
35
|
-
|
36
34
|
IDistributionService internal _distributionService;
|
37
35
|
|
38
|
-
|
39
36
|
function _initialize(
|
40
37
|
address owner,
|
41
38
|
bytes memory data
|
@@ -101,7 +98,7 @@ contract PricingService is
|
|
101
98
|
|
102
99
|
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
103
100
|
if(bundleInfo.poolNftId != productInfo.poolNftId) {
|
104
|
-
revert
|
101
|
+
revert ErrorPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
|
105
102
|
}
|
106
103
|
|
107
104
|
// calculate fixed fees for product, pool, bundle
|
@@ -138,7 +135,7 @@ contract PricingService is
|
|
138
135
|
}
|
139
136
|
|
140
137
|
if (premium.distributionOwnerFeeFixAmount.toInt() < productInfo.minDistributionOwnerFee.fixedFee) {
|
141
|
-
revert
|
138
|
+
revert ErrorPricingServiceFeeCalculationMismatch(
|
142
139
|
premium.distributionFeeFixAmount,
|
143
140
|
premium.distributionFeeVarAmount,
|
144
141
|
premium.distributionOwnerFeeFixAmount,
|
@@ -149,7 +146,7 @@ contract PricingService is
|
|
149
146
|
}
|
150
147
|
|
151
148
|
if ((premium.distributionFeeVarAmount) != (premium.discountAmount + premium.distributionOwnerFeeVarAmount + premium.commissionAmount)) {
|
152
|
-
revert
|
149
|
+
revert ErrorPricingServiceFeeCalculationMismatch(
|
153
150
|
premium.distributionFeeFixAmount,
|
154
151
|
premium.distributionFeeVarAmount,
|
155
152
|
premium.distributionOwnerFeeFixAmount,
|
@@ -239,7 +236,7 @@ contract PricingService is
|
|
239
236
|
{
|
240
237
|
|
241
238
|
// if the referral is not valid, then the distribution owner gets everything
|
242
|
-
if (! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
|
239
|
+
if (productInfo.distributionNftId.eqz() || ! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
|
243
240
|
premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
|
244
241
|
premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
|
245
242
|
premium.premiumAmount = premium.fullPremiumAmount;
|