@etherisc/gif-next 0.0.2-b8e869c-076 → 0.0.2-b926d1d-788
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -7
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +495 -254
- 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/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +273 -16
- 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 +391 -199
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +139 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +164 -444
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +261 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +95 -324
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +388 -310
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +141 -115
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +90 -167
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +258 -101
- 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 +1445 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2002 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -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 +1388 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1612 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2389 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +236 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +144 -93
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +256 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +734 -324
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +205 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1017 -252
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +172 -278
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +96 -96
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +768 -509
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -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/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- 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 +129 -317
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +243 -29
- 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 +104 -116
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +105 -269
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +137 -301
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +261 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +164 -369
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +106 -124
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +90 -117
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +127 -150
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +306 -294
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +125 -300
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +474 -525
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +151 -101
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +191 -164
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +106 -88
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +267 -370
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +261 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +407 -242
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +131 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +293 -17
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +245 -64
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +258 -209
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +86 -6
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +344 -274
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +129 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -336
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +109 -131
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +259 -362
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +169 -176
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +119 -85
- 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 +334 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- 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 +540 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +639 -367
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +423 -245
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +81 -227
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +520 -644
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +133 -121
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +597 -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/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +81 -75
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +463 -300
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +104 -116
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -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 +55 -2
- 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 +104 -268
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -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 +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +197 -118
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +152 -20
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +282 -335
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +126 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +35 -67
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +205 -168
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +103 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +191 -136
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +78 -37
- 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 +35 -11
- 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 +94 -38
- 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 +23 -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 +33 -31
- 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 +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- 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/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +338 -225
- package/contracts/authorization/AccessAdminLib.sol +183 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +350 -202
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +69 -35
- package/contracts/authorization/IAuthorization.sol +33 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +20 -17
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +37 -88
- package/contracts/distribution/DistributionService.sol +152 -89
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -10
- package/contracts/distribution/IDistributionService.sol +30 -22
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +60 -17
- package/contracts/instance/IInstanceService.sol +27 -31
- package/contracts/instance/Instance.sol +116 -41
- package/contracts/instance/InstanceAdmin.sol +287 -122
- package/contracts/instance/InstanceAuthorizationV3.sol +92 -61
- package/contracts/instance/InstanceReader.sol +281 -39
- package/contracts/instance/InstanceService.sol +192 -200
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +23 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +10 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +3 -3
- package/contracts/instance/module/IComponents.sol +13 -9
- package/contracts/instance/module/IDistribution.sol +5 -2
- package/contracts/instance/module/IPolicy.sol +25 -24
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +1 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +7 -19
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +32 -25
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +93 -134
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +15 -34
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +73 -71
- package/contracts/pool/Pool.sol +139 -124
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +487 -273
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +50 -26
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +10 -13
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +365 -149
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +8 -2
- package/contracts/product/IClaimService.sol +43 -8
- package/contracts/product/IPolicyService.sol +39 -28
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/IRiskService.sol +7 -7
- package/contracts/product/PolicyService.sol +369 -289
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +64 -59
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +142 -85
- package/contracts/product/RiskService.sol +91 -34
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +60 -28
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +357 -203
- package/contracts/registry/RegistryAdmin.sol +161 -277
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/RegistryService.sol +37 -48
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +253 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +272 -240
- package/contracts/registry/ServiceAuthorizationV3.sol +183 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +66 -124
- package/contracts/shared/ComponentService.sol +438 -371
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +281 -0
- package/contracts/shared/IComponent.sol +5 -17
- package/contracts/shared/IComponentService.sol +44 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +10 -2
- package/contracts/shared/InstanceLinkedComponent.sol +73 -50
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +29 -9
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +15 -32
- package/contracts/shared/TokenHandler.sol +275 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +19 -11
- package/contracts/staking/IStakingService.sol +16 -4
- package/contracts/staking/Staking.sol +101 -52
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +96 -21
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +18 -21
- package/contracts/staking/StakingService.sol +82 -25
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/StakingStore.sol +2 -1
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +7 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +57 -34
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +37 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +5 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -387
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,43 +1,44 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
4
5
|
import {IBundle} from "../instance/module/IBundle.sol";
|
5
6
|
import {IBundleService} from "./IBundleService.sol";
|
6
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
8
|
import {IComponentService} from "../shared/IComponentService.sol";
|
8
9
|
import {IInstance} from "../instance/IInstance.sol";
|
9
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
10
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
12
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
13
|
import {IPoolService} from "./IPoolService.sol";
|
14
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
12
15
|
import {IRegistry} from "../registry/IRegistry.sol";
|
13
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
14
16
|
import {IStaking} from "../staking/IStaking.sol";
|
15
17
|
|
16
18
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
|
-
import {
|
18
|
-
import {
|
19
|
-
import {
|
20
|
-
import {
|
21
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
19
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
20
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
21
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
22
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
22
23
|
import {KEEP_STATE} from "../type/StateId.sol";
|
23
|
-
import {
|
24
|
+
import {NftId} from "../type/NftId.sol";
|
25
|
+
import {ObjectType, ACCOUNTING, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
26
|
+
import {PayoutId} from "../type/PayoutId.sol";
|
27
|
+
import {PoolLib} from "./PoolLib.sol";
|
28
|
+
import {Service} from "../shared/Service.sol";
|
24
29
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
25
30
|
import {UFixed} from "../type/UFixed.sol";
|
26
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
27
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
28
|
-
import {InstanceStore} from "../instance/InstanceStore.sol";
|
29
31
|
|
30
32
|
string constant POOL_SERVICE_NAME = "PoolService";
|
31
33
|
|
34
|
+
|
32
35
|
contract PoolService is
|
33
|
-
|
36
|
+
Service,
|
34
37
|
IPoolService
|
35
38
|
{
|
39
|
+
IAccountingService private _accountingService;
|
36
40
|
IBundleService internal _bundleService;
|
37
41
|
IComponentService internal _componentService;
|
38
|
-
IInstanceService private _instanceService;
|
39
|
-
IRegistryService private _registryService;
|
40
|
-
|
41
42
|
IStaking private _staking;
|
42
43
|
|
43
44
|
function _initialize(
|
@@ -45,33 +46,31 @@ contract PoolService is
|
|
45
46
|
bytes memory data
|
46
47
|
)
|
47
48
|
internal
|
48
|
-
initializer
|
49
49
|
virtual override
|
50
|
+
initializer()
|
50
51
|
{
|
51
52
|
(
|
52
|
-
address
|
53
|
-
|
54
|
-
|
55
|
-
) = abi.decode(data, (address, address, address));
|
53
|
+
address authority,
|
54
|
+
address registry
|
55
|
+
) = abi.decode(data, (address, address));
|
56
56
|
|
57
|
-
|
57
|
+
__Service_init(authority, registry, owner);
|
58
58
|
|
59
|
-
|
59
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
60
60
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
61
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
62
61
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
63
|
-
|
64
62
|
_staking = IStaking(getRegistry().getStakingAddress());
|
65
63
|
|
66
|
-
|
64
|
+
_registerInterface(type(IPoolService).interfaceId);
|
67
65
|
}
|
68
66
|
|
67
|
+
|
69
68
|
/// @inheritdoc IPoolService
|
70
69
|
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
71
70
|
external
|
72
71
|
virtual
|
73
72
|
{
|
74
|
-
(NftId poolNftId
|
73
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
75
74
|
InstanceReader instanceReader = instance.getInstanceReader();
|
76
75
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
77
76
|
|
@@ -82,106 +81,21 @@ contract PoolService is
|
|
82
81
|
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
83
82
|
}
|
84
83
|
|
85
|
-
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
86
|
-
external
|
87
|
-
virtual
|
88
|
-
{
|
89
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
90
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
91
|
-
|
92
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
93
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
94
|
-
|
95
|
-
// bundle owner role may only be set once per pool
|
96
|
-
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
97
|
-
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
98
|
-
}
|
99
|
-
|
100
|
-
poolInfo.bundleOwnerRole = bundleOwnerRole;
|
101
|
-
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
102
|
-
|
103
|
-
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
104
|
-
}
|
105
|
-
|
106
|
-
/// @inheritdoc IPoolService
|
107
|
-
function createBundle(
|
108
|
-
address bundleOwner, // initial bundle owner
|
109
|
-
Fee memory fee, // fees deducted from premium that go to bundle owner
|
110
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
111
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
112
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
113
|
-
)
|
114
|
-
external
|
115
|
-
virtual
|
116
|
-
returns(NftId bundleNftId, Amount netStakedAmount)
|
117
|
-
{
|
118
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
119
|
-
|
120
|
-
{
|
121
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
122
|
-
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
123
|
-
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
124
|
-
if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
|
125
|
-
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
|
-
|
130
|
-
Amount stakingFeeAmount;
|
131
|
-
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
132
|
-
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
133
|
-
stakingAmount);
|
134
|
-
|
135
|
-
|
136
|
-
bundleNftId = _bundleService.create(
|
137
|
-
instance,
|
138
|
-
poolNftId,
|
139
|
-
bundleOwner,
|
140
|
-
fee,
|
141
|
-
netStakedAmount,
|
142
|
-
lifetime,
|
143
|
-
filter);
|
144
|
-
|
145
|
-
// pool book keeping
|
146
|
-
_componentService.increasePoolBalance(
|
147
|
-
instance.getInstanceStore(),
|
148
|
-
poolNftId,
|
149
|
-
netStakedAmount,
|
150
|
-
stakingFeeAmount);
|
151
|
-
|
152
|
-
// TODO only collect staking token when pool is not externally managed
|
153
|
-
// pool bookkeeping and collect tokens from bundle owner
|
154
|
-
_collectStakingAmount(
|
155
|
-
instance.getInstanceReader(),
|
156
|
-
poolNftId,
|
157
|
-
bundleOwner,
|
158
|
-
stakingAmount);
|
159
|
-
|
160
|
-
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
161
|
-
}
|
162
|
-
|
163
|
-
function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
|
164
|
-
internal
|
165
|
-
virtual
|
166
|
-
view
|
167
|
-
returns (Fee memory stakingFee)
|
168
|
-
{
|
169
|
-
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
170
|
-
return instanceReader.getProductInfo(productNftId).stakingFee;
|
171
|
-
}
|
172
84
|
|
173
85
|
function closeBundle(NftId bundleNftId)
|
174
86
|
external
|
175
87
|
virtual
|
176
88
|
{
|
177
|
-
(
|
89
|
+
_checkNftType(bundleNftId, BUNDLE());
|
90
|
+
|
91
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
178
92
|
|
179
93
|
// TODO get performance fee for pool (#477)
|
180
94
|
|
181
95
|
// releasing collateral in bundle
|
182
96
|
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
183
97
|
|
184
|
-
|
98
|
+
_accountingService.decreasePoolBalance(
|
185
99
|
instance.getInstanceStore(),
|
186
100
|
poolNftId,
|
187
101
|
unstakedAmount + feeAmount,
|
@@ -191,28 +105,88 @@ contract PoolService is
|
|
191
105
|
|
192
106
|
if ((unstakedAmount + feeAmount).gtz()){
|
193
107
|
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
194
|
-
poolComponentInfo.tokenHandler.
|
195
|
-
poolComponentInfo.wallet,
|
108
|
+
poolComponentInfo.tokenHandler.pushToken(
|
196
109
|
getRegistry().ownerOf(bundleNftId),
|
197
110
|
unstakedAmount + feeAmount);
|
198
111
|
}
|
199
112
|
}
|
200
113
|
|
114
|
+
|
201
115
|
/// @inheritdoc IPoolService
|
202
|
-
function
|
203
|
-
|
116
|
+
function processFundedClaim(
|
117
|
+
NftId policyNftId,
|
118
|
+
ClaimId claimId,
|
119
|
+
Amount availableAmount
|
120
|
+
)
|
121
|
+
external
|
204
122
|
virtual
|
205
|
-
// TODO: restricted() (once #462 is done)
|
206
|
-
returns(Amount netAmount)
|
207
123
|
{
|
208
|
-
(
|
124
|
+
_checkNftType(policyNftId, POLICY());
|
125
|
+
|
126
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
209
127
|
InstanceReader instanceReader = instance.getInstanceReader();
|
210
|
-
|
211
|
-
|
128
|
+
NftId productNftId = getRegistry().getParentNftId(poolNftId);
|
129
|
+
|
130
|
+
// check policy matches with calling pool
|
131
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
132
|
+
if(policyInfo.productNftId != productNftId) {
|
133
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
134
|
+
policyNftId,
|
135
|
+
policyInfo.productNftId,
|
136
|
+
productNftId);
|
137
|
+
}
|
138
|
+
|
139
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
212
140
|
|
213
|
-
|
214
|
-
|
141
|
+
// callback to product component if applicable
|
142
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
143
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
144
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
215
145
|
}
|
146
|
+
}
|
147
|
+
|
148
|
+
|
149
|
+
// function _checkAndGetPoolInfo(NftId bundleNftId)
|
150
|
+
// internal
|
151
|
+
// view
|
152
|
+
// returns (
|
153
|
+
// InstanceReader instanceReader,
|
154
|
+
// InstanceStore instanceStore,
|
155
|
+
// NftId instanceNftId,
|
156
|
+
// NftId poolNftId,
|
157
|
+
// IComponents.PoolInfo memory poolInfo
|
158
|
+
// )
|
159
|
+
// {
|
160
|
+
// _checkNftType(bundleNftId, BUNDLE());
|
161
|
+
|
162
|
+
// (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
163
|
+
// instanceReader = instance.getInstanceReader();
|
164
|
+
// instanceStore = instance.getInstanceStore();
|
165
|
+
// instanceNftId = instance.getNftId();
|
166
|
+
// poolInfo = instanceReader.getPoolInfo(poolNftId);
|
167
|
+
|
168
|
+
// if (getRegistry().getParentNftId(bundleNftId) != poolNftId) {
|
169
|
+
// revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
170
|
+
// }
|
171
|
+
// }
|
172
|
+
|
173
|
+
|
174
|
+
/// @inheritdoc IPoolService
|
175
|
+
function stake(NftId bundleNftId, Amount amount)
|
176
|
+
external
|
177
|
+
virtual
|
178
|
+
// TODO: restricted() (once #462 is done)
|
179
|
+
returns(
|
180
|
+
Amount netAmount
|
181
|
+
)
|
182
|
+
{
|
183
|
+
(
|
184
|
+
InstanceReader instanceReader,
|
185
|
+
InstanceStore instanceStore,
|
186
|
+
NftId instanceNftId,
|
187
|
+
NftId poolNftId,
|
188
|
+
IComponents.PoolInfo memory poolInfo
|
189
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
216
190
|
|
217
191
|
{
|
218
192
|
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
@@ -226,31 +200,37 @@ contract PoolService is
|
|
226
200
|
(
|
227
201
|
feeAmount,
|
228
202
|
netAmount
|
229
|
-
) =
|
230
|
-
|
203
|
+
) = PoolLib.calculateStakingAmounts(
|
204
|
+
getRegistry(),
|
205
|
+
instanceReader,
|
206
|
+
poolNftId,
|
231
207
|
amount);
|
232
208
|
|
233
|
-
// do all the
|
234
|
-
|
235
|
-
|
209
|
+
// do all the book keeping
|
210
|
+
_accountingService.increasePoolBalance(
|
211
|
+
instanceStore,
|
236
212
|
poolNftId,
|
237
213
|
netAmount,
|
238
214
|
feeAmount);
|
239
215
|
|
240
|
-
_bundleService.stake(
|
216
|
+
_bundleService.stake(instanceReader, instanceStore, bundleNftId, netAmount);
|
241
217
|
|
242
|
-
|
243
|
-
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
244
|
-
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
218
|
+
emit LogPoolServiceBundleStaked(instanceNftId, poolNftId, bundleNftId, amount, netAmount);
|
245
219
|
|
246
|
-
//
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
bundleOwner
|
251
|
-
|
220
|
+
// only collect staking amount when pool is not externally managed
|
221
|
+
if (!poolInfo.isExternallyManaged) {
|
222
|
+
|
223
|
+
// collect tokens from bundle owner
|
224
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
225
|
+
_pullStakingAmount(
|
226
|
+
instanceReader,
|
227
|
+
poolNftId,
|
228
|
+
bundleOwner,
|
229
|
+
amount);
|
230
|
+
}
|
252
231
|
}
|
253
232
|
|
233
|
+
|
254
234
|
/// @inheritdoc IPoolService
|
255
235
|
function unstake(NftId bundleNftId, Amount amount)
|
256
236
|
external
|
@@ -258,90 +238,129 @@ contract PoolService is
|
|
258
238
|
// TODO: restricted() (once #462 is done)
|
259
239
|
returns(Amount netAmount)
|
260
240
|
{
|
261
|
-
(
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
268
|
-
}
|
241
|
+
(
|
242
|
+
InstanceReader instanceReader,
|
243
|
+
InstanceStore instanceStore,
|
244
|
+
NftId instanceNftId,
|
245
|
+
NftId poolNftId,
|
246
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
269
247
|
|
270
248
|
// call bundle service for bookkeeping and additional checks
|
271
|
-
Amount unstakedAmount = _bundleService.unstake(
|
249
|
+
Amount unstakedAmount = _bundleService.unstake(instanceStore, bundleNftId, amount);
|
272
250
|
|
273
251
|
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
274
252
|
// if amount was max, this was set to the available amount
|
275
253
|
|
276
254
|
// TODO: handle performance fees (issue #477)
|
255
|
+
netAmount = unstakedAmount;
|
277
256
|
|
278
257
|
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
279
|
-
|
258
|
+
_accountingService.decreasePoolBalance(
|
280
259
|
instanceStore,
|
281
260
|
poolNftId,
|
282
261
|
unstakedAmount,
|
283
262
|
AmountLib.zero());
|
284
263
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
264
|
+
|
265
|
+
emit LogPoolServiceBundleUnstaked(instanceNftId, poolNftId, bundleNftId, unstakedAmount, netAmount);
|
266
|
+
|
267
|
+
// only distribute staking amount when pool is not externally managed
|
268
|
+
if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
|
269
|
+
|
270
|
+
// transfer amount to bundle owner
|
271
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
272
|
+
_pushUnstakingAmount(
|
273
|
+
instanceReader,
|
274
|
+
poolNftId,
|
275
|
+
bundleOwner,
|
276
|
+
netAmount);
|
277
|
+
}
|
295
278
|
}
|
296
279
|
|
297
280
|
|
298
|
-
function fundPoolWallet(
|
281
|
+
function fundPoolWallet(Amount amount)
|
299
282
|
external
|
300
283
|
virtual
|
301
|
-
restricted()
|
284
|
+
// restricted()
|
302
285
|
{
|
303
|
-
|
304
|
-
|
286
|
+
(
|
287
|
+
NftId poolNftId,
|
288
|
+
IInstance instance
|
289
|
+
) = _getAndVerifyActivePool();
|
290
|
+
|
291
|
+
// check that pool is externally managed
|
292
|
+
InstanceReader reader = instance.getInstanceReader();
|
293
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
294
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
295
|
+
}
|
296
|
+
|
297
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
298
|
+
emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
|
299
|
+
|
300
|
+
_pullStakingAmount(
|
301
|
+
reader,
|
302
|
+
poolNftId,
|
303
|
+
poolOwner,
|
304
|
+
amount);
|
305
305
|
}
|
306
306
|
|
307
307
|
|
308
|
-
function defundPoolWallet(
|
308
|
+
function defundPoolWallet(Amount amount)
|
309
309
|
external
|
310
310
|
virtual
|
311
|
-
restricted()
|
311
|
+
// restricted()
|
312
312
|
{
|
313
|
-
|
314
|
-
|
313
|
+
(
|
314
|
+
NftId poolNftId,
|
315
|
+
IInstance instance
|
316
|
+
) = _getAndVerifyActivePool();
|
317
|
+
|
318
|
+
// check that pool is externally managed
|
319
|
+
InstanceReader reader = instance.getInstanceReader();
|
320
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
321
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
322
|
+
}
|
323
|
+
|
324
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
325
|
+
emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
|
326
|
+
|
327
|
+
_pushUnstakingAmount(
|
328
|
+
reader,
|
329
|
+
poolNftId,
|
330
|
+
poolOwner,
|
331
|
+
amount);
|
315
332
|
}
|
316
333
|
|
334
|
+
|
317
335
|
function processSale(
|
318
336
|
NftId bundleNftId,
|
319
|
-
IPolicy.
|
337
|
+
IPolicy.PremiumInfo memory premium
|
320
338
|
)
|
321
339
|
external
|
322
340
|
virtual
|
323
341
|
restricted()
|
324
342
|
{
|
343
|
+
_checkNftType(bundleNftId, BUNDLE());
|
344
|
+
|
325
345
|
IRegistry registry = getRegistry();
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
346
|
+
NftId poolNftId = registry.getParentNftId(bundleNftId);
|
347
|
+
(, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
|
348
|
+
IInstance instance = IInstance(instanceAddress);
|
330
349
|
|
331
|
-
Amount poolFeeAmount =
|
332
|
-
Amount bundleFeeAmount =
|
333
|
-
Amount bundleNetAmount =
|
350
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
351
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
352
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
334
353
|
|
335
354
|
InstanceStore instanceStore = instance.getInstanceStore();
|
336
|
-
|
355
|
+
_accountingService.increasePoolBalance(
|
337
356
|
instanceStore,
|
338
|
-
|
357
|
+
poolNftId,
|
339
358
|
bundleNetAmount + bundleFeeAmount,
|
340
359
|
poolFeeAmount);
|
341
360
|
|
342
|
-
|
361
|
+
_accountingService.increaseBundleBalanceForPool(
|
343
362
|
instanceStore,
|
344
|
-
|
363
|
+
bundleNftId,
|
345
364
|
bundleNetAmount,
|
346
365
|
bundleFeeAmount);
|
347
366
|
}
|
@@ -359,14 +378,22 @@ contract PoolService is
|
|
359
378
|
virtual
|
360
379
|
restricted()
|
361
380
|
returns (
|
362
|
-
Amount
|
363
|
-
Amount
|
381
|
+
Amount totalCollateralAmount,
|
382
|
+
Amount localCollateralAmount
|
364
383
|
)
|
365
384
|
{
|
385
|
+
_checkNftType(productNftId, PRODUCT());
|
386
|
+
_checkNftType(applicationNftId, POLICY());
|
387
|
+
_checkNftType(bundleNftId, BUNDLE());
|
388
|
+
|
389
|
+
NftId poolNftId;
|
390
|
+
bool poolIsVerifyingApplications;
|
366
391
|
(
|
392
|
+
poolNftId,
|
393
|
+
totalCollateralAmount,
|
367
394
|
localCollateralAmount,
|
368
|
-
|
369
|
-
) = calculateRequiredCollateral(
|
395
|
+
poolIsVerifyingApplications
|
396
|
+
) = PoolLib.calculateRequiredCollateral(
|
370
397
|
instance.getInstanceReader(),
|
371
398
|
productNftId,
|
372
399
|
sumInsuredAmount);
|
@@ -384,36 +411,170 @@ contract PoolService is
|
|
384
411
|
token,
|
385
412
|
totalCollateralAmount);
|
386
413
|
|
387
|
-
//
|
388
|
-
|
389
|
-
|
414
|
+
// pool callback when required
|
415
|
+
if (poolIsVerifyingApplications) {
|
416
|
+
IPoolComponent pool = IPoolComponent(
|
417
|
+
getRegistry().getObjectAddress(poolNftId));
|
418
|
+
|
419
|
+
pool.verifyApplication(
|
420
|
+
applicationNftId,
|
421
|
+
bundleNftId,
|
422
|
+
totalCollateralAmount);
|
390
423
|
|
424
|
+
// TODO add logging
|
391
425
|
}
|
392
|
-
}
|
393
426
|
|
427
|
+
// TODO add logging
|
428
|
+
}
|
394
429
|
|
395
|
-
function
|
396
|
-
|
397
|
-
|
430
|
+
function processPayout(
|
431
|
+
InstanceReader instanceReader,
|
432
|
+
InstanceStore instanceStore,
|
433
|
+
NftId productNftId,
|
398
434
|
NftId policyNftId,
|
399
|
-
|
400
|
-
|
435
|
+
NftId bundleNftId,
|
436
|
+
PayoutId payoutId,
|
437
|
+
Amount payoutAmount,
|
438
|
+
address payoutBeneficiary
|
401
439
|
)
|
402
440
|
external
|
403
441
|
virtual
|
404
442
|
restricted()
|
405
443
|
{
|
444
|
+
// checks
|
445
|
+
_checkNftType(policyNftId, POLICY());
|
446
|
+
|
447
|
+
// effects
|
448
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
449
|
+
|
450
|
+
_accountingService.decreasePoolBalance(
|
451
|
+
instanceStore,
|
452
|
+
poolNftId,
|
453
|
+
payoutAmount,
|
454
|
+
AmountLib.zero());
|
455
|
+
|
456
|
+
_accountingService.decreaseBundleBalanceForPool(
|
457
|
+
instanceStore,
|
458
|
+
bundleNftId,
|
459
|
+
payoutAmount,
|
460
|
+
AmountLib.zero());
|
461
|
+
|
406
462
|
_bundleService.releaseCollateral(
|
407
|
-
|
463
|
+
instanceStore,
|
408
464
|
policyNftId,
|
409
|
-
|
465
|
+
bundleNftId,
|
410
466
|
payoutAmount);
|
411
467
|
|
412
468
|
// update value locked with staking service
|
469
|
+
TokenHandler poolTokenHandler = instanceReader.getTokenHandler(poolNftId);
|
470
|
+
|
413
471
|
_staking.decreaseTotalValueLocked(
|
414
|
-
|
415
|
-
|
472
|
+
instanceReader.getInstanceNftId(),
|
473
|
+
address(poolTokenHandler.TOKEN()),
|
416
474
|
payoutAmount);
|
475
|
+
|
476
|
+
// interactions
|
477
|
+
_transferTokenAndNotifyPolicyHolder(
|
478
|
+
instanceReader,
|
479
|
+
poolTokenHandler,
|
480
|
+
productNftId,
|
481
|
+
policyNftId,
|
482
|
+
payoutId,
|
483
|
+
payoutAmount,
|
484
|
+
payoutBeneficiary);
|
485
|
+
}
|
486
|
+
|
487
|
+
function _transferTokenAndNotifyPolicyHolder(
|
488
|
+
InstanceReader instanceReader,
|
489
|
+
TokenHandler poolTokenHandler,
|
490
|
+
NftId productNftId,
|
491
|
+
NftId policyNftId,
|
492
|
+
PayoutId payoutId,
|
493
|
+
Amount payoutAmount,
|
494
|
+
address payoutBeneficiary
|
495
|
+
)
|
496
|
+
internal
|
497
|
+
{
|
498
|
+
(
|
499
|
+
Amount netPayoutAmount,
|
500
|
+
Amount processingFeeAmount,
|
501
|
+
address beneficiary
|
502
|
+
) = PoolLib.calculatePayoutAmounts(
|
503
|
+
getRegistry(),
|
504
|
+
instanceReader,
|
505
|
+
productNftId,
|
506
|
+
policyNftId,
|
507
|
+
payoutAmount,
|
508
|
+
payoutBeneficiary);
|
509
|
+
|
510
|
+
// 1st token tx to payout to beneficiary
|
511
|
+
poolTokenHandler.pushToken(
|
512
|
+
beneficiary,
|
513
|
+
netPayoutAmount);
|
514
|
+
|
515
|
+
// 2nd token tx to transfer processing fees to product wallet
|
516
|
+
// if processingFeeAmount > 0
|
517
|
+
if (processingFeeAmount.gtz()) {
|
518
|
+
poolTokenHandler.pushToken(
|
519
|
+
instanceReader.getWallet(productNftId),
|
520
|
+
processingFeeAmount);
|
521
|
+
}
|
522
|
+
|
523
|
+
// callback to policy holder if applicable
|
524
|
+
_policyHolderPayoutExecuted(
|
525
|
+
policyNftId,
|
526
|
+
payoutId,
|
527
|
+
beneficiary,
|
528
|
+
netPayoutAmount);
|
529
|
+
}
|
530
|
+
|
531
|
+
|
532
|
+
/// @inheritdoc IPoolService
|
533
|
+
function withdrawBundleFees(
|
534
|
+
NftId bundleNftId,
|
535
|
+
Amount amount
|
536
|
+
)
|
537
|
+
public
|
538
|
+
virtual
|
539
|
+
restricted()
|
540
|
+
returns (Amount withdrawnAmount)
|
541
|
+
{
|
542
|
+
// checks
|
543
|
+
_checkNftType(bundleNftId, BUNDLE());
|
544
|
+
|
545
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
546
|
+
InstanceReader reader = instance.getInstanceReader();
|
547
|
+
|
548
|
+
// determine withdrawn amount
|
549
|
+
withdrawnAmount = amount;
|
550
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
551
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
552
|
+
} else {
|
553
|
+
if (withdrawnAmount > reader.getFeeAmount(bundleNftId)) {
|
554
|
+
revert ErrorPoolServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
555
|
+
}
|
556
|
+
}
|
557
|
+
|
558
|
+
// effects
|
559
|
+
// decrease fee counters by withdrawnAmount
|
560
|
+
{
|
561
|
+
InstanceStore store = instance.getInstanceStore();
|
562
|
+
// decrease fee amount of the bundle
|
563
|
+
_accountingService.decreaseBundleBalanceForPool(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
564
|
+
// decrease pool balance
|
565
|
+
_accountingService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
566
|
+
}
|
567
|
+
|
568
|
+
// interactions
|
569
|
+
// transfer amount to bundle owner
|
570
|
+
{
|
571
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
572
|
+
TokenHandler tokenHandler = reader.getTokenHandler(poolNftId);
|
573
|
+
address token = address(tokenHandler.TOKEN());
|
574
|
+
emit LogPoolServiceFeesWithdrawn(bundleNftId, bundleOwner, token, withdrawnAmount);
|
575
|
+
|
576
|
+
tokenHandler.pushToken(bundleOwner, withdrawnAmount);
|
577
|
+
}
|
417
578
|
}
|
418
579
|
|
419
580
|
|
@@ -421,7 +582,6 @@ contract PoolService is
|
|
421
582
|
/// may only be called by the policy service for unlocked pool components
|
422
583
|
function releaseCollateral(
|
423
584
|
IInstance instance,
|
424
|
-
address token,
|
425
585
|
NftId policyNftId,
|
426
586
|
IPolicy.PolicyInfo memory policyInfo
|
427
587
|
)
|
@@ -429,112 +589,166 @@ contract PoolService is
|
|
429
589
|
virtual
|
430
590
|
restricted()
|
431
591
|
{
|
592
|
+
_checkNftType(policyNftId, POLICY());
|
593
|
+
|
432
594
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
433
595
|
|
434
596
|
_bundleService.releaseCollateral(
|
435
|
-
instance,
|
597
|
+
instance.getInstanceStore(),
|
436
598
|
policyNftId,
|
437
599
|
policyInfo.bundleNftId,
|
438
600
|
remainingCollateralAmount);
|
439
601
|
|
440
|
-
_bundleService.unlinkPolicy(
|
441
|
-
instance,
|
442
|
-
policyNftId);
|
443
|
-
|
444
602
|
// update value locked with staking service
|
603
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
445
604
|
_staking.decreaseTotalValueLocked(
|
446
|
-
|
447
|
-
|
605
|
+
instanceReader.getInstanceNftId(),
|
606
|
+
address(instanceReader.getToken(policyInfo.productNftId)),
|
448
607
|
remainingCollateralAmount);
|
449
608
|
}
|
450
609
|
|
451
610
|
|
452
|
-
function calculateRequiredCollateral(
|
453
|
-
|
454
|
-
|
455
|
-
|
611
|
+
// function calculateRequiredCollateral(
|
612
|
+
// InstanceReader instanceReader,
|
613
|
+
// NftId productNftId,
|
614
|
+
// Amount sumInsuredAmount
|
615
|
+
// )
|
616
|
+
// public
|
617
|
+
// view
|
618
|
+
// returns(
|
619
|
+
// NftId poolNftId,
|
620
|
+
// Amount totalCollateralAmount,
|
621
|
+
// Amount localCollateralAmount,
|
622
|
+
// bool poolIsVerifyingApplications
|
623
|
+
// )
|
624
|
+
// {
|
625
|
+
// return CollateralLib.calculateRequiredCollateral(
|
626
|
+
// instanceReader,
|
627
|
+
// productNftId,
|
628
|
+
// sumInsuredAmount);
|
629
|
+
// }
|
630
|
+
|
631
|
+
// _checkNftType(productNftId, PRODUCT());
|
632
|
+
|
633
|
+
// poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
634
|
+
// IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
635
|
+
// poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
|
636
|
+
|
637
|
+
// (
|
638
|
+
// totalCollateralAmount,
|
639
|
+
// localCollateralAmount
|
640
|
+
// ) = calculateRequiredCollateral(
|
641
|
+
// poolInfo.collateralizationLevel,
|
642
|
+
// poolInfo.retentionLevel,
|
643
|
+
// sumInsuredAmount);
|
644
|
+
// }
|
645
|
+
|
646
|
+
|
647
|
+
// function calculateRequiredCollateral(
|
648
|
+
// UFixed collateralizationLevel,
|
649
|
+
// UFixed retentionLevel,
|
650
|
+
// Amount sumInsuredAmount
|
651
|
+
// )
|
652
|
+
// public
|
653
|
+
// pure
|
654
|
+
// returns(
|
655
|
+
// Amount totalCollateralAmount,
|
656
|
+
// Amount localCollateralAmount
|
657
|
+
// )
|
658
|
+
// {
|
659
|
+
// // collateralization is applied to sum insured
|
660
|
+
// UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
661
|
+
// totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
662
|
+
|
663
|
+
// // retention level defines how much capital is required locally
|
664
|
+
// localCollateralAmount = AmountLib.toAmount(
|
665
|
+
// (retentionLevel * totalUFixed).toInt());
|
666
|
+
// }
|
667
|
+
|
668
|
+
|
669
|
+
|
670
|
+
|
671
|
+
function _policyHolderPayoutExecuted(
|
672
|
+
NftId policyNftId,
|
673
|
+
PayoutId payoutId,
|
674
|
+
address beneficiary,
|
675
|
+
Amount payoutAmount
|
456
676
|
)
|
457
|
-
|
458
|
-
view
|
459
|
-
returns(
|
460
|
-
Amount localCollateralAmount,
|
461
|
-
Amount totalCollateralAmount
|
462
|
-
)
|
677
|
+
internal
|
463
678
|
{
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
localCollateralAmount,
|
469
|
-
totalCollateralAmount
|
470
|
-
) = calculateRequiredCollateral(
|
471
|
-
poolInfo.collateralizationLevel,
|
472
|
-
poolInfo.retentionLevel,
|
473
|
-
sumInsuredAmount);
|
679
|
+
IPolicyHolder policyHolder = PoolLib.getPolicyHolder(getRegistry(), policyNftId);
|
680
|
+
if(address(policyHolder) != address(0)) {
|
681
|
+
policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
|
682
|
+
}
|
474
683
|
}
|
475
684
|
|
476
685
|
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
686
|
+
/// @dev Transfers the specified amount from the "from account" to the pool's wallet
|
687
|
+
function _pullStakingAmount(
|
688
|
+
InstanceReader reader,
|
689
|
+
NftId poolNftId,
|
690
|
+
address from,
|
691
|
+
Amount amount
|
481
692
|
)
|
482
|
-
|
483
|
-
pure
|
484
|
-
returns(
|
485
|
-
Amount localCollateralAmount,
|
486
|
-
Amount totalCollateralAmount
|
487
|
-
)
|
693
|
+
internal
|
488
694
|
{
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
// - collateralizationLevel == 1.0
|
494
|
-
// - retentionLevel == 1.0
|
495
|
-
localCollateralAmount = sumInsuredAmount;
|
496
|
-
totalCollateralAmount = localCollateralAmount;
|
695
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
696
|
+
info.tokenHandler.pullToken(
|
697
|
+
from,
|
698
|
+
amount);
|
497
699
|
}
|
498
700
|
|
499
|
-
|
500
|
-
function
|
501
|
-
|
502
|
-
|
701
|
+
/// @dev Transfers the specified amount from the pool's wallet to the "to account"
|
702
|
+
function _pushUnstakingAmount(
|
703
|
+
InstanceReader reader,
|
704
|
+
NftId poolNftId,
|
705
|
+
address to,
|
706
|
+
Amount amount
|
503
707
|
)
|
504
708
|
internal
|
505
|
-
returns (Amount stakingNetAmount)
|
506
709
|
{
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
512
|
-
stakingNetAmount = netAmount;
|
513
|
-
|
514
|
-
// TODO update fee balance for pool
|
515
|
-
}
|
710
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
711
|
+
info.tokenHandler.pushToken(
|
712
|
+
to,
|
713
|
+
amount);
|
516
714
|
}
|
517
715
|
|
518
716
|
|
519
|
-
|
520
|
-
function _collectStakingAmount(
|
521
|
-
InstanceReader instanceReader,
|
522
|
-
NftId poolNftId,
|
523
|
-
address bundleOwner,
|
524
|
-
Amount amount
|
525
|
-
)
|
717
|
+
function _getAndVerifyActivePool()
|
526
718
|
internal
|
719
|
+
virtual
|
720
|
+
view
|
721
|
+
returns (
|
722
|
+
NftId poolNftId,
|
723
|
+
IInstance instance
|
724
|
+
)
|
527
725
|
{
|
528
|
-
|
529
|
-
// collecting investor token
|
530
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
531
|
-
address poolWallet = componentInfo.wallet;
|
532
|
-
componentInfo.tokenHandler.collectTokens(
|
533
|
-
bundleOwner,
|
534
|
-
poolWallet,
|
535
|
-
amount);
|
726
|
+
return PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
|
536
727
|
}
|
537
728
|
|
729
|
+
// function _getAndVerifyActivePool()
|
730
|
+
// internal
|
731
|
+
// virtual
|
732
|
+
// view
|
733
|
+
// returns (
|
734
|
+
// NftId poolNftId,
|
735
|
+
// IInstance instance
|
736
|
+
// )
|
737
|
+
// {
|
738
|
+
// (
|
739
|
+
// IRegistry.ObjectInfo memory info,
|
740
|
+
// address instanceAddress
|
741
|
+
// ) = ContractLib.getAndVerifyComponent(
|
742
|
+
// getRegistry(),
|
743
|
+
// msg.sender,
|
744
|
+
// POOL(),
|
745
|
+
// true); // only active pools
|
746
|
+
|
747
|
+
// poolNftId = info.nftId;
|
748
|
+
// instance = IInstance(instanceAddress);
|
749
|
+
// }
|
750
|
+
|
751
|
+
|
538
752
|
function _getDomain() internal pure override returns(ObjectType) {
|
539
753
|
return POOL();
|
540
754
|
}
|