@etherisc/gif-next 0.0.2-b3a9c97-695 → 0.0.2-b3e9a44-364
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 +5 -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 +52 -212
- 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 +16 -184
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +148 -284
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +100 -120
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +16 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +65 -31
- 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 +1507 -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 +1978 -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 +1427 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1187 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1561 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1996 -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 +16 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +16 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +26 -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 +424 -74
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +55 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +77 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +249 -111
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +42 -202
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
- 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 +16 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +16 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +16 -184
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +53 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +76 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +45 -185
- 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 +146 -220
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +115 -107
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +40 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +48 -41
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +219 -118
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -185
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +284 -300
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +96 -92
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +47 -146
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +73 -81
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +44 -210
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +256 -229
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +117 -109
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +16 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +148 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +128 -16
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +59 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +44 -63
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +18 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +218 -289
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +108 -128
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +133 -261
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +97 -117
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +44 -210
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +604 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +698 -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 +288 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +16 -0
- 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 +494 -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 +39 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -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 +16 -173
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +103 -265
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +112 -126
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +21 -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 +16 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +16 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +16 -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/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 +16 -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 +16 -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 +16 -184
- 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 +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 +24 -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 +21 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +288 -16
- 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 +43 -27
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +16 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -248
- 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 +93 -100
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +47 -159
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +72 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +84 -84
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -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 +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/Seconds.sol/SecondsLib.json +26 -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 +2 -2
- 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 +55 -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 +5 -2
- package/contracts/authorization/IAccessAdmin.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +2 -0
- package/contracts/distribution/Distribution.sol +3 -2
- package/contracts/distribution/DistributionService.sol +70 -45
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionService.sol +8 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +411 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -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 +29 -7
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +106 -19
- package/contracts/instance/InstanceService.sol +12 -14
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +7 -1
- package/contracts/instance/module/IComponents.sol +4 -2
- package/contracts/instance/module/IPolicy.sol +23 -23
- package/contracts/oracle/Oracle.sol +2 -1
- package/contracts/oracle/OracleService.sol +41 -33
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +12 -13
- package/contracts/pool/BundleService.sol +41 -17
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +10 -0
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +49 -25
- package/contracts/pool/Pool.sol +61 -32
- package/contracts/pool/PoolService.sol +116 -77
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +13 -12
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +245 -81
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +30 -7
- package/contracts/product/IPolicyService.sol +16 -20
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +17 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +209 -118
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +42 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +67 -46
- 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 +55 -15
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +336 -197
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +55 -48
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +12 -6
- package/contracts/registry/ServiceAuthorizationV3.sol +6 -8
- package/contracts/shared/Component.sol +12 -32
- package/contracts/shared/ComponentService.sol +17 -16
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +0 -1
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -7
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +5 -6
- package/contracts/shared/NftOwnable.sol +21 -5
- package/contracts/shared/PolicyHolder.sol +15 -52
- 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 +99 -22
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +11 -29
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +3 -17
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- 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 +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +1 -0
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +67 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -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/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -1,22 +1,14 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Amount
|
5
|
-
import {
|
6
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {Fee} from "../type/Fee.sol";
|
7
6
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
12
|
-
import {IComponentService} from "../shared/IComponentService.sol";
|
13
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
14
|
-
import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
|
15
|
-
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {BUNDLE} from "../type/ObjectType.sol";
|
9
|
+
import {RoleId} from "../type/RoleId.sol";
|
16
10
|
import {Seconds} from "../type/Seconds.sol";
|
17
11
|
import {Timestamp} from "../type/Timestamp.sol";
|
18
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
19
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
20
12
|
|
21
13
|
import {Pool} from "./Pool.sol";
|
22
14
|
|
@@ -56,6 +48,7 @@ abstract contract BasicPool is
|
|
56
48
|
virtual
|
57
49
|
restricted()
|
58
50
|
onlyBundleOwner(bundleNftId)
|
51
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
59
52
|
{
|
60
53
|
_stake(bundleNftId, amount);
|
61
54
|
}
|
@@ -69,6 +62,7 @@ abstract contract BasicPool is
|
|
69
62
|
virtual
|
70
63
|
restricted()
|
71
64
|
onlyBundleOwner(bundleNftId)
|
65
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
72
66
|
{
|
73
67
|
_unstake(bundleNftId, amount);
|
74
68
|
}
|
@@ -82,6 +76,7 @@ abstract contract BasicPool is
|
|
82
76
|
virtual
|
83
77
|
restricted()
|
84
78
|
onlyBundleOwner(bundleNftId)
|
79
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
85
80
|
returns(Timestamp newExpiredAt)
|
86
81
|
{
|
87
82
|
return _extend(bundleNftId, lifetimeExtension);
|
@@ -93,6 +88,7 @@ abstract contract BasicPool is
|
|
93
88
|
virtual
|
94
89
|
restricted()
|
95
90
|
onlyBundleOwner(bundleNftId)
|
91
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
96
92
|
{
|
97
93
|
_lockBundle(bundleNftId);
|
98
94
|
}
|
@@ -103,6 +99,7 @@ abstract contract BasicPool is
|
|
103
99
|
virtual
|
104
100
|
restricted()
|
105
101
|
onlyBundleOwner(bundleNftId)
|
102
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
106
103
|
{
|
107
104
|
_unlockBundle(bundleNftId);
|
108
105
|
}
|
@@ -113,6 +110,7 @@ abstract contract BasicPool is
|
|
113
110
|
virtual
|
114
111
|
restricted()
|
115
112
|
onlyBundleOwner(bundleNftId)
|
113
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
116
114
|
{
|
117
115
|
_closeBundle(bundleNftId);
|
118
116
|
}
|
@@ -126,6 +124,7 @@ abstract contract BasicPool is
|
|
126
124
|
virtual
|
127
125
|
restricted()
|
128
126
|
onlyBundleOwner(bundleNftId)
|
127
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
129
128
|
{
|
130
129
|
_setBundleFee(bundleNftId, fee);
|
131
130
|
}
|
@@ -21,7 +21,6 @@ import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.
|
|
21
21
|
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
|
22
22
|
import {Seconds} from "../type/Seconds.sol";
|
23
23
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
24
|
-
import {TokenTransferLib} from "../shared/TokenTransferLib.sol";
|
25
24
|
|
26
25
|
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
27
26
|
|
@@ -41,20 +40,20 @@ contract BundleService is
|
|
41
40
|
bytes memory data
|
42
41
|
)
|
43
42
|
internal
|
44
|
-
initializer
|
45
43
|
virtual override
|
44
|
+
initializer()
|
46
45
|
{
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
46
|
+
(
|
47
|
+
address registryAddress,
|
48
|
+
address authority
|
49
|
+
) = abi.decode(data, (address, address));
|
50
|
+
|
51
|
+
_initializeService(registryAddress, authority, owner);
|
53
52
|
|
54
53
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
55
54
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
56
55
|
|
57
|
-
|
56
|
+
_registerInterface(type(IBundleService).interfaceId);
|
58
57
|
}
|
59
58
|
|
60
59
|
|
@@ -122,12 +121,14 @@ contract BundleService is
|
|
122
121
|
})
|
123
122
|
);
|
124
123
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
124
|
+
if (stakingAmount.gtz()) {
|
125
|
+
// bundle book keeping
|
126
|
+
_componentService.increaseBundleBalance(
|
127
|
+
instanceStore,
|
128
|
+
bundleNftId,
|
129
|
+
stakingAmount,
|
130
|
+
AmountLib.zero()); // fee amount
|
131
|
+
}
|
131
132
|
|
132
133
|
// put bundle under bundle managemet
|
133
134
|
BundleSet bundleManager = instance.getBundleSet();
|
@@ -366,7 +367,7 @@ contract BundleService is
|
|
366
367
|
restricted
|
367
368
|
{
|
368
369
|
// ensure policy is closeable
|
369
|
-
if (!
|
370
|
+
if (!policyIsCloseable(instance, policyNftId)) {
|
370
371
|
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
371
372
|
}
|
372
373
|
|
@@ -411,10 +412,33 @@ contract BundleService is
|
|
411
412
|
{
|
412
413
|
address owner = getRegistry().ownerOf(bundleNftId);
|
413
414
|
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
|
414
|
-
|
415
|
+
poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
|
415
416
|
}
|
416
417
|
}
|
417
418
|
|
419
|
+
/// @inheritdoc IBundleService
|
420
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId)
|
421
|
+
public
|
422
|
+
view
|
423
|
+
returns (bool isCloseable)
|
424
|
+
{
|
425
|
+
IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
426
|
+
|
427
|
+
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
428
|
+
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
429
|
+
if (info.closedAt.gtz()) { return false; } // not closeable: already closed
|
430
|
+
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
431
|
+
|
432
|
+
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
433
|
+
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
434
|
+
|
435
|
+
// not closeable: not yet expired
|
436
|
+
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
437
|
+
|
438
|
+
// all conditionsl to close the policy are met
|
439
|
+
return true;
|
440
|
+
}
|
441
|
+
|
418
442
|
/// @dev links policy to bundle
|
419
443
|
function _linkPolicy(IInstance instance, NftId policyNftId)
|
420
444
|
internal
|
@@ -12,15 +12,15 @@ contract BundleServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with pool service implementation
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
|
-
BundleService
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
23
|
-
|
19
|
+
BundleService svc = new BundleService{salt: salt}();
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
|
+
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
26
26
|
|
@@ -124,10 +124,20 @@ interface IBundleService is IService {
|
|
124
124
|
NftId policyNftId
|
125
125
|
) external;
|
126
126
|
|
127
|
+
// FIXME: move to pool service
|
127
128
|
/// @dev Withdraw bundle feeds for the given bundle
|
128
129
|
/// @param bundleNftId the bundle Nft Id
|
129
130
|
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
130
131
|
/// @return withdrawnAmount the effective withdrawn amount
|
131
132
|
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
132
133
|
|
134
|
+
/// @dev returns true iff policy may be closed
|
135
|
+
/// a policy can be closed all conditions below are met
|
136
|
+
/// - policy exists
|
137
|
+
/// - has been activated
|
138
|
+
/// - is not yet closed
|
139
|
+
/// - has no open claims
|
140
|
+
/// - claim amount matches sum insured amount or is expired
|
141
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
|
142
|
+
|
133
143
|
}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
5
6
|
import {Fee} from "../type/Fee.sol";
|
6
7
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
7
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
@@ -20,10 +21,10 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
20
21
|
|
21
22
|
event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
|
22
23
|
|
23
|
-
/// @dev
|
24
|
-
///
|
25
|
-
///
|
26
|
-
///
|
24
|
+
/// @dev This is a callback function that is called by the product service when underwriting a policy.
|
25
|
+
/// The pool has the option to check the details and object to underwriting by reverting.
|
26
|
+
/// The function is only called for "active" pools that ask to be involved/notified.
|
27
|
+
/// The default implementation is empty.
|
27
28
|
function verifyApplication(
|
28
29
|
NftId applicationNftId,
|
29
30
|
bytes memory applicationData,
|
@@ -32,9 +33,9 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
32
33
|
Amount collateralizationAmount
|
33
34
|
) external;
|
34
35
|
|
35
|
-
/// @dev
|
36
|
-
///
|
37
|
-
/// default implementation returns true
|
36
|
+
/// @dev Returns true iff the application matches with the bundle.
|
37
|
+
/// This is a callback function that is only called if a pool declares itself as a verifying pool
|
38
|
+
/// The default implementation returns true.
|
38
39
|
function applicationMatchesBundle(
|
39
40
|
NftId applicationNftId,
|
40
41
|
bytes memory applicationData,
|
@@ -46,13 +47,22 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
46
47
|
view
|
47
48
|
returns (bool isMatching);
|
48
49
|
|
50
|
+
/// @dev This is a callback function that is called by the claim service when a claim is confirmed.
|
51
|
+
/// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
|
52
|
+
/// The default implementation is empty.
|
53
|
+
function processConfirmedClaim(
|
54
|
+
NftId policyNftId,
|
55
|
+
ClaimId claimId,
|
56
|
+
Amount amount
|
57
|
+
) external;
|
58
|
+
|
49
59
|
/// @dev Withdraw bundle feeds for the given bundle
|
50
60
|
/// @param bundleNftId the bundle Nft Id
|
51
61
|
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
52
62
|
/// @return withdrawnAmount the effective withdrawn amount
|
53
63
|
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
54
64
|
|
55
|
-
/// @dev
|
65
|
+
/// @dev Returns initial pool specific infos for this pool
|
56
66
|
function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
|
57
67
|
|
58
68
|
}
|
@@ -2,14 +2,15 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
5
6
|
import {Fee} from "../type/Fee.sol";
|
6
|
-
import {NftId} from "../type/NftId.sol";
|
7
|
-
import {PayoutId} from "../type/PayoutId.sol";
|
8
7
|
import {IBundle} from "../instance/module/IBundle.sol";
|
9
8
|
import {IInstance} from "../instance/IInstance.sol";
|
10
9
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
11
10
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
12
11
|
import {IService} from "../shared/IService.sol";
|
12
|
+
import {NftId} from "../type/NftId.sol";
|
13
|
+
import {PayoutId} from "../type/PayoutId.sol";
|
13
14
|
import {RoleId} from "../type/RoleId.sol";
|
14
15
|
import {Seconds} from "../type/Seconds.sol";
|
15
16
|
import {StateId} from "../type/StateId.sol";
|
@@ -26,6 +27,9 @@ interface IPoolService is IService {
|
|
26
27
|
event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
|
27
28
|
event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
|
28
29
|
|
30
|
+
event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
|
31
|
+
|
32
|
+
error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
|
29
33
|
error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
|
30
34
|
error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
|
31
35
|
error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
|
@@ -68,10 +72,10 @@ interface IPoolService is IService {
|
|
68
72
|
) external;
|
69
73
|
|
70
74
|
|
71
|
-
/// @dev reduces the locked collateral in the bundle associated with the specified policy
|
75
|
+
/// @dev reduces the locked collateral in the bundle associated with the specified policy and updates pool/bundle counters
|
72
76
|
/// every payout of a policy reduces the collateral by the payout amount
|
73
77
|
/// may only be called by the claim service for unlocked pool components
|
74
|
-
function
|
78
|
+
function processPayout(
|
75
79
|
IInstance instance,
|
76
80
|
address token,
|
77
81
|
NftId policyNftId,
|
@@ -80,19 +84,28 @@ interface IPoolService is IService {
|
|
80
84
|
) external;
|
81
85
|
|
82
86
|
|
83
|
-
/// @dev create a new bundle
|
84
|
-
/// staking fees will be deducted by the pool service from the staking amount
|
87
|
+
/// @dev create a new empty bundle with the provided parameters
|
85
88
|
/// may only be called by registered and unlocked pool components.
|
86
|
-
/// The pool balance is equal to the pool fees plus the capital of all bundles.
|
87
89
|
function createBundle(
|
88
90
|
address owner, // initial bundle owner
|
89
91
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
90
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
91
92
|
Seconds lifetime, // initial duration for which new policies are covered
|
92
93
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
93
94
|
)
|
94
95
|
external
|
95
|
-
returns(NftId bundleNftId
|
96
|
+
returns(NftId bundleNftId); // the nft id of the newly created bundle
|
97
|
+
|
98
|
+
|
99
|
+
/// @dev increase stakes for bundle
|
100
|
+
/// staking fees will be deducted by the pool service from the staking amount
|
101
|
+
/// may only be called by registered and unlocked pool components
|
102
|
+
function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
103
|
+
|
104
|
+
|
105
|
+
/// @dev decrease stakes for bundle
|
106
|
+
/// performance fees will be deducted by the pool service from the staking amount
|
107
|
+
/// may only be called by registered and unlocked pool components
|
108
|
+
function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
96
109
|
|
97
110
|
|
98
111
|
/// @dev closes the specified bundle
|
@@ -103,21 +116,30 @@ interface IPoolService is IService {
|
|
103
116
|
function closeBundle(NftId bundleNftId) external;
|
104
117
|
|
105
118
|
|
106
|
-
/// @dev
|
107
|
-
function
|
119
|
+
/// @dev Informs product about available funds to process a confirmed claim.
|
120
|
+
/// The function triggers a callback to the product component when the product's property isProcessingFundedClaims is set.
|
121
|
+
function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
|
108
122
|
|
109
|
-
/// @dev increase stakes for bundle
|
110
|
-
/// staking fees will be deducted by the pool service from the staking amount
|
111
|
-
/// may only be called by registered and unlocked pool components
|
112
|
-
function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
113
123
|
|
114
|
-
/// @dev
|
115
|
-
///
|
116
|
-
///
|
117
|
-
|
124
|
+
/// @dev Fund the specified pool wallet with the provided amount.
|
125
|
+
/// This function will collect the amount from the sender address and transfers it to the pool wallet.
|
126
|
+
/// The function will not update balance amounts managed by the framework.
|
127
|
+
/// Only available for externally managed pools.
|
128
|
+
function fundPoolWallet(NftId poolNftId, Amount amount) external;
|
118
129
|
|
119
130
|
|
120
|
-
/// @dev
|
131
|
+
/// @dev Defund the specified pool wallet with the provided amount.
|
132
|
+
/// This function will transfer the amount from the pool wallet to the sender address.
|
133
|
+
/// The function will not update balance amounts managed by the framework.
|
134
|
+
/// Only available for externally managed pools.
|
135
|
+
function defundPoolWallet(NftId poolNftId, Amount amount) external;
|
136
|
+
|
137
|
+
|
138
|
+
/// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
|
139
|
+
function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
|
140
|
+
|
141
|
+
|
142
|
+
/// @dev Calulate required collateral for the provided parameters.
|
121
143
|
function calculateRequiredCollateral(
|
122
144
|
InstanceReader instanceReader,
|
123
145
|
NftId productNftId,
|
@@ -126,12 +148,14 @@ interface IPoolService is IService {
|
|
126
148
|
external
|
127
149
|
view
|
128
150
|
returns(
|
129
|
-
Amount
|
130
|
-
Amount
|
151
|
+
Amount totalCollateralAmount,
|
152
|
+
Amount localCollateralAmount
|
131
153
|
);
|
132
154
|
|
133
155
|
|
134
|
-
/// @dev calulate required collateral for the provided parameters
|
156
|
+
/// @dev calulate required collateral for the provided parameters.
|
157
|
+
/// Collateralization is applied to sum insured.
|
158
|
+
/// Retention level defines the fraction of the collateral that is required locally.
|
135
159
|
function calculateRequiredCollateral(
|
136
160
|
UFixed collateralizationLevel,
|
137
161
|
UFixed retentionLevel,
|
@@ -140,8 +164,8 @@ interface IPoolService is IService {
|
|
140
164
|
external
|
141
165
|
pure
|
142
166
|
returns(
|
143
|
-
Amount
|
144
|
-
Amount
|
167
|
+
Amount totalCollateralAmount,
|
168
|
+
Amount localCollateralAmount
|
145
169
|
);
|
146
170
|
|
147
171
|
}
|
package/contracts/pool/Pool.sol
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
|
-
import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
|
5
|
+
import {BUNDLE, COMPONENT, POLICY, POOL} from "../type/ObjectType.sol";
|
6
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
6
7
|
import {IBundleService} from "./IBundleService.sol";
|
7
8
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
8
9
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
@@ -10,13 +11,12 @@ import {IPoolService} from "./IPoolService.sol";
|
|
10
11
|
import {IComponents} from "../instance/module/IComponents.sol";
|
11
12
|
import {IComponentService} from "../shared/IComponentService.sol";
|
12
13
|
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
13
|
-
import {Fee
|
14
|
-
import {NftId
|
14
|
+
import {Fee} from "../type/Fee.sol";
|
15
|
+
import {NftId} from "../type/NftId.sol";
|
15
16
|
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
16
17
|
import {Seconds} from "../type/Seconds.sol";
|
17
18
|
import {Timestamp} from "../type/Timestamp.sol";
|
18
|
-
import {
|
19
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
19
|
+
import {UFixedLib} from "../type/UFixed.sol";
|
20
20
|
|
21
21
|
abstract contract Pool is
|
22
22
|
InstanceLinkedComponent,
|
@@ -40,6 +40,16 @@ abstract contract Pool is
|
|
40
40
|
}
|
41
41
|
|
42
42
|
|
43
|
+
function register()
|
44
|
+
external
|
45
|
+
virtual
|
46
|
+
onlyOwner()
|
47
|
+
{
|
48
|
+
_getPoolStorage()._componentService.registerPool();
|
49
|
+
_approveTokenHandler(type(uint256).max);
|
50
|
+
}
|
51
|
+
|
52
|
+
|
43
53
|
/// @dev see {IPoolComponent.verifyApplication}
|
44
54
|
function verifyApplication(
|
45
55
|
NftId applicationNftId,
|
@@ -51,6 +61,7 @@ abstract contract Pool is
|
|
51
61
|
public
|
52
62
|
virtual
|
53
63
|
restricted()
|
64
|
+
onlyNftOfType(applicationNftId, POLICY())
|
54
65
|
{
|
55
66
|
if(!applicationMatchesBundle(
|
56
67
|
applicationNftId,
|
@@ -67,6 +78,21 @@ abstract contract Pool is
|
|
67
78
|
}
|
68
79
|
|
69
80
|
|
81
|
+
/// @dev see {IPoolComponent.processConfirmedClaim}
|
82
|
+
function processConfirmedClaim(
|
83
|
+
NftId policyNftId,
|
84
|
+
ClaimId claimId,
|
85
|
+
Amount amount
|
86
|
+
)
|
87
|
+
public
|
88
|
+
virtual
|
89
|
+
restricted()
|
90
|
+
onlyNftOfType(policyNftId, POLICY())
|
91
|
+
{
|
92
|
+
// default implementation is empty
|
93
|
+
}
|
94
|
+
|
95
|
+
|
70
96
|
/// @dev see {IPoolComponent.applicationMatchesBundle}
|
71
97
|
/// Override this function to implement any custom application verification
|
72
98
|
/// Default implementation always returns true
|
@@ -80,27 +106,20 @@ abstract contract Pool is
|
|
80
106
|
public
|
81
107
|
virtual
|
82
108
|
view
|
109
|
+
onlyNftOfType(applicationNftId, POLICY())
|
110
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
83
111
|
returns (bool isMatching)
|
84
112
|
{
|
85
113
|
return true;
|
86
114
|
}
|
87
115
|
|
88
|
-
|
89
|
-
function register()
|
90
|
-
external
|
91
|
-
virtual
|
92
|
-
onlyOwner()
|
93
|
-
{
|
94
|
-
_getPoolStorage()._componentService.registerPool();
|
95
|
-
_approveTokenHandler(type(uint256).max);
|
96
|
-
}
|
97
|
-
|
98
116
|
/// @inheritdoc IPoolComponent
|
99
117
|
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
100
118
|
external
|
101
119
|
virtual
|
102
120
|
restricted()
|
103
121
|
onlyBundleOwner(bundleNftId)
|
122
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
104
123
|
returns (Amount withdrawnAmount)
|
105
124
|
{
|
106
125
|
return _withdrawBundleFees(bundleNftId, amount);
|
@@ -113,15 +132,16 @@ abstract contract Pool is
|
|
113
132
|
view
|
114
133
|
returns (IComponents.PoolInfo memory poolInfo)
|
115
134
|
{
|
116
|
-
return IComponents.PoolInfo(
|
117
|
-
|
118
|
-
|
119
|
-
isNftInterceptor(),
|
120
|
-
false,
|
121
|
-
false,
|
122
|
-
|
123
|
-
UFixedLib.toUFixed(1)
|
124
|
-
|
135
|
+
return IComponents.PoolInfo({
|
136
|
+
maxBalanceAmount: AmountLib.max(),
|
137
|
+
bundleOwnerRole: PUBLIC_ROLE(),
|
138
|
+
isInterceptingBundleTransfers: isNftInterceptor(),
|
139
|
+
isProcessingConfirmedClaims: false,
|
140
|
+
isExternallyManaged: false,
|
141
|
+
isVerifyingApplications: false,
|
142
|
+
collateralizationLevel: UFixedLib.toUFixed(1),
|
143
|
+
retentionLevel: UFixedLib.toUFixed(1)
|
144
|
+
});
|
125
145
|
}
|
126
146
|
|
127
147
|
// Internals
|
@@ -158,7 +178,7 @@ abstract contract Pool is
|
|
158
178
|
$._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
159
179
|
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
160
180
|
|
161
|
-
|
181
|
+
_registerInterface(type(IPoolComponent).interfaceId);
|
162
182
|
}
|
163
183
|
|
164
184
|
/// @dev increases the staked tokens by the specified amount
|
@@ -169,9 +189,9 @@ abstract contract Pool is
|
|
169
189
|
)
|
170
190
|
internal
|
171
191
|
virtual
|
172
|
-
returns(Amount
|
192
|
+
returns(Amount)
|
173
193
|
{
|
174
|
-
_getPoolStorage()._poolService.stake(bundleNftId, amount);
|
194
|
+
return _getPoolStorage()._poolService.stake(bundleNftId, amount);
|
175
195
|
}
|
176
196
|
|
177
197
|
|
@@ -287,21 +307,19 @@ abstract contract Pool is
|
|
287
307
|
_getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
|
288
308
|
}
|
289
309
|
|
290
|
-
/// @dev Creates a new bundle using the provided parameter values.
|
310
|
+
/// @dev Creates a new empty bundle using the provided parameter values.
|
291
311
|
function _createBundle(
|
292
312
|
address bundleOwner,
|
293
313
|
Fee memory fee,
|
294
|
-
Amount amount,
|
295
314
|
Seconds lifetime,
|
296
315
|
bytes memory filter
|
297
316
|
)
|
298
317
|
internal
|
299
|
-
returns(NftId bundleNftId
|
318
|
+
returns(NftId bundleNftId)
|
300
319
|
{
|
301
|
-
|
320
|
+
bundleNftId = _getPoolStorage()._poolService.createBundle(
|
302
321
|
bundleOwner,
|
303
322
|
fee,
|
304
|
-
amount,
|
305
323
|
lifetime,
|
306
324
|
filter);
|
307
325
|
|
@@ -320,6 +338,17 @@ abstract contract Pool is
|
|
320
338
|
return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
|
321
339
|
}
|
322
340
|
|
341
|
+
function _processFundedClaim(
|
342
|
+
NftId policyNftId,
|
343
|
+
ClaimId claimId,
|
344
|
+
Amount availableAmount
|
345
|
+
)
|
346
|
+
internal
|
347
|
+
{
|
348
|
+
_getPoolStorage()._poolService.processFundedClaim(
|
349
|
+
policyNftId, claimId, availableAmount);
|
350
|
+
}
|
351
|
+
|
323
352
|
function _getPoolStorage() private pure returns (PoolStorage storage $) {
|
324
353
|
assembly {
|
325
354
|
$.slot := POOL_STORAGE_LOCATION_V1
|