@etherisc/gif-next 0.0.2-f8e07c7-917 → 0.0.2-f946ccd-184
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -248
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +24 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +24 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1712 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +97 -100
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
- 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 +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +32 -238
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -222
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +36 -284
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +396 -163
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +26 -95
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +26 -280
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +269 -248
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +66 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -225
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +372 -316
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +3 -225
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +221 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +419 -82
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +243 -131
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- 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 +0 -211
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +132 -199
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -114
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +56 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -222
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- 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 +7 -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/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +39 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +25 -24
- package/contracts/authorization/Authorization.sol +0 -1
- package/contracts/authorization/IAccessAdmin.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +2 -1
- package/contracts/distribution/Distribution.sol +22 -11
- package/contracts/distribution/DistributionService.sol +73 -25
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +6 -1
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +324 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +35 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +10 -35
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +32 -7
- package/contracts/instance/InstanceService.sol +62 -39
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -6
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +22 -22
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +4 -7
- package/contracts/oracle/OracleService.sol +9 -6
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +8 -2
- package/contracts/pool/BundleService.sol +184 -30
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +7 -0
- package/contracts/pool/IPoolService.sol +36 -26
- package/contracts/pool/Pool.sol +39 -24
- package/contracts/pool/PoolService.sol +157 -85
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +43 -26
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/ClaimService.sol +208 -78
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +28 -5
- package/contracts/product/IPolicyService.sol +31 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +0 -1
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +370 -194
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +67 -34
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +49 -15
- package/contracts/registry/Registry.sol +321 -195
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +2 -2
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +12 -8
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +23 -29
- package/contracts/shared/ComponentService.sol +51 -32
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +5 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +4 -4
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +14 -58
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +16 -11
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +11 -27
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +15 -11
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +1 -0
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/contracts/upgradeability/ProxyManager.sol +67 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/contracts/product/ProductServiceManager.sol +0 -39
@@ -7,15 +7,17 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
7
7
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
8
8
|
import {TimestampLib} from "../type/Timestamp.sol";
|
9
9
|
import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
|
10
|
-
import {SUBMITTED, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
|
10
|
+
import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
|
11
11
|
import {NftId} from "../type/NftId.sol";
|
12
12
|
import {FeeLib} from "../type/Fee.sol";
|
13
13
|
import {StateId} from "../type/StateId.sol";
|
14
14
|
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
15
15
|
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
16
16
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
17
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
17
18
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
18
19
|
import {IClaimService} from "./IClaimService.sol";
|
20
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
19
21
|
import {IPoolService} from "../pool/IPoolService.sol";
|
20
22
|
|
21
23
|
|
@@ -35,16 +37,15 @@ contract ClaimService is
|
|
35
37
|
initializer()
|
36
38
|
{
|
37
39
|
(
|
38
|
-
address registryAddress
|
39
|
-
//address managerAddress
|
40
|
+
address registryAddress,
|
40
41
|
address authority
|
41
|
-
) = abi.decode(data, (address, address
|
42
|
+
) = abi.decode(data, (address, address));
|
42
43
|
|
43
|
-
|
44
|
+
_initializeService(registryAddress, authority, owner);
|
44
45
|
|
45
46
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
46
47
|
|
47
|
-
|
48
|
+
_registerInterface(type(IClaimService).interfaceId);
|
48
49
|
}
|
49
50
|
|
50
51
|
function submit(
|
@@ -54,6 +55,7 @@ contract ClaimService is
|
|
54
55
|
)
|
55
56
|
external
|
56
57
|
virtual
|
58
|
+
nonReentrant()
|
57
59
|
returns (ClaimId claimId)
|
58
60
|
{
|
59
61
|
(
|
@@ -67,6 +69,7 @@ contract ClaimService is
|
|
67
69
|
revert ErrorClaimServicePolicyNotOpen(policyNftId);
|
68
70
|
}
|
69
71
|
|
72
|
+
// TODO check claim amount > 0
|
70
73
|
// check policy including this claim is still within sum insured
|
71
74
|
if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
|
72
75
|
revert ErrorClaimServiceClaimExceedsSumInsured(
|
@@ -80,14 +83,14 @@ contract ClaimService is
|
|
80
83
|
instance.getInstanceStore().createClaim(
|
81
84
|
policyNftId,
|
82
85
|
claimId,
|
83
|
-
IPolicy.ClaimInfo(
|
84
|
-
claimAmount,
|
85
|
-
AmountLib.zero(),
|
86
|
-
0,
|
87
|
-
0,
|
88
|
-
claimData,
|
89
|
-
"",
|
90
|
-
TimestampLib.zero()));
|
86
|
+
IPolicy.ClaimInfo({
|
87
|
+
claimAmount: claimAmount,
|
88
|
+
paidAmount: AmountLib.zero(),
|
89
|
+
payoutsCount: 0,
|
90
|
+
openPayoutsCount: 0,
|
91
|
+
submissionData: claimData,
|
92
|
+
processData: "",
|
93
|
+
closedAt: TimestampLib.zero()}));
|
91
94
|
|
92
95
|
// update and save policy info with instance
|
93
96
|
policyInfo.claimsCount += 1;
|
@@ -107,6 +110,7 @@ contract ClaimService is
|
|
107
110
|
)
|
108
111
|
external
|
109
112
|
virtual
|
113
|
+
nonReentrant()
|
110
114
|
{
|
111
115
|
(
|
112
116
|
IInstance instance,
|
@@ -114,19 +118,28 @@ contract ClaimService is
|
|
114
118
|
IPolicy.PolicyInfo memory policyInfo
|
115
119
|
) = _verifyCallerWithPolicy(policyNftId);
|
116
120
|
|
121
|
+
// TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
|
122
|
+
|
117
123
|
// check/update claim info
|
118
124
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
119
125
|
claimInfo.claimAmount = confirmedAmount;
|
120
126
|
claimInfo.processData = data;
|
121
127
|
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
|
122
128
|
|
129
|
+
// TODO test if claim results in total claim amount == sum insured amount
|
130
|
+
// should policy still be active it needs to automatically become expired
|
131
|
+
|
123
132
|
// update and save policy info with instance
|
124
133
|
policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
|
125
134
|
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
126
135
|
|
127
136
|
emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
137
|
+
|
138
|
+
// callback to policy holder if applicable
|
139
|
+
_policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
128
140
|
}
|
129
141
|
|
142
|
+
|
130
143
|
function decline(
|
131
144
|
NftId policyNftId,
|
132
145
|
ClaimId claimId,
|
@@ -134,6 +147,7 @@ contract ClaimService is
|
|
134
147
|
)
|
135
148
|
external
|
136
149
|
virtual
|
150
|
+
nonReentrant()
|
137
151
|
{
|
138
152
|
(
|
139
153
|
IInstance instance,
|
@@ -154,12 +168,42 @@ contract ClaimService is
|
|
154
168
|
emit LogClaimServiceClaimDeclined(policyNftId, claimId);
|
155
169
|
}
|
156
170
|
|
171
|
+
|
172
|
+
// TODO add test case
|
173
|
+
function revoke(
|
174
|
+
NftId policyNftId,
|
175
|
+
ClaimId claimId
|
176
|
+
)
|
177
|
+
external
|
178
|
+
virtual
|
179
|
+
nonReentrant()
|
180
|
+
{
|
181
|
+
(
|
182
|
+
IInstance instance,
|
183
|
+
InstanceReader instanceReader,
|
184
|
+
IPolicy.PolicyInfo memory policyInfo
|
185
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
186
|
+
|
187
|
+
// check/update claim info
|
188
|
+
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
189
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
190
|
+
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, REVOKED());
|
191
|
+
|
192
|
+
// update and save policy info with instance
|
193
|
+
policyInfo.openClaimsCount -= 1;
|
194
|
+
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
195
|
+
|
196
|
+
emit LogClaimServiceClaimRevoked(policyNftId, claimId);
|
197
|
+
}
|
198
|
+
|
199
|
+
|
157
200
|
function close(
|
158
201
|
NftId policyNftId,
|
159
202
|
ClaimId claimId
|
160
203
|
)
|
161
204
|
external
|
162
205
|
virtual
|
206
|
+
nonReentrant()
|
163
207
|
{
|
164
208
|
(
|
165
209
|
IInstance instance,
|
@@ -192,51 +236,48 @@ contract ClaimService is
|
|
192
236
|
}
|
193
237
|
|
194
238
|
|
195
|
-
function
|
239
|
+
function createPayoutForBeneficiary(
|
196
240
|
NftId policyNftId,
|
197
241
|
ClaimId claimId,
|
198
242
|
Amount amount,
|
243
|
+
address beneficiary,
|
199
244
|
bytes memory data
|
200
245
|
)
|
201
246
|
external
|
247
|
+
virtual
|
248
|
+
nonReentrant()
|
202
249
|
returns (PayoutId payoutId)
|
203
250
|
{
|
204
|
-
(
|
205
|
-
|
206
|
-
|
207
|
-
IPolicy.PolicyInfo memory policyInfo
|
208
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
209
|
-
|
210
|
-
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
211
|
-
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
212
|
-
|
213
|
-
// TODO add checks
|
214
|
-
// claim needs to be open
|
215
|
-
// claim.paidAmount + amount <= claim.claimAmount
|
251
|
+
if (beneficiary == address(0)) {
|
252
|
+
revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
|
253
|
+
}
|
216
254
|
|
217
|
-
|
218
|
-
// create payout info with instance
|
219
|
-
uint8 claimNo = claimInfo.payoutsCount + 1;
|
220
|
-
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
221
|
-
instance.getInstanceStore().createPayout(
|
255
|
+
return _createPayout(
|
222
256
|
policyNftId,
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
TimestampLib.zero()));
|
229
|
-
|
230
|
-
// update and save claim info with instance
|
231
|
-
claimInfo.payoutsCount += 1;
|
232
|
-
claimInfo.openPayoutsCount += 1;
|
233
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
257
|
+
claimId,
|
258
|
+
amount,
|
259
|
+
beneficiary,
|
260
|
+
data);
|
261
|
+
}
|
234
262
|
|
235
|
-
// update and save policy info with instance
|
236
|
-
policyInfo.payoutAmount.add(amount);
|
237
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
238
263
|
|
239
|
-
|
264
|
+
function createPayout(
|
265
|
+
NftId policyNftId,
|
266
|
+
ClaimId claimId,
|
267
|
+
Amount amount,
|
268
|
+
bytes memory data
|
269
|
+
)
|
270
|
+
external
|
271
|
+
virtual
|
272
|
+
nonReentrant()
|
273
|
+
returns (PayoutId payoutId)
|
274
|
+
{
|
275
|
+
return _createPayout(
|
276
|
+
policyNftId,
|
277
|
+
claimId,
|
278
|
+
amount,
|
279
|
+
address(0), // defaults to owner of policy nft
|
280
|
+
data);
|
240
281
|
}
|
241
282
|
|
242
283
|
|
@@ -246,6 +287,7 @@ contract ClaimService is
|
|
246
287
|
)
|
247
288
|
external
|
248
289
|
virtual
|
290
|
+
nonReentrant()
|
249
291
|
{
|
250
292
|
(
|
251
293
|
IInstance instance,
|
@@ -260,7 +302,6 @@ contract ClaimService is
|
|
260
302
|
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
261
303
|
instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
262
304
|
|
263
|
-
// TODO update and save claim info with instance
|
264
305
|
ClaimId claimId = payoutId.toClaimId();
|
265
306
|
Amount payoutAmount = payoutInfo.amount;
|
266
307
|
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
@@ -293,20 +334,83 @@ contract ClaimService is
|
|
293
334
|
// transfer payout token and fee
|
294
335
|
(
|
295
336
|
Amount netPayoutAmount,
|
337
|
+
Amount processingFeeAmount,
|
296
338
|
address beneficiary
|
297
|
-
) =
|
339
|
+
) = _calculatePayoutAmount(
|
298
340
|
instanceReader,
|
299
341
|
policyNftId,
|
300
342
|
policyInfo,
|
301
343
|
payoutInfo);
|
302
344
|
|
303
|
-
|
345
|
+
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
|
346
|
+
|
347
|
+
{
|
348
|
+
NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
|
349
|
+
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
350
|
+
poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
|
351
|
+
|
352
|
+
// TODO add 2nd token tx if processingFeeAmount > 0
|
353
|
+
}
|
304
354
|
|
305
|
-
|
355
|
+
// callback to policy holder if applicable
|
356
|
+
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
306
357
|
}
|
307
358
|
|
308
|
-
//
|
309
|
-
|
359
|
+
// internal functions
|
360
|
+
|
361
|
+
|
362
|
+
function _createPayout(
|
363
|
+
NftId policyNftId,
|
364
|
+
ClaimId claimId,
|
365
|
+
Amount amount,
|
366
|
+
address beneficiary,
|
367
|
+
bytes memory data
|
368
|
+
)
|
369
|
+
internal
|
370
|
+
virtual
|
371
|
+
returns (PayoutId payoutId)
|
372
|
+
{
|
373
|
+
(
|
374
|
+
IInstance instance,
|
375
|
+
InstanceReader instanceReader,
|
376
|
+
IPolicy.PolicyInfo memory policyInfo
|
377
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
378
|
+
|
379
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
380
|
+
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
381
|
+
|
382
|
+
// TODO add checks
|
383
|
+
// claim needs to be open
|
384
|
+
// claim.paidAmount + amount <= claim.claimAmount
|
385
|
+
|
386
|
+
// check/update claim info
|
387
|
+
// create payout info with instance
|
388
|
+
uint8 claimNo = claimInfo.payoutsCount + 1;
|
389
|
+
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
390
|
+
instance.getInstanceStore().createPayout(
|
391
|
+
policyNftId,
|
392
|
+
payoutId,
|
393
|
+
IPolicy.PayoutInfo({
|
394
|
+
claimId: payoutId.toClaimId(),
|
395
|
+
amount: amount,
|
396
|
+
beneficiary: beneficiary,
|
397
|
+
data: data,
|
398
|
+
paidAt: TimestampLib.zero()}));
|
399
|
+
|
400
|
+
// update and save claim info with instance
|
401
|
+
claimInfo.payoutsCount += 1;
|
402
|
+
claimInfo.openPayoutsCount += 1;
|
403
|
+
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
404
|
+
|
405
|
+
// update and save policy info with instance
|
406
|
+
policyInfo.payoutAmount.add(amount);
|
407
|
+
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
408
|
+
|
409
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
|
410
|
+
}
|
411
|
+
|
412
|
+
|
413
|
+
function _calculatePayoutAmount(
|
310
414
|
InstanceReader instanceReader,
|
311
415
|
NftId policyNftId,
|
312
416
|
IPolicy.PolicyInfo memory policyInfo,
|
@@ -315,6 +419,7 @@ contract ClaimService is
|
|
315
419
|
internal
|
316
420
|
returns (
|
317
421
|
Amount netPayoutAmount,
|
422
|
+
Amount processingFeeAmount,
|
318
423
|
address beneficiary
|
319
424
|
)
|
320
425
|
{
|
@@ -328,38 +433,20 @@ contract ClaimService is
|
|
328
433
|
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
329
434
|
|
330
435
|
netPayoutAmount = payoutAmount;
|
331
|
-
|
436
|
+
|
437
|
+
if (payoutInfo.beneficiary == address(0)) {
|
438
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
439
|
+
} else {
|
440
|
+
beneficiary = payoutInfo.beneficiary;
|
441
|
+
}
|
332
442
|
|
333
443
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
334
444
|
if(FeeLib.gtz(productInfo.processingFee)) {
|
335
|
-
// TODO calculate net payout and processing fees
|
336
|
-
// TODO transfer processing fees to product wallet
|
337
|
-
// TODO inform product to update fee book keeping
|
445
|
+
// TODO calculate and set net payout and processing fees
|
338
446
|
}
|
339
|
-
|
340
|
-
poolInfo.tokenHandler.transfer(
|
341
|
-
poolInfo.wallet,
|
342
|
-
beneficiary,
|
343
|
-
netPayoutAmount);
|
344
447
|
}
|
345
448
|
}
|
346
449
|
|
347
|
-
// internal functions
|
348
|
-
|
349
|
-
function _getBeneficiary(
|
350
|
-
NftId policyNftId,
|
351
|
-
ClaimId claimId
|
352
|
-
)
|
353
|
-
internal
|
354
|
-
returns (address beneficiary)
|
355
|
-
{
|
356
|
-
// TODO check if owner is IPolicyHolder
|
357
|
-
// if so, obtain beneficiary from this contract
|
358
|
-
|
359
|
-
// default beneficiary is policy nft owner
|
360
|
-
beneficiary = getRegistry().ownerOf(policyNftId);
|
361
|
-
}
|
362
|
-
|
363
450
|
|
364
451
|
function _verifyCallerWithPolicy(
|
365
452
|
NftId policyNftId
|
@@ -410,6 +497,49 @@ contract ClaimService is
|
|
410
497
|
}
|
411
498
|
|
412
499
|
|
500
|
+
function _policyHolderClaimConfirmed(
|
501
|
+
NftId policyNftId,
|
502
|
+
ClaimId claimId,
|
503
|
+
Amount confirmedAmount
|
504
|
+
)
|
505
|
+
internal
|
506
|
+
{
|
507
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
508
|
+
if(address(policyHolder) != address(0)) {
|
509
|
+
policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
|
510
|
+
}
|
511
|
+
}
|
512
|
+
|
513
|
+
|
514
|
+
function _policyHolderPayoutExecuted(
|
515
|
+
NftId policyNftId,
|
516
|
+
PayoutId payoutId,
|
517
|
+
address beneficiary,
|
518
|
+
Amount payoutAmount
|
519
|
+
)
|
520
|
+
internal
|
521
|
+
{
|
522
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
523
|
+
if(address(policyHolder) != address(0)) {
|
524
|
+
policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
|
525
|
+
}
|
526
|
+
}
|
527
|
+
|
528
|
+
|
529
|
+
function _getPolicyHolder(NftId policyNftId)
|
530
|
+
internal
|
531
|
+
view
|
532
|
+
returns (IPolicyHolder policyHolder)
|
533
|
+
{
|
534
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
535
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
536
|
+
|
537
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
538
|
+
policyHolder = IPolicyHolder(address(0));
|
539
|
+
}
|
540
|
+
}
|
541
|
+
|
542
|
+
|
413
543
|
function _getDomain() internal pure override returns(ObjectType) {
|
414
544
|
return CLAIM();
|
415
545
|
}
|
@@ -12,14 +12,14 @@ contract ClaimServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with service implementation
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
19
|
ClaimService svc = new ClaimService{salt: salt}();
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
23
|
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
@@ -23,14 +23,17 @@ interface IClaimService is
|
|
23
23
|
event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
|
24
24
|
event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
|
25
25
|
event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
|
26
|
+
event LogClaimServiceClaimRevoked(NftId policyNftId, ClaimId claimId);
|
26
27
|
event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
|
27
28
|
|
28
29
|
event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
|
29
|
-
event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
|
30
|
+
event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
|
30
31
|
|
31
32
|
error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
|
32
33
|
error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
|
33
34
|
error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
|
35
|
+
error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
|
36
|
+
error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
|
34
37
|
|
35
38
|
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
|
36
39
|
error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
|
@@ -46,9 +49,6 @@ interface IClaimService is
|
|
46
49
|
) external returns (ClaimId claimId);
|
47
50
|
|
48
51
|
|
49
|
-
// TODO add claim revoke functionality
|
50
|
-
|
51
|
-
|
52
52
|
/// @dev declines the specified claim
|
53
53
|
/// function can only be called by product, policy needs to match with calling product
|
54
54
|
function decline(
|
@@ -58,6 +58,14 @@ interface IClaimService is
|
|
58
58
|
) external;
|
59
59
|
|
60
60
|
|
61
|
+
/// @dev revokes the specified claim
|
62
|
+
/// function can only be called by product, policy needs to match with calling product
|
63
|
+
function revoke(
|
64
|
+
NftId policyNftId,
|
65
|
+
ClaimId claimId
|
66
|
+
) external;
|
67
|
+
|
68
|
+
|
61
69
|
/// @dev confirms the specified claim and specifies the payout amount
|
62
70
|
/// function can only be called by product, policy needs to match with calling product
|
63
71
|
function confirm(
|
@@ -76,7 +84,8 @@ interface IClaimService is
|
|
76
84
|
) external;
|
77
85
|
|
78
86
|
|
79
|
-
/// @dev
|
87
|
+
/// @dev Creates a new payout for the specified claim.
|
88
|
+
/// The beneficiary is the holder of the policy NFT
|
80
89
|
/// returns the id of the newly created payout, this id is unique for the specified policy
|
81
90
|
/// function can only be called by product, policy needs to match with calling product
|
82
91
|
function createPayout(
|
@@ -89,6 +98,20 @@ interface IClaimService is
|
|
89
98
|
returns (PayoutId payoutId);
|
90
99
|
|
91
100
|
|
101
|
+
/// @dev Creates a new payout for the specified claim and beneficiary.
|
102
|
+
/// returns the id of the newly created payout, this id is unique for the specified policy
|
103
|
+
/// function can only be called by product, policy needs to match with calling product
|
104
|
+
function createPayoutForBeneficiary(
|
105
|
+
NftId policyNftId,
|
106
|
+
ClaimId claimId,
|
107
|
+
Amount amount,
|
108
|
+
address beneficiary,
|
109
|
+
bytes memory data
|
110
|
+
)
|
111
|
+
external
|
112
|
+
returns (PayoutId payoutId);
|
113
|
+
|
114
|
+
|
92
115
|
/// @dev processes the specified payout
|
93
116
|
/// this includes moving the payout token to the beneficiary (default: policy holder)
|
94
117
|
/// function can only be called by product, policy needs to match with calling product
|
@@ -1,54 +1,52 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IRisk} from "../instance/module/IRisk.sol";
|
5
4
|
import {IService} from "../shared/IService.sol";
|
6
5
|
|
7
6
|
import {Amount} from "../type/Amount.sol";
|
8
|
-
import {ClaimId} from "../type/ClaimId.sol";
|
9
7
|
import {NftId} from "../type/NftId.sol";
|
10
|
-
import {PayoutId} from "../type/PayoutId.sol";
|
11
|
-
import {ReferralId} from "../type/Referral.sol";
|
12
|
-
import {RiskId} from "../type/RiskId.sol";
|
13
|
-
import {Seconds} from "../type/Seconds.sol";
|
14
8
|
import {StateId} from "../type/StateId.sol";
|
15
9
|
import {Timestamp} from "../type/Timestamp.sol";
|
16
|
-
import {UFixed} from "../type/UFixed.sol";
|
17
|
-
import {Fee} from "../type/Fee.sol";
|
18
10
|
|
19
11
|
interface IPolicyService is IService {
|
20
12
|
|
13
|
+
event LogPolicyServicePolicyCreated(NftId policyNftId, Amount premiumAmount, Timestamp activatedAt);
|
14
|
+
event LogPolicyServicePolicyDeclined(NftId policyNftId);
|
15
|
+
event LogPolicyServicePolicyPremiumCollected(NftId policyNftId, Amount premiumAmount);
|
16
|
+
event LogPolicyServicePolicyActivated(NftId policyNftId, Timestamp activatedAt);
|
17
|
+
event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp originalExpiredAt, Timestamp expiredAt);
|
18
|
+
event LogPolicyServicePolicyClosed(NftId policyNftId);
|
19
|
+
|
21
20
|
error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
|
22
21
|
error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
|
23
|
-
error
|
22
|
+
error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
|
23
|
+
error ErrorPolicyServicePolicyAlreadyActivated(NftId policyNftId);
|
24
24
|
|
25
|
-
error ErrorPolicyServicePremiumHigherThanExpected(Amount premiumExpectedAmount, Amount premiumToBePaidAmount);
|
26
25
|
error ErrorPolicyServiceBalanceInsufficient(address policyOwner, uint256 premiumAmount, uint256 balance);
|
27
26
|
error ErrorPolicyServiceAllowanceInsufficient(address policyOwner, address tokenHandler, uint256 premiumAmount, uint256 allowance);
|
28
27
|
|
29
|
-
error
|
30
|
-
error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId
|
31
|
-
error
|
32
|
-
error
|
33
|
-
error
|
34
|
-
error
|
35
|
-
error
|
36
|
-
error
|
28
|
+
error ErrorPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
|
29
|
+
error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId);
|
30
|
+
error ErrorPolicyServicePolicyNotActivated(NftId policyNftId);
|
31
|
+
error ErrorPolicyServicePolicyAlreadyClosed(NftId policyNftId);
|
32
|
+
error ErrorPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
|
33
|
+
error ErrorPolicyServicePremiumNotPaid(NftId policyNftId, Amount premiumAmount);
|
34
|
+
error ErrorPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
|
35
|
+
error ErrorPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
|
36
|
+
error ErrorPolicyServicePolicyExpirationTooLate(NftId policyNftId, Timestamp upperLimit, Timestamp expiredAt);
|
37
|
+
error ErrorPolicyServicePolicyExpirationTooEarly(NftId policyNftId, Timestamp lowerLimit, Timestamp expiredAt);
|
37
38
|
|
38
39
|
error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
|
39
40
|
error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
|
40
41
|
|
41
|
-
/// @dev
|
42
|
-
///
|
43
|
-
///
|
44
|
-
///
|
45
|
-
///
|
46
|
-
///
|
47
|
-
|
48
|
-
|
49
|
-
function collateralize(
|
50
|
-
NftId policyNftId,
|
51
|
-
bool requirePremiumPayment,
|
42
|
+
/// @dev creates the policy from {applicationNftId}.
|
43
|
+
/// After successful completion of the function the policy can be referenced using the application NftId.
|
44
|
+
/// Locks the sum insured amount in the pool, but does not transfer tokens. Call collectPremium to transfer tokens.
|
45
|
+
/// Sets the policy state to collateralized.
|
46
|
+
/// Optionally activates the policy if activateAt is a non-zero timestamp.
|
47
|
+
/// only the related product may create a policy from an application
|
48
|
+
function createPolicy(
|
49
|
+
NftId applicationNftId,
|
52
50
|
Timestamp activateAt
|
53
51
|
) external;
|
54
52
|
|
@@ -57,18 +55,19 @@ interface IPolicyService is IService {
|
|
57
55
|
/// only the related product may decline an application
|
58
56
|
function decline(NftId policyNftId) external;
|
59
57
|
|
60
|
-
/// @dev collects the premium token for the specified policy
|
58
|
+
/// @dev collects the premium token for the specified policy (must be in COLLATERALIZED state)
|
61
59
|
function collectPremium(NftId policyNftId, Timestamp activateAt) external;
|
62
60
|
|
63
61
|
/// @dev activates the specified policy and sets the activation date in the policy metadata
|
64
62
|
/// to activate a policy it needs to be in underwritten state
|
65
63
|
function activate(NftId policyNftId, Timestamp activateAt) external;
|
66
64
|
|
67
|
-
/// @dev expires the specified policy and sets the expiry date in the policy metadata
|
65
|
+
/// @dev expires the specified policy and sets the expiry date in the policy metadata. If expiry date is set to 0, then the earliest possible expiry date (current blocktime) is set
|
68
66
|
/// to expire a policy it must be in active state, policies may be expired even when the predefined expiry date is still in the future
|
69
67
|
/// a policy can only be closed when it has been expired. in addition, it must not have any open claims
|
70
68
|
/// this function can only be called by a product. the policy needs to match with the calling product
|
71
|
-
|
69
|
+
/// @return expiredAt the effective expiry date
|
70
|
+
function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
72
71
|
|
73
72
|
/// @dev closes the specified policy and sets the closed data in the policy metadata
|
74
73
|
/// a policy can only be closed when it has been expired. in addition, it must not have any open claims
|