@etherisc/gif-next 0.0.2-e8ea5fe-337 → 0.0.2-e91c6be-472
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -7
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- 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 -32
- 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 +162 -327
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -243
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +180 -198
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +131 -107
- 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 +52 -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 +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/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 +72 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
- 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 +286 -83
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +96 -245
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +197 -116
- 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 -286
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- 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 -238
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +107 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +115 -256
- 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 +203 -208
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +135 -107
- 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 +107 -107
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +272 -185
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +115 -267
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +420 -366
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +128 -88
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +87 -144
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +96 -80
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +156 -251
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +202 -200
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +136 -104
- 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 +64 -8
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +147 -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 +146 -89
- 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 +267 -167
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +127 -91
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +170 -219
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +111 -91
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +154 -249
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +81 -138
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +93 -77
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +309 -33
- 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 +515 -94
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -75
- 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 +131 -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 +76 -213
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +426 -263
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
- 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/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- 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/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +97 -238
- 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 +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
- 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 +152 -311
- 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 +112 -97
- 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 +87 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
- 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 +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/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/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +64 -59
- package/contracts/authorization/Authorization.sol +111 -39
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- 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 +4 -3
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +12 -23
- package/contracts/distribution/DistributionService.sol +78 -60
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- 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 +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +2 -23
- package/contracts/instance/Instance.sol +22 -19
- package/contracts/instance/InstanceAdmin.sol +23 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
- package/contracts/instance/InstanceReader.sol +83 -18
- package/contracts/instance/InstanceService.sol +35 -88
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/module/IComponents.sol +10 -6
- package/contracts/instance/module/IPolicy.sol +4 -3
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +56 -43
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +96 -49
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +11 -5
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +42 -30
- package/contracts/pool/Pool.sol +142 -123
- package/contracts/pool/PoolService.sol +254 -143
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +20 -9
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +235 -108
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +3 -2
- package/contracts/product/IPolicyService.sol +13 -4
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +23 -3
- package/contracts/product/PolicyService.sol +169 -47
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +12 -13
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +77 -70
- package/contracts/product/RiskService.sol +4 -5
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +56 -17
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +349 -200
- package/contracts/registry/RegistryAdmin.sol +146 -58
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -204
- package/contracts/registry/ServiceAuthorizationV3.sol +24 -20
- package/contracts/shared/Component.sol +62 -101
- package/contracts/shared/ComponentService.sol +291 -153
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +27 -16
- package/contracts/shared/ContractLib.sol +54 -0
- 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/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +70 -37
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -18
- 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 +34 -27
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +71 -25
- package/contracts/staking/StakingServiceManager.sol +2 -2
- 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/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- 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
@@ -1,12 +1,9 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
5
|
-
import {IInstance} from "../instance/IInstance.sol";
|
6
|
-
import {IPolicy} from "../instance/module/IPolicy.sol";
|
7
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
8
5
|
import {TimestampLib} from "../type/Timestamp.sol";
|
9
|
-
import {ObjectType, CLAIM,
|
6
|
+
import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
|
10
7
|
import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
|
11
8
|
import {NftId} from "../type/NftId.sol";
|
12
9
|
import {FeeLib} from "../type/Fee.sol";
|
@@ -14,8 +11,16 @@ import {StateId} from "../type/StateId.sol";
|
|
14
11
|
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
15
12
|
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
16
13
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
14
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
17
15
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
16
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
18
17
|
import {IClaimService} from "./IClaimService.sol";
|
18
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
19
|
+
import {IInstance} from "../instance/IInstance.sol";
|
20
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
21
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
22
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
23
|
+
import {IPolicyService} from "../product/IPolicyService.sol";
|
19
24
|
import {IPoolService} from "../pool/IPoolService.sol";
|
20
25
|
|
21
26
|
|
@@ -24,6 +29,7 @@ contract ClaimService is
|
|
24
29
|
IClaimService
|
25
30
|
{
|
26
31
|
|
32
|
+
IPolicyService internal _policyService;
|
27
33
|
IPoolService internal _poolService;
|
28
34
|
|
29
35
|
function _initialize(
|
@@ -35,16 +41,16 @@ contract ClaimService is
|
|
35
41
|
initializer()
|
36
42
|
{
|
37
43
|
(
|
38
|
-
address registryAddress
|
39
|
-
//address managerAddress
|
44
|
+
address registryAddress,
|
40
45
|
address authority
|
41
|
-
) = abi.decode(data, (address, address
|
46
|
+
) = abi.decode(data, (address, address));
|
42
47
|
|
43
|
-
|
48
|
+
_initializeService(registryAddress, authority, owner);
|
44
49
|
|
50
|
+
_policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
|
45
51
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
46
52
|
|
47
|
-
|
53
|
+
_registerInterface(type(IClaimService).interfaceId);
|
48
54
|
}
|
49
55
|
|
50
56
|
function submit(
|
@@ -54,11 +60,15 @@ contract ClaimService is
|
|
54
60
|
)
|
55
61
|
external
|
56
62
|
virtual
|
63
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
57
64
|
returns (ClaimId claimId)
|
58
65
|
{
|
66
|
+
_checkNftType(policyNftId, POLICY());
|
67
|
+
|
59
68
|
(
|
60
|
-
|
61
|
-
|
69
|
+
,
|
70
|
+
IInstance instance,,
|
71
|
+
InstanceStore instanceStore,
|
62
72
|
IPolicy.PolicyInfo memory policyInfo
|
63
73
|
) = _verifyCallerWithPolicy(policyNftId);
|
64
74
|
|
@@ -78,7 +88,7 @@ contract ClaimService is
|
|
78
88
|
|
79
89
|
// create new claim
|
80
90
|
claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
|
81
|
-
|
91
|
+
instanceStore.createClaim(
|
82
92
|
policyNftId,
|
83
93
|
claimId,
|
84
94
|
IPolicy.ClaimInfo({
|
@@ -91,10 +101,10 @@ contract ClaimService is
|
|
91
101
|
closedAt: TimestampLib.zero()}));
|
92
102
|
|
93
103
|
// update and save policy info with instance
|
104
|
+
// policy claim amount is only updated when claim is confirmed
|
94
105
|
policyInfo.claimsCount += 1;
|
95
106
|
policyInfo.openClaimsCount += 1;
|
96
|
-
|
97
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
107
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
98
108
|
|
99
109
|
emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
|
100
110
|
}
|
@@ -108,10 +118,15 @@ contract ClaimService is
|
|
108
118
|
)
|
109
119
|
external
|
110
120
|
virtual
|
121
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
111
122
|
{
|
123
|
+
_checkNftType(policyNftId, POLICY());
|
124
|
+
|
112
125
|
(
|
126
|
+
NftId productNftId,
|
113
127
|
IInstance instance,
|
114
128
|
InstanceReader instanceReader,
|
129
|
+
InstanceStore instanceStore,
|
115
130
|
IPolicy.PolicyInfo memory policyInfo
|
116
131
|
) = _verifyCallerWithPolicy(policyNftId);
|
117
132
|
|
@@ -121,18 +136,27 @@ contract ClaimService is
|
|
121
136
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
122
137
|
claimInfo.claimAmount = confirmedAmount;
|
123
138
|
claimInfo.processData = data;
|
124
|
-
|
125
|
-
|
126
|
-
// TODO test if claim results in total claim amount == sum insured amount
|
127
|
-
// should policy still be active it needs to automatically become expired
|
139
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
|
128
140
|
|
129
141
|
// update and save policy info with instance
|
130
142
|
policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
|
131
|
-
|
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
|
+
}
|
132
149
|
|
133
150
|
emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
151
|
+
|
152
|
+
// callback to pool if applicable
|
153
|
+
_processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
|
154
|
+
|
155
|
+
// callback to policy holder if applicable
|
156
|
+
_policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
134
157
|
}
|
135
158
|
|
159
|
+
|
136
160
|
function decline(
|
137
161
|
NftId policyNftId,
|
138
162
|
ClaimId claimId,
|
@@ -140,10 +164,15 @@ contract ClaimService is
|
|
140
164
|
)
|
141
165
|
external
|
142
166
|
virtual
|
167
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
143
168
|
{
|
169
|
+
_checkNftType(policyNftId, POLICY());
|
170
|
+
|
144
171
|
(
|
172
|
+
,
|
145
173
|
IInstance instance,
|
146
174
|
InstanceReader instanceReader,
|
175
|
+
InstanceStore instanceStore,
|
147
176
|
IPolicy.PolicyInfo memory policyInfo
|
148
177
|
) = _verifyCallerWithPolicy(policyNftId);
|
149
178
|
|
@@ -151,11 +180,11 @@ contract ClaimService is
|
|
151
180
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
152
181
|
claimInfo.processData = data;
|
153
182
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
154
|
-
|
183
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
|
155
184
|
|
156
185
|
// update and save policy info with instance
|
157
186
|
policyInfo.openClaimsCount -= 1;
|
158
|
-
|
187
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
159
188
|
|
160
189
|
emit LogClaimServiceClaimDeclined(policyNftId, claimId);
|
161
190
|
}
|
@@ -168,21 +197,26 @@ contract ClaimService is
|
|
168
197
|
)
|
169
198
|
external
|
170
199
|
virtual
|
200
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
171
201
|
{
|
202
|
+
_checkNftType(policyNftId, POLICY());
|
203
|
+
|
172
204
|
(
|
205
|
+
,
|
173
206
|
IInstance instance,
|
174
207
|
InstanceReader instanceReader,
|
208
|
+
InstanceStore instanceStore,
|
175
209
|
IPolicy.PolicyInfo memory policyInfo
|
176
210
|
) = _verifyCallerWithPolicy(policyNftId);
|
177
211
|
|
178
212
|
// check/update claim info
|
179
213
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
180
214
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
181
|
-
|
215
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
|
182
216
|
|
183
217
|
// update and save policy info with instance
|
184
218
|
policyInfo.openClaimsCount -= 1;
|
185
|
-
|
219
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
186
220
|
|
187
221
|
emit LogClaimServiceClaimRevoked(policyNftId, claimId);
|
188
222
|
}
|
@@ -194,10 +228,15 @@ contract ClaimService is
|
|
194
228
|
)
|
195
229
|
external
|
196
230
|
virtual
|
231
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
197
232
|
{
|
233
|
+
_checkNftType(policyNftId, POLICY());
|
234
|
+
|
198
235
|
(
|
236
|
+
,
|
199
237
|
IInstance instance,
|
200
238
|
InstanceReader instanceReader,
|
239
|
+
InstanceStore instanceStore,
|
201
240
|
IPolicy.PolicyInfo memory policyInfo
|
202
241
|
) = _verifyCallerWithPolicy(policyNftId);
|
203
242
|
|
@@ -222,10 +261,10 @@ contract ClaimService is
|
|
222
261
|
}
|
223
262
|
|
224
263
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
225
|
-
|
264
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
226
265
|
}
|
227
266
|
|
228
|
-
|
267
|
+
|
229
268
|
function createPayoutForBeneficiary(
|
230
269
|
NftId policyNftId,
|
231
270
|
ClaimId claimId,
|
@@ -235,8 +274,11 @@ contract ClaimService is
|
|
235
274
|
)
|
236
275
|
external
|
237
276
|
virtual
|
277
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
238
278
|
returns (PayoutId payoutId)
|
239
279
|
{
|
280
|
+
_checkNftType(policyNftId, POLICY());
|
281
|
+
|
240
282
|
if (beneficiary == address(0)) {
|
241
283
|
revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
|
242
284
|
}
|
@@ -258,8 +300,11 @@ contract ClaimService is
|
|
258
300
|
)
|
259
301
|
external
|
260
302
|
virtual
|
303
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
261
304
|
returns (PayoutId payoutId)
|
262
305
|
{
|
306
|
+
_checkNftType(policyNftId, POLICY());
|
307
|
+
|
263
308
|
return _createPayout(
|
264
309
|
policyNftId,
|
265
310
|
claimId,
|
@@ -268,6 +313,96 @@ contract ClaimService is
|
|
268
313
|
data);
|
269
314
|
}
|
270
315
|
|
316
|
+
|
317
|
+
function processPayout(
|
318
|
+
NftId policyNftId,
|
319
|
+
PayoutId payoutId
|
320
|
+
)
|
321
|
+
external
|
322
|
+
virtual
|
323
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
324
|
+
{
|
325
|
+
_checkNftType(policyNftId, POLICY());
|
326
|
+
|
327
|
+
(
|
328
|
+
,
|
329
|
+
IInstance instance,
|
330
|
+
InstanceReader instanceReader,
|
331
|
+
InstanceStore instanceStore,
|
332
|
+
IPolicy.PolicyInfo memory policyInfo
|
333
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
334
|
+
|
335
|
+
// TODO add check that payout exists and is open
|
336
|
+
IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
|
337
|
+
|
338
|
+
// update and save payout info with instance
|
339
|
+
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
340
|
+
instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
341
|
+
|
342
|
+
Amount payoutAmount = payoutInfo.amount;
|
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
|
+
}
|
360
|
+
}
|
361
|
+
|
362
|
+
// update and save policy info with instance
|
363
|
+
policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
|
364
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
365
|
+
|
366
|
+
// inform pool about payout
|
367
|
+
_poolService.processPayout(
|
368
|
+
instance,
|
369
|
+
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
370
|
+
policyNftId,
|
371
|
+
policyInfo,
|
372
|
+
payoutAmount);
|
373
|
+
|
374
|
+
// transfer payout token and fee
|
375
|
+
{
|
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
|
+
}
|
397
|
+
|
398
|
+
// callback to policy holder if applicable
|
399
|
+
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
400
|
+
}
|
401
|
+
}
|
402
|
+
|
403
|
+
// internal functions
|
404
|
+
|
405
|
+
|
271
406
|
function _createPayout(
|
272
407
|
NftId policyNftId,
|
273
408
|
ClaimId claimId,
|
@@ -280,8 +415,10 @@ contract ClaimService is
|
|
280
415
|
returns (PayoutId payoutId)
|
281
416
|
{
|
282
417
|
(
|
283
|
-
|
418
|
+
,
|
419
|
+
,
|
284
420
|
InstanceReader instanceReader,
|
421
|
+
InstanceStore instanceStore,
|
285
422
|
IPolicy.PolicyInfo memory policyInfo
|
286
423
|
) = _verifyCallerWithPolicy(policyNftId);
|
287
424
|
|
@@ -294,9 +431,13 @@ contract ClaimService is
|
|
294
431
|
|
295
432
|
// check/update claim info
|
296
433
|
// create payout info with instance
|
297
|
-
|
298
|
-
payoutId = PayoutIdLib.toPayoutId(claimId,
|
299
|
-
|
434
|
+
uint24 payoutNo = claimInfo.payoutsCount + 1;
|
435
|
+
payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
|
436
|
+
if (beneficiary == address(0)) {
|
437
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
438
|
+
}
|
439
|
+
|
440
|
+
instanceStore.createPayout(
|
300
441
|
policyNftId,
|
301
442
|
payoutId,
|
302
443
|
IPolicy.PayoutInfo({
|
@@ -309,90 +450,16 @@ contract ClaimService is
|
|
309
450
|
// update and save claim info with instance
|
310
451
|
claimInfo.payoutsCount += 1;
|
311
452
|
claimInfo.openPayoutsCount += 1;
|
312
|
-
|
453
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
313
454
|
|
314
455
|
// update and save policy info with instance
|
315
456
|
policyInfo.payoutAmount.add(amount);
|
316
|
-
|
457
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
317
458
|
|
318
|
-
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
|
459
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
|
319
460
|
}
|
320
461
|
|
321
462
|
|
322
|
-
function processPayout(
|
323
|
-
NftId policyNftId,
|
324
|
-
PayoutId payoutId
|
325
|
-
)
|
326
|
-
external
|
327
|
-
virtual
|
328
|
-
{
|
329
|
-
(
|
330
|
-
IInstance instance,
|
331
|
-
InstanceReader instanceReader,
|
332
|
-
IPolicy.PolicyInfo memory policyInfo
|
333
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
334
|
-
|
335
|
-
// TODO add check that payout exists and is open
|
336
|
-
IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
|
337
|
-
|
338
|
-
// update and save payout info with instance
|
339
|
-
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
340
|
-
instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
341
|
-
|
342
|
-
// TODO update and save claim info with instance
|
343
|
-
ClaimId claimId = payoutId.toClaimId();
|
344
|
-
Amount payoutAmount = payoutInfo.amount;
|
345
|
-
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
346
|
-
claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
|
347
|
-
claimInfo.openPayoutsCount -= 1;
|
348
|
-
|
349
|
-
// check if this payout is closing the linked claim
|
350
|
-
// update claim and policy info accordingly
|
351
|
-
if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
|
352
|
-
claimInfo.closedAt == TimestampLib.blockTimestamp();
|
353
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
354
|
-
|
355
|
-
policyInfo.openClaimsCount -= 1;
|
356
|
-
} else {
|
357
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
358
|
-
}
|
359
|
-
|
360
|
-
// update and save policy info with instance
|
361
|
-
policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
|
362
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
363
|
-
|
364
|
-
// inform pool about payout
|
365
|
-
_poolService.reduceCollateral(
|
366
|
-
instance,
|
367
|
-
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
368
|
-
policyNftId,
|
369
|
-
policyInfo,
|
370
|
-
payoutAmount);
|
371
|
-
|
372
|
-
// transfer payout token and fee
|
373
|
-
(
|
374
|
-
Amount netPayoutAmount,
|
375
|
-
Amount processingFeeAmount,
|
376
|
-
address beneficiary
|
377
|
-
) = _calculatePayoutAmount(
|
378
|
-
instanceReader,
|
379
|
-
policyNftId,
|
380
|
-
policyInfo,
|
381
|
-
payoutInfo);
|
382
|
-
|
383
|
-
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
|
384
|
-
|
385
|
-
{
|
386
|
-
NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
|
387
|
-
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
388
|
-
poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
|
389
|
-
|
390
|
-
// TODO add 2nd token tx if processingFeeAmount > 0
|
391
|
-
}
|
392
|
-
|
393
|
-
// TODO callback IPolicyHolder
|
394
|
-
}
|
395
|
-
|
396
463
|
function _calculatePayoutAmount(
|
397
464
|
InstanceReader instanceReader,
|
398
465
|
NftId policyNftId,
|
@@ -430,7 +497,6 @@ contract ClaimService is
|
|
430
497
|
}
|
431
498
|
}
|
432
499
|
|
433
|
-
// internal functions
|
434
500
|
|
435
501
|
function _verifyCallerWithPolicy(
|
436
502
|
NftId policyNftId
|
@@ -439,14 +505,16 @@ contract ClaimService is
|
|
439
505
|
view
|
440
506
|
virtual
|
441
507
|
returns (
|
508
|
+
NftId productNftId,
|
442
509
|
IInstance instance,
|
443
510
|
InstanceReader instanceReader,
|
511
|
+
InstanceStore instanceStore,
|
444
512
|
IPolicy.PolicyInfo memory policyInfo
|
445
513
|
)
|
446
514
|
{
|
447
|
-
NftId productNftId;
|
448
515
|
(productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
449
516
|
instanceReader = instance.getInstanceReader();
|
517
|
+
instanceStore = instance.getInstanceStore();
|
450
518
|
|
451
519
|
// check caller(product) policy match
|
452
520
|
policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -480,6 +548,65 @@ contract ClaimService is
|
|
480
548
|
claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
481
549
|
}
|
482
550
|
|
551
|
+
function _processConfirmedClaimByPool(
|
552
|
+
InstanceReader instanceReader,
|
553
|
+
NftId productNftId,
|
554
|
+
NftId policyNftId,
|
555
|
+
ClaimId claimId,
|
556
|
+
Amount amount
|
557
|
+
)
|
558
|
+
internal
|
559
|
+
{
|
560
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
561
|
+
if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
|
562
|
+
address poolAddress = getRegistry().getObjectAddress(poolNftId);
|
563
|
+
IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
|
564
|
+
}
|
565
|
+
}
|
566
|
+
|
567
|
+
|
568
|
+
function _policyHolderClaimConfirmed(
|
569
|
+
NftId policyNftId,
|
570
|
+
ClaimId claimId,
|
571
|
+
Amount confirmedAmount
|
572
|
+
)
|
573
|
+
internal
|
574
|
+
{
|
575
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
576
|
+
if(address(policyHolder) != address(0)) {
|
577
|
+
policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
|
578
|
+
}
|
579
|
+
}
|
580
|
+
|
581
|
+
|
582
|
+
function _policyHolderPayoutExecuted(
|
583
|
+
NftId policyNftId,
|
584
|
+
PayoutId payoutId,
|
585
|
+
address beneficiary,
|
586
|
+
Amount payoutAmount
|
587
|
+
)
|
588
|
+
internal
|
589
|
+
{
|
590
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
591
|
+
if(address(policyHolder) != address(0)) {
|
592
|
+
policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
|
593
|
+
}
|
594
|
+
}
|
595
|
+
|
596
|
+
|
597
|
+
function _getPolicyHolder(NftId policyNftId)
|
598
|
+
internal
|
599
|
+
view
|
600
|
+
returns (IPolicyHolder policyHolder)
|
601
|
+
{
|
602
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
603
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
604
|
+
|
605
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
606
|
+
policyHolder = IPolicyHolder(address(0));
|
607
|
+
}
|
608
|
+
}
|
609
|
+
|
483
610
|
|
484
611
|
function _getDomain() internal pure override returns(ObjectType) {
|
485
612
|
return CLAIM();
|
@@ -12,14 +12,14 @@ contract ClaimServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with service implementation
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
19
|
ClaimService svc = new ClaimService{salt: salt}();
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
23
|
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
@@ -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);
|
@@ -35,7 +36,7 @@ interface IClaimService is
|
|
35
36
|
error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
|
36
37
|
error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
|
37
38
|
|
38
|
-
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId,
|
39
|
+
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint24 openPayouts);
|
39
40
|
error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
|
40
41
|
error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
|
41
42
|
|
@@ -4,12 +4,20 @@ 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";
|
10
11
|
|
11
12
|
interface IPolicyService is IService {
|
12
13
|
|
14
|
+
event LogPolicyServicePolicyCreated(NftId policyNftId, Amount premiumAmount, Timestamp activatedAt);
|
15
|
+
event LogPolicyServicePolicyDeclined(NftId policyNftId);
|
16
|
+
event LogPolicyServicePolicyPremiumCollected(NftId policyNftId, Amount premiumAmount);
|
17
|
+
event LogPolicyServicePolicyActivated(NftId policyNftId, Timestamp activatedAt);
|
18
|
+
event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp originalExpiredAt, Timestamp expiredAt);
|
19
|
+
event LogPolicyServicePolicyClosed(NftId policyNftId);
|
20
|
+
|
13
21
|
error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
|
14
22
|
error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
|
15
23
|
error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
|
@@ -32,9 +40,6 @@ interface IPolicyService is IService {
|
|
32
40
|
error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
|
33
41
|
error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
|
34
42
|
|
35
|
-
event LogPolicyServicePolicyDeclined(NftId policyNftId);
|
36
|
-
event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
|
37
|
-
|
38
43
|
/// @dev creates the policy from {applicationNftId}.
|
39
44
|
/// After successful completion of the function the policy can be referenced using the application NftId.
|
40
45
|
/// Locks the sum insured amount in the pool, but does not transfer tokens. Call collectPremium to transfer tokens.
|
@@ -44,7 +49,9 @@ interface IPolicyService is IService {
|
|
44
49
|
function createPolicy(
|
45
50
|
NftId applicationNftId,
|
46
51
|
Timestamp activateAt
|
47
|
-
)
|
52
|
+
)
|
53
|
+
external
|
54
|
+
returns (Amount premiumAmount);
|
48
55
|
|
49
56
|
/// @dev declines an application represented by {policyNftId}
|
50
57
|
/// an application can only be declined in applied state
|
@@ -65,6 +72,8 @@ interface IPolicyService is IService {
|
|
65
72
|
/// @return expiredAt the effective expiry date
|
66
73
|
function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
67
74
|
|
75
|
+
function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
76
|
+
|
68
77
|
/// @dev closes the specified policy and sets the closed data in the policy metadata
|
69
78
|
/// a policy can only be closed when it has been expired. in addition, it must not have any open claims
|
70
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,
|