@etherisc/gif-next 0.0.2-abde86b-349 → 0.0.2-ac4bee9-682
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 +139 -157
- 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 +102 -96
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +152 -86
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +92 -81
- 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 +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -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 +151 -132
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +133 -127
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +249 -188
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +530 -229
- 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 +31 -86
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -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 +113 -135
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +91 -133
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +172 -111
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +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 +121 -139
- 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 +87 -76
- 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 +97 -91
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +102 -47
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +72 -36
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +97 -119
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +205 -103
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +108 -60
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +72 -15
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +87 -115
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +213 -195
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +97 -130
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +294 -255
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +83 -47
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +82 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +69 -33
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +142 -92
- 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 +175 -82
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +102 -58
- 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 +65 -1
- 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 +128 -73
- 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 +154 -61
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +87 -47
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +138 -88
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -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 +72 -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 +116 -51
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +206 -165
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +161 -61
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -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 +123 -225
- 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 +76 -66
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +425 -155
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +103 -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 +21 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -51
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +87 -76
- 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 +97 -91
- 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 +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +84 -87
- 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 +154 -166
- 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 +81 -51
- 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 +82 -53
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -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 +44 -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 +55 -36
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +12 -4
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +38 -6
- package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +2 -23
- package/contracts/instance/Instance.sol +20 -17
- package/contracts/instance/InstanceAdmin.sol +17 -28
- package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
- package/contracts/instance/InstanceReader.sol +10 -34
- package/contracts/instance/InstanceService.sol +29 -80
- package/contracts/instance/module/IComponents.sol +7 -5
- package/contracts/instance/module/IPolicy.sol +2 -1
- 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 +47 -36
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +88 -41
- package/contracts/pool/IBundleService.sol +11 -5
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +25 -24
- package/contracts/pool/Pool.sol +118 -126
- package/contracts/pool/PoolService.sol +203 -131
- package/contracts/product/ApplicationService.sol +9 -1
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +99 -58
- package/contracts/product/IClaimService.sol +2 -1
- package/contracts/product/IPolicyService.sol +6 -1
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +6 -0
- package/contracts/product/PolicyService.sol +76 -27
- package/contracts/product/PricingService.sol +8 -8
- package/contracts/product/Product.sol +56 -56
- package/contracts/registry/ChainNft.sol +6 -9
- package/contracts/registry/IRegistry.sol +6 -3
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +22 -4
- package/contracts/registry/RegistryAdmin.sol +29 -31
- package/contracts/registry/RegistryService.sol +37 -55
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +202 -208
- package/contracts/registry/ServiceAuthorizationV3.sol +24 -20
- package/contracts/shared/Component.sol +58 -97
- package/contracts/shared/ComponentService.sol +285 -147
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +17 -1
- package/contracts/shared/IComponent.sol +10 -13
- package/contracts/shared/IComponentService.sol +38 -16
- 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 +66 -32
- 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 -7
- package/contracts/shared/RegistryLinked.sol +6 -12
- package/contracts/shared/Service.sol +4 -7
- package/contracts/shared/TokenHandler.sol +324 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +31 -24
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +69 -23
- 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 +16 -2
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -1
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +4 -3
- 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,67 @@ 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.pushToken(
|
392
|
+
beneficiary,
|
393
|
+
netPayoutAmount);
|
394
|
+
|
395
|
+
// TODO add 2nd token tx if processingFeeAmount > 0
|
396
|
+
}
|
361
397
|
|
362
|
-
//
|
398
|
+
// callback to policy holder if applicable
|
399
|
+
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
363
400
|
}
|
364
|
-
|
365
|
-
// callback to policy holder if applicable
|
366
|
-
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
367
401
|
}
|
368
402
|
|
369
403
|
// internal functions
|
@@ -382,8 +416,9 @@ contract ClaimService is
|
|
382
416
|
{
|
383
417
|
(
|
384
418
|
,
|
385
|
-
|
419
|
+
,
|
386
420
|
InstanceReader instanceReader,
|
421
|
+
InstanceStore instanceStore,
|
387
422
|
IPolicy.PolicyInfo memory policyInfo
|
388
423
|
) = _verifyCallerWithPolicy(policyNftId);
|
389
424
|
|
@@ -398,7 +433,11 @@ contract ClaimService is
|
|
398
433
|
// create payout info with instance
|
399
434
|
uint24 payoutNo = claimInfo.payoutsCount + 1;
|
400
435
|
payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
|
401
|
-
|
436
|
+
if (beneficiary == address(0)) {
|
437
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
438
|
+
}
|
439
|
+
|
440
|
+
instanceStore.createPayout(
|
402
441
|
policyNftId,
|
403
442
|
payoutId,
|
404
443
|
IPolicy.PayoutInfo({
|
@@ -411,13 +450,13 @@ contract ClaimService is
|
|
411
450
|
// update and save claim info with instance
|
412
451
|
claimInfo.payoutsCount += 1;
|
413
452
|
claimInfo.openPayoutsCount += 1;
|
414
|
-
|
453
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
415
454
|
|
416
455
|
// update and save policy info with instance
|
417
456
|
policyInfo.payoutAmount.add(amount);
|
418
|
-
|
457
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
419
458
|
|
420
|
-
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
|
459
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
|
421
460
|
}
|
422
461
|
|
423
462
|
|
@@ -469,11 +508,13 @@ contract ClaimService is
|
|
469
508
|
NftId productNftId,
|
470
509
|
IInstance instance,
|
471
510
|
InstanceReader instanceReader,
|
511
|
+
InstanceStore instanceStore,
|
472
512
|
IPolicy.PolicyInfo memory policyInfo
|
473
513
|
)
|
474
514
|
{
|
475
515
|
(productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
476
516
|
instanceReader = instance.getInstanceReader();
|
517
|
+
instanceStore = instance.getInstanceStore();
|
477
518
|
|
478
519
|
// check caller(product) policy match
|
479
520
|
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";
|
@@ -48,7 +49,9 @@ interface IPolicyService is IService {
|
|
48
49
|
function createPolicy(
|
49
50
|
NftId applicationNftId,
|
50
51
|
Timestamp activateAt
|
51
|
-
)
|
52
|
+
)
|
53
|
+
external
|
54
|
+
returns (Amount premiumAmount);
|
52
55
|
|
53
56
|
/// @dev declines an application represented by {policyNftId}
|
54
57
|
/// an application can only be declined in applied state
|
@@ -69,6 +72,8 @@ interface IPolicyService is IService {
|
|
69
72
|
/// @return expiredAt the effective expiry date
|
70
73
|
function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
71
74
|
|
75
|
+
function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
76
|
+
|
72
77
|
/// @dev closes the specified policy and sets the closed data in the policy metadata
|
73
78
|
/// a policy can only be closed when it has been expired. in addition, it must not have any open claims
|
74
79
|
/// 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.
|
@@ -15,7 +15,7 @@ import {Amount, AmountLib} from "../type/Amount.sol";
|
|
15
15
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
16
16
|
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
17
17
|
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
18
|
-
import {NftId
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
19
19
|
import {ReferralId} from "../type/Referral.sol";
|
20
20
|
import {StateId} from "../type/StateId.sol";
|
21
21
|
import {VersionPart} from "../type/Version.sol";
|
@@ -38,13 +38,7 @@ contract PolicyService is
|
|
38
38
|
ComponentVerifyingService,
|
39
39
|
IPolicyService
|
40
40
|
{
|
41
|
-
using NftIdLib for NftId;
|
42
|
-
using TimestampLib for Timestamp;
|
43
|
-
|
44
|
-
IApplicationService internal _applicationService;
|
45
41
|
IComponentService internal _componentService;
|
46
|
-
IBundleService internal _bundleService;
|
47
|
-
IClaimService internal _claimService;
|
48
42
|
IDistributionService internal _distributionService;
|
49
43
|
IPoolService internal _poolService;
|
50
44
|
IPricingService internal _pricingService;
|
@@ -65,10 +59,7 @@ contract PolicyService is
|
|
65
59
|
_initializeService(registryAddress, authority, owner);
|
66
60
|
|
67
61
|
VersionPart majorVersion = getVersion().toMajorPart();
|
68
|
-
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
69
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
70
62
|
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
71
|
-
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
72
63
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
73
64
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
74
65
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
@@ -84,6 +75,8 @@ contract PolicyService is
|
|
84
75
|
virtual
|
85
76
|
nonReentrant()
|
86
77
|
{
|
78
|
+
_checkNftType(applicationNftId, POLICY());
|
79
|
+
|
87
80
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
88
81
|
InstanceReader instanceReader = instance.getInstanceReader();
|
89
82
|
|
@@ -119,7 +112,10 @@ contract PolicyService is
|
|
119
112
|
external
|
120
113
|
virtual
|
121
114
|
nonReentrant()
|
115
|
+
returns (Amount premiumAmount)
|
122
116
|
{
|
117
|
+
_checkNftType(applicationNftId, POLICY());
|
118
|
+
|
123
119
|
// check caller is registered product
|
124
120
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
125
121
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -175,19 +171,22 @@ contract PolicyService is
|
|
175
171
|
applicationNftId,
|
176
172
|
premium);
|
177
173
|
|
174
|
+
premiumAmount = premium.fullPremiumAmount;
|
175
|
+
|
178
176
|
// update referral counter
|
179
177
|
{
|
180
178
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
181
|
-
|
182
|
-
|
183
|
-
|
179
|
+
|
180
|
+
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
181
|
+
_distributionService.processReferral(
|
182
|
+
productInfo.distributionNftId,
|
183
|
+
applicationInfo.referralId);
|
184
|
+
}
|
184
185
|
}
|
185
186
|
|
186
187
|
// log policy creation before interactions with token and policy holder
|
187
188
|
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
188
189
|
|
189
|
-
// TODO add calling pool contract if it needs to validate application
|
190
|
-
|
191
190
|
// callback to policy holder if applicable
|
192
191
|
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
193
192
|
}
|
@@ -202,6 +201,8 @@ contract PolicyService is
|
|
202
201
|
virtual
|
203
202
|
nonReentrant()
|
204
203
|
{
|
204
|
+
_checkNftType(policyNftId, POLICY());
|
205
|
+
|
205
206
|
// check caller is registered product
|
206
207
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
207
208
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -246,6 +247,8 @@ contract PolicyService is
|
|
246
247
|
virtual
|
247
248
|
nonReentrant()
|
248
249
|
{
|
250
|
+
_checkNftType(policyNftId, POLICY());
|
251
|
+
|
249
252
|
// check caller is registered product
|
250
253
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
251
254
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -273,11 +276,12 @@ contract PolicyService is
|
|
273
276
|
nonReentrant()
|
274
277
|
returns (Timestamp expiredAt)
|
275
278
|
{
|
276
|
-
(
|
277
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
279
|
+
_checkNftType(policyNftId, POLICY());
|
278
280
|
|
281
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
282
|
+
|
279
283
|
// check policy matches with calling product
|
280
|
-
IPolicy.PolicyInfo memory policyInfo =
|
284
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
281
285
|
if(policyInfo.productNftId != productNftId) {
|
282
286
|
revert ErrorPolicyServicePolicyProductMismatch(
|
283
287
|
policyNftId,
|
@@ -285,8 +289,46 @@ contract PolicyService is
|
|
285
289
|
productNftId);
|
286
290
|
}
|
287
291
|
|
292
|
+
return _expire(
|
293
|
+
instance,
|
294
|
+
policyNftId,
|
295
|
+
expireAt
|
296
|
+
);
|
297
|
+
}
|
298
|
+
|
299
|
+
/// @inheritdoc IPolicyService
|
300
|
+
function expirePolicy(
|
301
|
+
IInstance instance,
|
302
|
+
NftId policyNftId,
|
303
|
+
Timestamp expireAt
|
304
|
+
)
|
305
|
+
external
|
306
|
+
virtual
|
307
|
+
nonReentrant()
|
308
|
+
returns (Timestamp expiredAt)
|
309
|
+
{
|
310
|
+
_checkNftType(policyNftId, POLICY());
|
311
|
+
|
312
|
+
return _expire(
|
313
|
+
instance,
|
314
|
+
policyNftId,
|
315
|
+
expireAt
|
316
|
+
);
|
317
|
+
}
|
318
|
+
|
319
|
+
function _expire(
|
320
|
+
IInstance instance,
|
321
|
+
NftId policyNftId,
|
322
|
+
Timestamp expireAt
|
323
|
+
)
|
324
|
+
internal
|
325
|
+
returns (Timestamp expiredAt)
|
326
|
+
{
|
327
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
328
|
+
|
288
329
|
// check policy is active
|
289
330
|
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
331
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
290
332
|
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
291
333
|
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
292
334
|
}
|
@@ -326,6 +368,8 @@ contract PolicyService is
|
|
326
368
|
virtual
|
327
369
|
nonReentrant()
|
328
370
|
{
|
371
|
+
_checkNftType(policyNftId, POLICY());
|
372
|
+
|
329
373
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
330
374
|
InstanceReader instanceReader = instance.getInstanceReader();
|
331
375
|
|
@@ -388,7 +432,7 @@ contract PolicyService is
|
|
388
432
|
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
389
433
|
|
390
434
|
_checkPremiumBalanceAndAllowance(
|
391
|
-
tokenHandler.
|
435
|
+
tokenHandler.TOKEN(),
|
392
436
|
address(tokenHandler),
|
393
437
|
policyHolder,
|
394
438
|
premium.premiumAmount);
|
@@ -453,10 +497,12 @@ contract PolicyService is
|
|
453
497
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
454
498
|
|
455
499
|
// update distribution fees and distributor commission and pool fees
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
500
|
+
if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
501
|
+
_distributionService.processSale(
|
502
|
+
distributionNftId,
|
503
|
+
referralId,
|
504
|
+
premium);
|
505
|
+
}
|
460
506
|
|
461
507
|
// update pool and bundle fees
|
462
508
|
_poolService.processSale(
|
@@ -626,10 +672,13 @@ contract PolicyService is
|
|
626
672
|
)
|
627
673
|
{
|
628
674
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
675
|
+
productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
|
676
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
|
677
|
+
|
678
|
+
if (productInfo.hasDistribution) {
|
679
|
+
distributionNftId = productInfo.distributionNftId;
|
680
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
|
681
|
+
}
|
633
682
|
}
|
634
683
|
|
635
684
|
|