@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e79d227-681
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 +77 -10
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1324 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +154 -546
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +380 -229
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +198 -96
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +186 -238
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +223 -47
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +153 -86
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +181 -119
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +174 -215
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1666 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +876 -160
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +260 -268
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +163 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +506 -338
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
- 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/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +961 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +776 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +877 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +456 -187
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +218 -80
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +264 -26
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +115 -354
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -223
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +152 -682
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +590 -382
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +190 -76
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +147 -161
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +147 -77
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +343 -168
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +200 -90
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +88 -8
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +364 -121
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +134 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +176 -160
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +51 -3
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +475 -294
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +199 -81
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +229 -275
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +172 -102
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +201 -486
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -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 +412 -35
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +225 -196
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +761 -87
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +278 -306
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +154 -78
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +185 -135
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +79 -274
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +626 -252
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +209 -99
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -101
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +74 -79
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +561 -13
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +120 -108
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -13
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -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/IService.sol/IService.json +49 -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 +129 -360
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -98
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +62 -87
- 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 +55 -101
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +462 -634
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +546 -48
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +613 -871
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +185 -81
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +633 -173
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +166 -68
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
- 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 +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- 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/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
- 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 +149 -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 +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +99 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -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 +71 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +616 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/authorization/IAccessAdmin.sol +137 -0
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/authorization/IServiceAuthorization.sol +40 -0
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +106 -0
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +145 -124
- package/contracts/distribution/DistributionService.sol +156 -99
- package/contracts/distribution/DistributionServiceManager.sol +13 -25
- package/contracts/distribution/IDistributionComponent.sol +27 -41
- package/contracts/distribution/IDistributionService.sol +29 -10
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IInstance.sol +39 -44
- package/contracts/instance/IInstanceService.sol +33 -42
- package/contracts/instance/Instance.sol +137 -124
- package/contracts/instance/InstanceAdmin.sol +278 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +217 -0
- package/contracts/instance/InstanceReader.sol +249 -36
- package/contracts/instance/InstanceService.sol +227 -151
- package/contracts/instance/InstanceServiceManager.sol +14 -29
- package/contracts/instance/InstanceStore.sol +85 -57
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/BalanceStore.sol +12 -7
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/ObjectSet.sol +78 -0
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +11 -13
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +156 -0
- package/contracts/oracle/OracleService.sol +309 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +68 -0
- package/contracts/pool/BundleService.sol +232 -122
- package/contracts/pool/BundleServiceManager.sol +13 -25
- package/contracts/pool/IBundleService.sol +34 -18
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +57 -51
- package/contracts/pool/Pool.sol +208 -162
- package/contracts/pool/PoolService.sol +372 -181
- package/contracts/pool/PoolServiceManager.sol +12 -24
- package/contracts/product/ApplicationService.sol +90 -84
- package/contracts/product/ApplicationServiceManager.sol +12 -9
- package/contracts/product/BasicProduct.sol +49 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +331 -153
- package/contracts/product/ClaimServiceManager.sol +12 -9
- package/contracts/product/IApplicationService.sol +7 -3
- package/contracts/product/IClaimService.sol +35 -5
- package/contracts/product/IPolicyService.sol +47 -35
- package/contracts/product/IPricingService.sol +11 -11
- package/contracts/product/IProductComponent.sol +26 -9
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -2
- package/contracts/product/PolicyService.sol +524 -262
- package/contracts/product/PolicyServiceManager.sol +12 -27
- package/contracts/product/PricingService.sol +64 -64
- package/contracts/product/PricingServiceManager.sol +12 -24
- package/contracts/product/Product.sol +189 -139
- package/contracts/product/{ProductService.sol → RiskService.sol} +35 -50
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -37
- package/contracts/registry/IRegistry.sol +90 -28
- package/contracts/registry/IRegistryService.sol +26 -43
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +424 -228
- package/contracts/registry/RegistryAdmin.sol +451 -0
- package/contracts/registry/RegistryService.sol +63 -149
- package/contracts/registry/RegistryServiceManager.sol +23 -30
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +175 -0
- package/contracts/registry/TokenRegistry.sol +187 -59
- package/contracts/shared/Component.sol +56 -125
- package/contracts/shared/ComponentService.sol +411 -201
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +40 -23
- package/contracts/shared/ContractLib.sol +224 -0
- package/contracts/shared/IComponent.sol +11 -18
- package/contracts/shared/IComponentService.sol +52 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +11 -16
- package/contracts/shared/IKeyValueStore.sol +2 -1
- package/contracts/shared/ILifecycle.sol +3 -2
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
- package/contracts/shared/InstanceLinkedComponent.sol +103 -43
- package/contracts/shared/KeyValueStore.sol +30 -68
- package/contracts/shared/Lifecycle.sol +30 -63
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +31 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +44 -37
- package/contracts/shared/TokenHandler.sol +358 -27
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +133 -37
- package/contracts/staking/IStakingService.sol +93 -41
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +394 -101
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +24 -18
- package/contracts/staking/StakingReader.sol +190 -0
- package/contracts/staking/StakingService.sol +282 -42
- package/contracts/staking/StakingServiceManager.sol +10 -7
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +39 -3
- package/contracts/type/Blocknumber.sol +20 -2
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +1 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +16 -4
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +178 -65
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +31 -5
- package/contracts/type/RoleId.sol +98 -74
- package/contracts/type/Seconds.sol +48 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +38 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +90 -27
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +11 -7
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- 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 -673
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -636
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -688
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
- package/contracts/instance/base/ObjectManager.sol +0 -82
- package/contracts/product/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -213
- package/contracts/registry/ReleaseManager.sol +0 -375
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,248 +1,345 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Pool} from "./Pool.sol";
|
5
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
-
import {IInstance} from "../instance/IInstance.sol";
|
7
4
|
import {IBundle} from "../instance/module/IBundle.sol";
|
5
|
+
import {IBundleService} from "./IBundleService.sol";
|
8
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
8
|
+
import {IInstance} from "../instance/IInstance.sol";
|
9
9
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
-
|
11
|
-
import {
|
12
|
-
import {
|
13
|
-
import {
|
10
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
|
+
import {IPoolService} from "./IPoolService.sol";
|
12
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
13
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
+
import {IStaking} from "../staking/IStaking.sol";
|
14
15
|
|
15
16
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
18
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
16
19
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
17
|
-
import {NftId
|
18
|
-
import {ObjectType, POOL, BUNDLE,
|
19
|
-
import {PUBLIC_ROLE, POOL_OWNER_ROLE, POLICY_SERVICE_ROLE, RoleId} from "../type/RoleId.sol";
|
20
|
+
import {NftId} from "../type/NftId.sol";
|
21
|
+
import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
20
22
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
21
|
-
import {
|
22
|
-
import {KEEP_STATE, StateId} from "../type/StateId.sol";
|
23
|
-
import {Seconds} from "../type/Seconds.sol";
|
24
|
-
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
25
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
23
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
26
24
|
import {UFixed} from "../type/UFixed.sol";
|
27
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
28
|
-
|
29
|
-
import {IService} from "../shared/IService.sol";
|
30
25
|
import {Service} from "../shared/Service.sol";
|
31
|
-
import {BundleManager} from "../instance/BundleManager.sol";
|
32
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
33
|
-
import {IBundleService} from "./IBundleService.sol";
|
34
|
-
import {IComponentService} from "../shared/IComponentService.sol";
|
35
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
36
|
-
import {IPoolService} from "./IPoolService.sol";
|
37
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
38
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
39
26
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
40
27
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
41
|
-
import {IComponent} from "../shared/IComponent.sol";
|
42
|
-
import {IPoolComponent} from "./IPoolComponent.sol";
|
43
28
|
|
44
29
|
string constant POOL_SERVICE_NAME = "PoolService";
|
45
30
|
|
46
31
|
contract PoolService is
|
47
|
-
|
32
|
+
Service,
|
48
33
|
IPoolService
|
49
34
|
{
|
50
|
-
using NftIdLib for NftId;
|
51
|
-
using AmountLib for Amount;
|
52
|
-
|
53
35
|
IBundleService internal _bundleService;
|
54
36
|
IComponentService internal _componentService;
|
55
|
-
|
56
|
-
IRegistryService private _registryService;
|
37
|
+
IStaking private _staking;
|
57
38
|
|
58
39
|
function _initialize(
|
59
40
|
address owner,
|
60
41
|
bytes memory data
|
61
42
|
)
|
62
43
|
internal
|
63
|
-
initializer
|
64
44
|
virtual override
|
45
|
+
initializer()
|
65
46
|
{
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
47
|
+
(
|
48
|
+
address registryAddress,
|
49
|
+
address authority
|
50
|
+
) = abi.decode(data, (address, address));
|
51
|
+
|
52
|
+
_initializeService(registryAddress, authority, owner);
|
53
|
+
|
74
54
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
75
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
76
55
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
56
|
+
_staking = IStaking(getRegistry().getStakingAddress());
|
77
57
|
|
78
|
-
|
79
|
-
}
|
80
|
-
|
81
|
-
function getDomain() public pure override returns(ObjectType) {
|
82
|
-
return POOL();
|
58
|
+
_registerInterface(type(IPoolService).interfaceId);
|
83
59
|
}
|
84
60
|
|
85
61
|
|
86
|
-
|
62
|
+
/// @inheritdoc IPoolService
|
63
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
87
64
|
external
|
88
65
|
virtual
|
89
66
|
{
|
90
|
-
(NftId poolNftId
|
67
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
91
68
|
InstanceReader instanceReader = instance.getInstanceReader();
|
69
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
92
70
|
|
93
|
-
|
94
|
-
|
95
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
96
|
-
|
97
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
71
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
72
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
98
73
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
99
74
|
|
100
|
-
emit
|
75
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
101
76
|
}
|
102
77
|
|
103
|
-
|
78
|
+
|
79
|
+
function closeBundle(NftId bundleNftId)
|
104
80
|
external
|
105
81
|
virtual
|
106
82
|
{
|
107
|
-
(
|
108
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
83
|
+
_checkNftType(bundleNftId, BUNDLE());
|
109
84
|
|
110
|
-
|
111
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
85
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
112
86
|
|
113
|
-
//
|
114
|
-
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
115
|
-
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
116
|
-
}
|
87
|
+
// TODO get performance fee for pool (#477)
|
117
88
|
|
118
|
-
|
119
|
-
|
89
|
+
// releasing collateral in bundle
|
90
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
120
91
|
|
121
|
-
|
92
|
+
_componentService.decreasePoolBalance(
|
93
|
+
instance.getInstanceStore(),
|
94
|
+
poolNftId,
|
95
|
+
unstakedAmount + feeAmount,
|
96
|
+
AmountLib.zero());
|
97
|
+
|
98
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
99
|
+
|
100
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
101
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
102
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
103
|
+
poolComponentInfo.tokenHandler.getWallet(),
|
104
|
+
getRegistry().ownerOf(bundleNftId),
|
105
|
+
unstakedAmount + feeAmount);
|
106
|
+
}
|
122
107
|
}
|
123
108
|
|
124
109
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
110
|
+
/// @inheritdoc IPoolService
|
111
|
+
function processFundedClaim(
|
112
|
+
NftId policyNftId,
|
113
|
+
ClaimId claimId,
|
114
|
+
Amount availableAmount
|
115
|
+
)
|
130
116
|
external
|
131
117
|
virtual
|
132
118
|
{
|
133
|
-
(
|
119
|
+
_checkNftType(policyNftId, POLICY());
|
134
120
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
121
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
122
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
123
|
+
NftId productNftId = getRegistry().getObjectInfo(poolNftId).parentNftId;
|
124
|
+
|
125
|
+
// check policy matches with calling pool
|
126
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
127
|
+
if(policyInfo.productNftId != productNftId) {
|
128
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
129
|
+
policyNftId,
|
130
|
+
policyInfo.productNftId,
|
131
|
+
productNftId);
|
132
|
+
}
|
139
133
|
|
140
|
-
|
134
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
141
135
|
|
142
|
-
//
|
136
|
+
// callback to product component if applicable
|
137
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
138
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
139
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
140
|
+
}
|
143
141
|
}
|
144
142
|
|
145
143
|
|
146
|
-
|
147
|
-
|
148
|
-
Fee memory fee, // fees deducted from premium that go to bundle owner
|
149
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
150
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
151
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
152
|
-
)
|
144
|
+
/// @inheritdoc IPoolService
|
145
|
+
function stake(NftId bundleNftId, Amount amount)
|
153
146
|
external
|
154
147
|
virtual
|
155
|
-
|
148
|
+
// TODO: restricted() (once #462 is done)
|
149
|
+
returns(Amount netAmount)
|
156
150
|
{
|
157
|
-
(
|
151
|
+
_checkNftType(bundleNftId, BUNDLE());
|
152
|
+
|
153
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
158
154
|
InstanceReader instanceReader = instance.getInstanceReader();
|
155
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
156
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
159
157
|
|
160
|
-
(
|
161
|
-
|
162
|
-
|
163
|
-
) = FeeLib.calculateFee(
|
164
|
-
_getStakingFee(instanceReader, poolNftId),
|
165
|
-
stakingAmount);
|
158
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
159
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
160
|
+
}
|
166
161
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
lifetime,
|
174
|
-
filter);
|
162
|
+
{
|
163
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
164
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
165
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
166
|
+
}
|
167
|
+
}
|
175
168
|
|
176
|
-
//
|
169
|
+
// calculate fees
|
170
|
+
IRegistry registry = getRegistry();
|
171
|
+
Amount feeAmount;
|
172
|
+
|
173
|
+
{
|
174
|
+
NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
|
175
|
+
Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
|
176
|
+
(
|
177
|
+
feeAmount,
|
178
|
+
netAmount
|
179
|
+
) = FeeLib.calculateFee(
|
180
|
+
stakingFee,
|
181
|
+
amount);
|
182
|
+
}
|
183
|
+
|
184
|
+
// do all the book keeping
|
177
185
|
_componentService.increasePoolBalance(
|
178
186
|
instance.getInstanceStore(),
|
179
187
|
poolNftId,
|
180
|
-
|
181
|
-
|
188
|
+
netAmount,
|
189
|
+
feeAmount);
|
182
190
|
|
183
|
-
|
184
|
-
_collectStakingAmount(
|
185
|
-
instanceReader,
|
186
|
-
poolNftId,
|
187
|
-
bundleOwner,
|
188
|
-
stakingAmount);
|
191
|
+
_bundleService.stake(instance, bundleNftId, netAmount);
|
189
192
|
|
190
|
-
emit
|
193
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
194
|
+
|
195
|
+
// only collect staking amount when pool is not externally managed
|
196
|
+
if (!poolInfo.isExternallyManaged) {
|
197
|
+
|
198
|
+
// collect tokens from bundle owner
|
199
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
200
|
+
_collectStakingAmount(
|
201
|
+
instanceReader,
|
202
|
+
poolNftId,
|
203
|
+
bundleOwner,
|
204
|
+
amount);
|
205
|
+
}
|
191
206
|
}
|
192
207
|
|
193
|
-
|
194
|
-
|
208
|
+
|
209
|
+
/// @inheritdoc IPoolService
|
210
|
+
function unstake(NftId bundleNftId, Amount amount)
|
211
|
+
external
|
195
212
|
virtual
|
196
|
-
|
197
|
-
returns
|
213
|
+
// TODO: restricted() (once #462 is done)
|
214
|
+
returns(Amount netAmount)
|
198
215
|
{
|
199
|
-
|
200
|
-
|
216
|
+
_checkNftType(bundleNftId, BUNDLE());
|
217
|
+
|
218
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
219
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
220
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
221
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
222
|
+
|
223
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
224
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
225
|
+
}
|
226
|
+
|
227
|
+
// call bundle service for bookkeeping and additional checks
|
228
|
+
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
229
|
+
|
230
|
+
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
231
|
+
// if amount was max, this was set to the available amount
|
232
|
+
|
233
|
+
// TODO: handle performance fees (issue #477)
|
234
|
+
netAmount = unstakedAmount;
|
235
|
+
|
236
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
237
|
+
_componentService.decreasePoolBalance(
|
238
|
+
instanceStore,
|
239
|
+
poolNftId,
|
240
|
+
unstakedAmount,
|
241
|
+
AmountLib.zero());
|
242
|
+
|
243
|
+
|
244
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount, netAmount);
|
245
|
+
|
246
|
+
// only distribute staking amount when pool is not externally managed
|
247
|
+
if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
|
248
|
+
|
249
|
+
// transfer amount to bundle owner
|
250
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
251
|
+
_distributeUnstakingAmount(
|
252
|
+
instanceReader,
|
253
|
+
poolNftId,
|
254
|
+
bundleOwner,
|
255
|
+
netAmount);
|
256
|
+
}
|
201
257
|
}
|
202
258
|
|
203
|
-
|
259
|
+
|
260
|
+
function fundPoolWallet(Amount amount)
|
204
261
|
external
|
205
262
|
virtual
|
263
|
+
// restricted()
|
206
264
|
{
|
207
|
-
(
|
265
|
+
(
|
266
|
+
NftId poolNftId,
|
267
|
+
IInstance instance
|
268
|
+
) = _getAndVerifyActivePool();
|
269
|
+
|
270
|
+
// check that pool is externally managed
|
271
|
+
InstanceReader reader = instance.getInstanceReader();
|
272
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
273
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
274
|
+
}
|
208
275
|
|
209
|
-
|
276
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
277
|
+
emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
|
210
278
|
|
211
|
-
|
212
|
-
|
279
|
+
_collectStakingAmount(
|
280
|
+
reader,
|
281
|
+
poolNftId,
|
282
|
+
poolOwner,
|
283
|
+
amount);
|
284
|
+
}
|
213
285
|
|
214
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
215
286
|
|
216
|
-
|
287
|
+
function defundPoolWallet(Amount amount)
|
288
|
+
external
|
289
|
+
virtual
|
290
|
+
// restricted()
|
291
|
+
{
|
292
|
+
(
|
293
|
+
NftId poolNftId,
|
294
|
+
IInstance instance
|
295
|
+
) = _getAndVerifyActivePool();
|
296
|
+
|
297
|
+
// check that pool is externally managed
|
298
|
+
InstanceReader reader = instance.getInstanceReader();
|
299
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
300
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
301
|
+
}
|
302
|
+
|
303
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
304
|
+
emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
|
305
|
+
|
306
|
+
_distributeUnstakingAmount(
|
307
|
+
reader,
|
308
|
+
poolNftId,
|
309
|
+
poolOwner,
|
310
|
+
amount);
|
217
311
|
}
|
218
312
|
|
313
|
+
|
219
314
|
function processSale(
|
220
315
|
NftId bundleNftId,
|
221
|
-
IPolicy.
|
316
|
+
IPolicy.PremiumInfo memory premium
|
222
317
|
)
|
223
318
|
external
|
224
319
|
virtual
|
320
|
+
restricted()
|
225
321
|
{
|
322
|
+
_checkNftType(bundleNftId, BUNDLE());
|
323
|
+
|
226
324
|
IRegistry registry = getRegistry();
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
325
|
+
NftId poolNftId = registry.getObjectInfo(bundleNftId).parentNftId;
|
326
|
+
(, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
|
327
|
+
IInstance instance = IInstance(instanceAddress);
|
231
328
|
|
232
|
-
Amount poolFeeAmount =
|
233
|
-
Amount bundleFeeAmount =
|
234
|
-
Amount bundleNetAmount =
|
329
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
330
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
331
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
235
332
|
|
236
333
|
InstanceStore instanceStore = instance.getInstanceStore();
|
237
334
|
_componentService.increasePoolBalance(
|
238
335
|
instanceStore,
|
239
|
-
|
336
|
+
poolNftId,
|
240
337
|
bundleNetAmount + bundleFeeAmount,
|
241
338
|
poolFeeAmount);
|
242
339
|
|
243
340
|
_componentService.increaseBundleBalance(
|
244
341
|
instanceStore,
|
245
|
-
|
342
|
+
bundleNftId,
|
246
343
|
bundleNetAmount,
|
247
344
|
bundleFeeAmount);
|
248
345
|
}
|
@@ -250,6 +347,7 @@ contract PoolService is
|
|
250
347
|
|
251
348
|
function lockCollateral(
|
252
349
|
IInstance instance,
|
350
|
+
address token,
|
253
351
|
NftId productNftId,
|
254
352
|
NftId applicationNftId,
|
255
353
|
NftId bundleNftId,
|
@@ -257,15 +355,23 @@ contract PoolService is
|
|
257
355
|
)
|
258
356
|
external
|
259
357
|
virtual
|
260
|
-
|
358
|
+
restricted()
|
261
359
|
returns (
|
262
|
-
Amount
|
263
|
-
Amount
|
360
|
+
Amount totalCollateralAmount,
|
361
|
+
Amount localCollateralAmount
|
264
362
|
)
|
265
363
|
{
|
364
|
+
_checkNftType(productNftId, PRODUCT());
|
365
|
+
_checkNftType(applicationNftId, POLICY());
|
366
|
+
_checkNftType(bundleNftId, BUNDLE());
|
367
|
+
|
368
|
+
NftId poolNftId;
|
369
|
+
bool poolIsVerifyingApplications;
|
266
370
|
(
|
371
|
+
poolNftId,
|
372
|
+
totalCollateralAmount,
|
267
373
|
localCollateralAmount,
|
268
|
-
|
374
|
+
poolIsVerifyingApplications
|
269
375
|
) = calculateRequiredCollateral(
|
270
376
|
instance.getInstanceReader(),
|
271
377
|
productNftId,
|
@@ -278,29 +384,68 @@ contract PoolService is
|
|
278
384
|
bundleNftId,
|
279
385
|
localCollateralAmount);
|
280
386
|
|
281
|
-
//
|
282
|
-
|
283
|
-
|
387
|
+
// update value locked with staking service
|
388
|
+
_staking.increaseTotalValueLocked(
|
389
|
+
instance.getNftId(),
|
390
|
+
token,
|
391
|
+
totalCollateralAmount);
|
392
|
+
|
393
|
+
// pool callback when required
|
394
|
+
if (poolIsVerifyingApplications) {
|
395
|
+
IPoolComponent pool = IPoolComponent(
|
396
|
+
getRegistry().getObjectAddress(poolNftId));
|
284
397
|
|
398
|
+
pool.verifyApplication(
|
399
|
+
applicationNftId,
|
400
|
+
bundleNftId,
|
401
|
+
totalCollateralAmount);
|
402
|
+
|
403
|
+
// TODO add logging
|
285
404
|
}
|
286
|
-
}
|
287
405
|
|
406
|
+
// TODO add logging
|
407
|
+
}
|
288
408
|
|
289
|
-
function
|
409
|
+
function processPayout(
|
290
410
|
IInstance instance,
|
411
|
+
address token,
|
291
412
|
NftId policyNftId,
|
292
413
|
IPolicy.PolicyInfo memory policyInfo,
|
293
414
|
Amount payoutAmount
|
294
415
|
)
|
295
416
|
external
|
296
417
|
virtual
|
297
|
-
|
418
|
+
restricted()
|
298
419
|
{
|
420
|
+
_checkNftType(policyNftId, POLICY());
|
421
|
+
|
422
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
423
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
424
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
425
|
+
|
426
|
+
_componentService.decreasePoolBalance(
|
427
|
+
instanceStore,
|
428
|
+
poolNftId,
|
429
|
+
payoutAmount,
|
430
|
+
AmountLib.zero());
|
431
|
+
|
432
|
+
_componentService.decreaseBundleBalance(
|
433
|
+
instanceStore,
|
434
|
+
bundleNftId,
|
435
|
+
payoutAmount,
|
436
|
+
AmountLib.zero());
|
437
|
+
|
299
438
|
_bundleService.releaseCollateral(
|
300
439
|
instance,
|
301
440
|
policyNftId,
|
302
441
|
policyInfo.bundleNftId,
|
303
442
|
payoutAmount);
|
443
|
+
|
444
|
+
// update value locked with staking service
|
445
|
+
_staking.decreaseTotalValueLocked(
|
446
|
+
instance.getNftId(),
|
447
|
+
token,
|
448
|
+
payoutAmount);
|
304
449
|
}
|
305
450
|
|
306
451
|
|
@@ -308,22 +453,29 @@ contract PoolService is
|
|
308
453
|
/// may only be called by the policy service for unlocked pool components
|
309
454
|
function releaseCollateral(
|
310
455
|
IInstance instance,
|
456
|
+
address token,
|
311
457
|
NftId policyNftId,
|
312
458
|
IPolicy.PolicyInfo memory policyInfo
|
313
459
|
)
|
314
460
|
external
|
315
461
|
virtual
|
316
|
-
|
462
|
+
restricted()
|
317
463
|
{
|
464
|
+
_checkNftType(policyNftId, POLICY());
|
465
|
+
|
466
|
+
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
467
|
+
|
318
468
|
_bundleService.releaseCollateral(
|
319
469
|
instance,
|
320
470
|
policyNftId,
|
321
471
|
policyInfo.bundleNftId,
|
322
|
-
|
472
|
+
remainingCollateralAmount);
|
323
473
|
|
324
|
-
|
325
|
-
|
326
|
-
|
474
|
+
// update value locked with staking service
|
475
|
+
_staking.decreaseTotalValueLocked(
|
476
|
+
instance.getNftId(),
|
477
|
+
token,
|
478
|
+
remainingCollateralAmount);
|
327
479
|
}
|
328
480
|
|
329
481
|
|
@@ -335,16 +487,21 @@ contract PoolService is
|
|
335
487
|
public
|
336
488
|
view
|
337
489
|
returns(
|
490
|
+
NftId poolNftId,
|
491
|
+
Amount totalCollateralAmount,
|
338
492
|
Amount localCollateralAmount,
|
339
|
-
|
493
|
+
bool poolIsVerifyingApplications
|
340
494
|
)
|
341
495
|
{
|
342
|
-
|
496
|
+
_checkNftType(productNftId, PRODUCT());
|
497
|
+
|
498
|
+
poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
343
499
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
500
|
+
poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
|
344
501
|
|
345
502
|
(
|
346
|
-
|
347
|
-
|
503
|
+
totalCollateralAmount,
|
504
|
+
localCollateralAmount
|
348
505
|
) = calculateRequiredCollateral(
|
349
506
|
poolInfo.collateralizationLevel,
|
350
507
|
poolInfo.retentionLevel,
|
@@ -360,18 +517,17 @@ contract PoolService is
|
|
360
517
|
public
|
361
518
|
pure
|
362
519
|
returns(
|
363
|
-
Amount
|
364
|
-
Amount
|
520
|
+
Amount totalCollateralAmount,
|
521
|
+
Amount localCollateralAmount
|
365
522
|
)
|
366
523
|
{
|
367
|
-
//
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
//
|
372
|
-
|
373
|
-
|
374
|
-
totalCollateralAmount = localCollateralAmount;
|
524
|
+
// collateralization is applied to sum insured
|
525
|
+
UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
526
|
+
totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
527
|
+
|
528
|
+
// retention level defines how much capital is required locally
|
529
|
+
localCollateralAmount = AmountLib.toAmount(
|
530
|
+
(retentionLevel * totalUFixed).toInt());
|
375
531
|
}
|
376
532
|
|
377
533
|
|
@@ -380,6 +536,7 @@ contract PoolService is
|
|
380
536
|
Amount stakingAmount
|
381
537
|
)
|
382
538
|
internal
|
539
|
+
pure
|
383
540
|
returns (Amount stakingNetAmount)
|
384
541
|
{
|
385
542
|
stakingNetAmount = stakingAmount;
|
@@ -394,28 +551,62 @@ contract PoolService is
|
|
394
551
|
}
|
395
552
|
|
396
553
|
|
397
|
-
|
398
|
-
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
554
|
+
/// @dev transfers the specified amount from the "from account" to the pool's wallet
|
399
555
|
function _collectStakingAmount(
|
400
|
-
InstanceReader
|
556
|
+
InstanceReader reader,
|
557
|
+
NftId poolNftId,
|
558
|
+
address from,
|
559
|
+
Amount amount
|
560
|
+
)
|
561
|
+
internal
|
562
|
+
{
|
563
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
564
|
+
info.tokenHandler.collectTokens(
|
565
|
+
from,
|
566
|
+
amount);
|
567
|
+
}
|
568
|
+
|
569
|
+
/// @dev distributes the specified amount from the pool's wallet to the "to account"
|
570
|
+
function _distributeUnstakingAmount(
|
571
|
+
InstanceReader reader,
|
401
572
|
NftId poolNftId,
|
402
|
-
address
|
573
|
+
address to,
|
403
574
|
Amount amount
|
404
575
|
)
|
405
576
|
internal
|
406
577
|
{
|
578
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
579
|
+
info.tokenHandler.distributeTokens(
|
580
|
+
info.tokenHandler.getWallet(),
|
581
|
+
to,
|
582
|
+
amount);
|
583
|
+
}
|
407
584
|
|
408
|
-
// collecting investor token
|
409
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
410
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
411
|
-
address poolWallet = componentInfo.wallet;
|
412
585
|
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
586
|
+
function _getAndVerifyActivePool()
|
587
|
+
internal
|
588
|
+
virtual
|
589
|
+
view
|
590
|
+
returns (
|
591
|
+
NftId poolNftId,
|
592
|
+
IInstance instance
|
593
|
+
)
|
594
|
+
{
|
595
|
+
(
|
596
|
+
IRegistry.ObjectInfo memory info,
|
597
|
+
address instanceAddress
|
598
|
+
) = ContractLib.getAndVerifyComponent(
|
599
|
+
getRegistry(),
|
600
|
+
msg.sender,
|
601
|
+
POOL(),
|
602
|
+
true); // only active pools
|
603
|
+
|
604
|
+
poolNftId = info.nftId;
|
605
|
+
instance = IInstance(instanceAddress);
|
419
606
|
}
|
420
607
|
|
608
|
+
|
609
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
610
|
+
return POOL();
|
611
|
+
}
|
421
612
|
}
|