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