@etherisc/gif-next 0.0.2-9ed3c41-176 → 0.0.2-9f51324-299
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 +100 -9
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -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 +496 -255
- 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 +277 -20
- 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 +395 -203
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +143 -19
- 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 +197 -477
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +265 -31
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +119 -380
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +510 -308
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +185 -119
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +123 -194
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +318 -90
- 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 +1461 -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 +2018 -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 +1404 -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 +1628 -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 +2405 -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 +737 -327
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +209 -94
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1080 -357
- 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 +106 -106
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +921 -728
- 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/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 +133 -350
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +247 -33
- 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 +117 -136
- 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 +109 -318
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +169 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +140 -98
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +175 -421
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +265 -31
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +394 -235
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +183 -105
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +212 -35
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -212
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +460 -308
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +129 -392
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +472 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +705 -552
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +189 -107
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +188 -180
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +122 -100
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +276 -435
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +265 -31
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +431 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +158 -124
- 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 +260 -229
- 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 +465 -307
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +727 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +155 -109
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +244 -329
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +126 -140
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +268 -427
- 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 +342 -42
- 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 +548 -103
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +640 -368
- 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 +104 -90
- 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 +431 -253
- 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 +15 -15
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +67 -277
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +538 -538
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +153 -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 +661 -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 +80 -100
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +499 -252
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +106 -136
- 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 +98 -318
- 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 +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 +196 -143
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +155 -23
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +292 -393
- 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 +142 -103
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +41 -73
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +224 -171
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -95
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +209 -149
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +94 -48
- 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 +63 -10
- 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 +98 -37
- 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 +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 +109 -35
- 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 +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/accounting/AccountingService.sol +261 -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 -203
- package/contracts/authorization/IAccess.sol +13 -4
- 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 -28
- package/contracts/distribution/BasicDistributionAuthorization.sol +26 -9
- package/contracts/distribution/Distribution.sol +41 -80
- package/contracts/distribution/DistributionService.sol +228 -130
- 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 +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 +64 -44
- package/contracts/instance/IInstanceService.sol +27 -31
- package/contracts/instance/Instance.sol +120 -70
- package/contracts/instance/InstanceAdmin.sol +287 -103
- package/contracts/instance/InstanceAuthorizationV3.sol +92 -59
- package/contracts/instance/InstanceReader.sol +288 -43
- package/contracts/instance/InstanceService.sol +207 -191
- 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/BalanceStore.sol +3 -5
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +30 -20
- package/contracts/instance/module/IDistribution.sol +21 -9
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +1 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +21 -24
- package/contracts/oracle/OracleService.sol +117 -85
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +37 -28
- package/contracts/pool/BasicPoolAuthorization.sol +36 -9
- package/contracts/pool/BundleService.sol +205 -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 -113
- package/contracts/pool/PoolLib.sol +309 -0
- package/contracts/pool/PoolService.sol +391 -255
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +127 -81
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +12 -45
- package/contracts/product/BasicProductAuthorization.sol +25 -9
- package/contracts/product/ClaimService.sol +373 -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 +436 -271
- package/contracts/product/PolicyServiceLib.sol +119 -0
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +69 -60
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +168 -93
- 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 +64 -28
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +357 -203
- package/contracts/registry/RegistryAdmin.sol +162 -269
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/RegistryService.sol +41 -66
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +253 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +272 -242
- package/contracts/registry/ServiceAuthorizationV3.sol +184 -52
- package/contracts/registry/TokenRegistry.sol +10 -9
- package/contracts/shared/Component.sol +65 -136
- package/contracts/shared/ComponentService.sol +423 -343
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +347 -0
- package/contracts/shared/IComponent.sol +5 -17
- package/contracts/shared/IComponentService.sol +49 -41
- 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} +11 -3
- package/contracts/shared/InstanceLinkedComponent.sol +80 -37
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +18 -36
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +26 -14
- package/contracts/staking/IStakingService.sol +19 -4
- package/contracts/staking/Staking.sol +117 -82
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
- package/contracts/staking/StakingManager.sol +10 -11
- package/contracts/staking/StakingReader.sol +23 -29
- package/contracts/staking/StakingService.sol +93 -37
- package/contracts/staking/StakingServiceManager.sol +8 -7
- package/contracts/staking/StakingStore.sol +7 -16
- 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/Fee.sol +8 -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/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 +56 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/{shared → upgradeability}/ProxyManager.sol +82 -47
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
- package/contracts/{shared → 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/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/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/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/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
- 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/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,60 +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 {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
32
6
|
import {IBundleService} from "./IBundleService.sol";
|
7
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
33
8
|
import {IComponentService} from "../shared/IComponentService.sol";
|
34
|
-
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";
|
35
13
|
import {IPoolService} from "./IPoolService.sol";
|
36
|
-
import {
|
14
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
15
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
37
16
|
import {IStaking} from "../staking/IStaking.sol";
|
38
|
-
|
17
|
+
|
18
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
19
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
20
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
39
21
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
40
22
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
41
|
-
import {
|
42
|
-
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";
|
43
31
|
|
44
32
|
string constant POOL_SERVICE_NAME = "PoolService";
|
45
33
|
|
34
|
+
|
46
35
|
contract PoolService is
|
47
|
-
|
36
|
+
Service,
|
48
37
|
IPoolService
|
49
38
|
{
|
50
|
-
|
51
|
-
using AmountLib for Amount;
|
52
|
-
|
39
|
+
IAccountingService private _accountingService;
|
53
40
|
IBundleService internal _bundleService;
|
54
41
|
IComponentService internal _componentService;
|
55
|
-
IInstanceService private _instanceService;
|
56
|
-
IRegistryService private _registryService;
|
57
|
-
|
58
42
|
IStaking private _staking;
|
59
43
|
|
60
44
|
function _initialize(
|
@@ -62,191 +46,324 @@ contract PoolService is
|
|
62
46
|
bytes memory data
|
63
47
|
)
|
64
48
|
internal
|
65
|
-
initializer
|
66
49
|
virtual override
|
50
|
+
initializer()
|
67
51
|
{
|
68
52
|
(
|
69
|
-
address
|
70
|
-
|
71
|
-
|
72
|
-
) = abi.decode(data, (address, address, address));
|
53
|
+
address authority,
|
54
|
+
address registry
|
55
|
+
) = abi.decode(data, (address, address));
|
73
56
|
|
74
|
-
|
57
|
+
__Service_init(authority, registry, owner);
|
75
58
|
|
76
|
-
|
59
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
77
60
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
78
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
79
61
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
80
|
-
|
81
62
|
_staking = IStaking(getRegistry().getStakingAddress());
|
82
63
|
|
83
|
-
|
64
|
+
_registerInterface(type(IPoolService).interfaceId);
|
84
65
|
}
|
85
66
|
|
86
67
|
|
87
|
-
|
68
|
+
/// @inheritdoc IPoolService
|
69
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
88
70
|
external
|
89
71
|
virtual
|
72
|
+
restricted()
|
90
73
|
{
|
91
|
-
|
92
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
74
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
93
75
|
InstanceReader instanceReader = instance.getInstanceReader();
|
76
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
94
77
|
|
95
|
-
|
96
|
-
|
97
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
98
|
-
|
99
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
78
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
79
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
100
80
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
101
81
|
|
102
|
-
emit
|
103
|
-
*/
|
82
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
104
83
|
}
|
105
84
|
|
106
|
-
|
85
|
+
|
86
|
+
function closeBundle(NftId bundleNftId)
|
107
87
|
external
|
88
|
+
restricted()
|
108
89
|
virtual
|
109
90
|
{
|
110
|
-
(
|
111
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
91
|
+
_checkNftType(bundleNftId, BUNDLE());
|
112
92
|
|
113
|
-
|
114
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
93
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
115
94
|
|
116
|
-
//
|
117
|
-
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
118
|
-
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
119
|
-
}
|
95
|
+
// TODO get performance fee for pool (#477)
|
120
96
|
|
121
|
-
|
122
|
-
|
97
|
+
// releasing collateral in bundle
|
98
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
99
|
+
|
100
|
+
_accountingService.decreasePoolBalance(
|
101
|
+
instance.getInstanceStore(),
|
102
|
+
poolNftId,
|
103
|
+
unstakedAmount + feeAmount,
|
104
|
+
AmountLib.zero());
|
105
|
+
|
106
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
123
107
|
|
124
|
-
|
108
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
109
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
110
|
+
poolComponentInfo.tokenHandler.pushToken(
|
111
|
+
getRegistry().ownerOf(bundleNftId),
|
112
|
+
unstakedAmount + feeAmount);
|
113
|
+
}
|
125
114
|
}
|
126
115
|
|
127
116
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
117
|
+
/// @inheritdoc IPoolService
|
118
|
+
function processFundedClaim(
|
119
|
+
NftId policyNftId,
|
120
|
+
ClaimId claimId,
|
121
|
+
Amount availableAmount
|
122
|
+
)
|
133
123
|
external
|
124
|
+
restricted()
|
134
125
|
virtual
|
135
126
|
{
|
136
|
-
(
|
127
|
+
_checkNftType(policyNftId, POLICY());
|
137
128
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
129
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
130
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
131
|
+
NftId productNftId = getRegistry().getParentNftId(poolNftId);
|
132
|
+
|
133
|
+
// check policy matches with calling pool
|
134
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
135
|
+
if(policyInfo.productNftId != productNftId) {
|
136
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
137
|
+
policyNftId,
|
138
|
+
policyInfo.productNftId,
|
139
|
+
productNftId);
|
140
|
+
}
|
142
141
|
|
143
|
-
|
142
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
144
143
|
|
145
|
-
//
|
144
|
+
// callback to product component if applicable
|
145
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
146
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
147
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
148
|
+
}
|
146
149
|
}
|
147
150
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
151
|
+
|
152
|
+
// function _checkAndGetPoolInfo(NftId bundleNftId)
|
153
|
+
// internal
|
154
|
+
// view
|
155
|
+
// returns (
|
156
|
+
// InstanceReader instanceReader,
|
157
|
+
// InstanceStore instanceStore,
|
158
|
+
// NftId instanceNftId,
|
159
|
+
// NftId poolNftId,
|
160
|
+
// IComponents.PoolInfo memory poolInfo
|
161
|
+
// )
|
162
|
+
// {
|
163
|
+
// _checkNftType(bundleNftId, BUNDLE());
|
164
|
+
|
165
|
+
// (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
166
|
+
// instanceReader = instance.getInstanceReader();
|
167
|
+
// instanceStore = instance.getInstanceStore();
|
168
|
+
// instanceNftId = instance.getNftId();
|
169
|
+
// poolInfo = instanceReader.getPoolInfo(poolNftId);
|
170
|
+
|
171
|
+
// if (getRegistry().getParentNftId(bundleNftId) != poolNftId) {
|
172
|
+
// revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
173
|
+
// }
|
174
|
+
// }
|
175
|
+
|
176
|
+
|
177
|
+
/// @inheritdoc IPoolService
|
178
|
+
function stake(NftId bundleNftId, Amount amount)
|
155
179
|
external
|
156
180
|
virtual
|
157
|
-
|
181
|
+
restricted()
|
182
|
+
returns(
|
183
|
+
Amount netAmount
|
184
|
+
)
|
158
185
|
{
|
159
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
160
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
161
|
-
|
162
186
|
(
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
187
|
+
InstanceReader instanceReader,
|
188
|
+
InstanceStore instanceStore,
|
189
|
+
NftId instanceNftId,
|
190
|
+
NftId poolNftId,
|
191
|
+
IComponents.PoolInfo memory poolInfo
|
192
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
193
|
+
|
194
|
+
{
|
195
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
196
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
197
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
198
|
+
}
|
199
|
+
}
|
168
200
|
|
169
|
-
|
170
|
-
|
201
|
+
// calculate fees
|
202
|
+
Amount feeAmount;
|
203
|
+
(
|
204
|
+
feeAmount,
|
205
|
+
netAmount
|
206
|
+
) = PoolLib.calculateStakingAmounts(
|
207
|
+
getRegistry(),
|
208
|
+
instanceReader,
|
171
209
|
poolNftId,
|
172
|
-
|
173
|
-
fee,
|
174
|
-
stakingNetAmount,
|
175
|
-
lifetime,
|
176
|
-
filter);
|
177
|
-
|
178
|
-
// pool book keeping
|
179
|
-
_componentService.increasePoolBalance(
|
180
|
-
instance.getInstanceStore(),
|
181
|
-
poolNftId,
|
182
|
-
stakingAmount,
|
183
|
-
stakingFeeAmount);
|
210
|
+
amount);
|
184
211
|
|
185
|
-
//
|
186
|
-
|
187
|
-
|
212
|
+
// do all the book keeping
|
213
|
+
_accountingService.increasePoolBalance(
|
214
|
+
instanceStore,
|
188
215
|
poolNftId,
|
189
|
-
|
190
|
-
|
216
|
+
netAmount,
|
217
|
+
feeAmount);
|
191
218
|
|
192
|
-
|
219
|
+
_bundleService.stake(instanceReader, instanceStore, bundleNftId, netAmount);
|
220
|
+
|
221
|
+
emit LogPoolServiceBundleStaked(instanceNftId, poolNftId, bundleNftId, amount, netAmount);
|
222
|
+
|
223
|
+
// only collect staking amount when pool is not externally managed
|
224
|
+
if (!poolInfo.isExternallyManaged) {
|
225
|
+
|
226
|
+
// collect tokens from bundle owner
|
227
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
228
|
+
PoolLib.pullStakingAmount(
|
229
|
+
instanceReader,
|
230
|
+
poolNftId,
|
231
|
+
bundleOwner,
|
232
|
+
amount);
|
233
|
+
}
|
193
234
|
}
|
194
235
|
|
195
|
-
|
196
|
-
|
236
|
+
|
237
|
+
/// @inheritdoc IPoolService
|
238
|
+
function unstake(NftId bundleNftId, Amount amount)
|
239
|
+
external
|
197
240
|
virtual
|
198
|
-
|
199
|
-
returns
|
241
|
+
restricted()
|
242
|
+
returns(Amount netAmount)
|
200
243
|
{
|
201
|
-
|
202
|
-
|
244
|
+
(
|
245
|
+
InstanceReader instanceReader,
|
246
|
+
InstanceStore instanceStore,
|
247
|
+
NftId instanceNftId,
|
248
|
+
NftId poolNftId,
|
249
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
250
|
+
|
251
|
+
// call bundle service for bookkeeping and additional checks
|
252
|
+
Amount unstakedAmount = _bundleService.unstake(instanceStore, bundleNftId, amount);
|
253
|
+
|
254
|
+
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
255
|
+
// if amount was max, this was set to the available amount
|
256
|
+
|
257
|
+
// TODO: handle performance fees (issue #477)
|
258
|
+
netAmount = unstakedAmount;
|
259
|
+
|
260
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
261
|
+
_accountingService.decreasePoolBalance(
|
262
|
+
instanceStore,
|
263
|
+
poolNftId,
|
264
|
+
unstakedAmount,
|
265
|
+
AmountLib.zero());
|
266
|
+
|
267
|
+
|
268
|
+
emit LogPoolServiceBundleUnstaked(instanceNftId, poolNftId, bundleNftId, unstakedAmount, netAmount);
|
269
|
+
|
270
|
+
// only distribute staking amount when pool is not externally managed
|
271
|
+
if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
|
272
|
+
|
273
|
+
// transfer amount to bundle owner
|
274
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
275
|
+
PoolLib.pushUnstakingAmount(
|
276
|
+
instanceReader,
|
277
|
+
poolNftId,
|
278
|
+
bundleOwner,
|
279
|
+
netAmount);
|
280
|
+
}
|
203
281
|
}
|
204
282
|
|
205
|
-
|
283
|
+
|
284
|
+
function fundPoolWallet(Amount amount)
|
206
285
|
external
|
207
286
|
virtual
|
287
|
+
restricted()
|
208
288
|
{
|
209
|
-
(
|
289
|
+
(
|
290
|
+
NftId poolNftId,
|
291
|
+
IInstance instance
|
292
|
+
) = _getAndVerifyActivePool();
|
293
|
+
|
294
|
+
// check that pool is externally managed
|
295
|
+
InstanceReader reader = instance.getInstanceReader();
|
296
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
297
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
298
|
+
}
|
210
299
|
|
211
|
-
|
300
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
301
|
+
emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
|
212
302
|
|
213
|
-
|
214
|
-
|
303
|
+
PoolLib.pullStakingAmount(
|
304
|
+
reader,
|
305
|
+
poolNftId,
|
306
|
+
poolOwner,
|
307
|
+
amount);
|
308
|
+
}
|
215
309
|
|
216
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
217
310
|
|
218
|
-
|
311
|
+
function defundPoolWallet(Amount amount)
|
312
|
+
external
|
313
|
+
virtual
|
314
|
+
restricted()
|
315
|
+
{
|
316
|
+
(
|
317
|
+
NftId poolNftId,
|
318
|
+
IInstance instance
|
319
|
+
) = _getAndVerifyActivePool();
|
320
|
+
|
321
|
+
// check that pool is externally managed
|
322
|
+
InstanceReader reader = instance.getInstanceReader();
|
323
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
324
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
325
|
+
}
|
326
|
+
|
327
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
328
|
+
emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
|
329
|
+
|
330
|
+
PoolLib.pushUnstakingAmount(
|
331
|
+
reader,
|
332
|
+
poolNftId,
|
333
|
+
poolOwner,
|
334
|
+
amount);
|
219
335
|
}
|
220
336
|
|
221
337
|
|
222
338
|
function processSale(
|
223
339
|
NftId bundleNftId,
|
224
|
-
IPolicy.
|
340
|
+
IPolicy.PremiumInfo memory premium
|
225
341
|
)
|
226
342
|
external
|
227
343
|
virtual
|
228
344
|
restricted()
|
229
345
|
{
|
346
|
+
_checkNftType(bundleNftId, BUNDLE());
|
347
|
+
|
230
348
|
IRegistry registry = getRegistry();
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
349
|
+
NftId poolNftId = registry.getParentNftId(bundleNftId);
|
350
|
+
(, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
|
351
|
+
IInstance instance = IInstance(instanceAddress);
|
235
352
|
|
236
|
-
Amount poolFeeAmount =
|
237
|
-
Amount bundleFeeAmount =
|
238
|
-
Amount bundleNetAmount =
|
353
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
354
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
355
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
239
356
|
|
240
357
|
InstanceStore instanceStore = instance.getInstanceStore();
|
241
|
-
|
358
|
+
_accountingService.increasePoolBalance(
|
242
359
|
instanceStore,
|
243
|
-
|
360
|
+
poolNftId,
|
244
361
|
bundleNetAmount + bundleFeeAmount,
|
245
362
|
poolFeeAmount);
|
246
363
|
|
247
|
-
|
364
|
+
_accountingService.increaseBundleBalanceForPool(
|
248
365
|
instanceStore,
|
249
|
-
|
366
|
+
bundleNftId,
|
250
367
|
bundleNetAmount,
|
251
368
|
bundleFeeAmount);
|
252
369
|
}
|
@@ -264,14 +381,22 @@ contract PoolService is
|
|
264
381
|
virtual
|
265
382
|
restricted()
|
266
383
|
returns (
|
267
|
-
Amount
|
268
|
-
Amount
|
384
|
+
Amount totalCollateralAmount,
|
385
|
+
Amount localCollateralAmount
|
269
386
|
)
|
270
387
|
{
|
388
|
+
_checkNftType(productNftId, PRODUCT());
|
389
|
+
_checkNftType(applicationNftId, POLICY());
|
390
|
+
_checkNftType(bundleNftId, BUNDLE());
|
391
|
+
|
392
|
+
NftId poolNftId;
|
393
|
+
bool poolIsVerifyingApplications;
|
271
394
|
(
|
395
|
+
poolNftId,
|
396
|
+
totalCollateralAmount,
|
272
397
|
localCollateralAmount,
|
273
|
-
|
274
|
-
) = calculateRequiredCollateral(
|
398
|
+
poolIsVerifyingApplications
|
399
|
+
) = PoolLib.calculateRequiredCollateral(
|
275
400
|
instance.getInstanceReader(),
|
276
401
|
productNftId,
|
277
402
|
sumInsuredAmount);
|
@@ -289,36 +414,127 @@ contract PoolService is
|
|
289
414
|
token,
|
290
415
|
totalCollateralAmount);
|
291
416
|
|
292
|
-
//
|
293
|
-
|
294
|
-
|
417
|
+
// pool callback when required
|
418
|
+
if (poolIsVerifyingApplications) {
|
419
|
+
IPoolComponent pool = IPoolComponent(
|
420
|
+
getRegistry().getObjectAddress(poolNftId));
|
295
421
|
|
422
|
+
pool.verifyApplication(
|
423
|
+
applicationNftId,
|
424
|
+
bundleNftId,
|
425
|
+
totalCollateralAmount);
|
426
|
+
|
427
|
+
// TODO add logging
|
296
428
|
}
|
297
|
-
}
|
298
429
|
|
430
|
+
// TODO add logging
|
431
|
+
}
|
299
432
|
|
300
|
-
function
|
301
|
-
|
302
|
-
|
433
|
+
function processPayout(
|
434
|
+
InstanceReader instanceReader,
|
435
|
+
InstanceStore instanceStore,
|
436
|
+
NftId productNftId,
|
303
437
|
NftId policyNftId,
|
304
|
-
|
305
|
-
|
438
|
+
NftId bundleNftId,
|
439
|
+
PayoutId payoutId,
|
440
|
+
Amount payoutAmount,
|
441
|
+
address payoutBeneficiary
|
306
442
|
)
|
307
443
|
external
|
308
444
|
virtual
|
309
445
|
restricted()
|
310
446
|
{
|
447
|
+
// checks
|
448
|
+
_checkNftType(policyNftId, POLICY());
|
449
|
+
|
450
|
+
// effects
|
451
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
452
|
+
|
453
|
+
_accountingService.decreasePoolBalance(
|
454
|
+
instanceStore,
|
455
|
+
poolNftId,
|
456
|
+
payoutAmount,
|
457
|
+
AmountLib.zero());
|
458
|
+
|
459
|
+
_accountingService.decreaseBundleBalanceForPool(
|
460
|
+
instanceStore,
|
461
|
+
bundleNftId,
|
462
|
+
payoutAmount,
|
463
|
+
AmountLib.zero());
|
464
|
+
|
311
465
|
_bundleService.releaseCollateral(
|
312
|
-
|
466
|
+
instanceStore,
|
313
467
|
policyNftId,
|
314
|
-
|
468
|
+
bundleNftId,
|
315
469
|
payoutAmount);
|
316
470
|
|
317
471
|
// update value locked with staking service
|
472
|
+
TokenHandler poolTokenHandler = instanceReader.getTokenHandler(poolNftId);
|
473
|
+
|
318
474
|
_staking.decreaseTotalValueLocked(
|
319
|
-
|
320
|
-
|
475
|
+
instanceReader.getInstanceNftId(),
|
476
|
+
address(poolTokenHandler.TOKEN()),
|
321
477
|
payoutAmount);
|
478
|
+
|
479
|
+
// interactions
|
480
|
+
PoolLib.transferTokenAndNotifyPolicyHolder(
|
481
|
+
getRegistry(),
|
482
|
+
instanceReader,
|
483
|
+
poolTokenHandler,
|
484
|
+
productNftId,
|
485
|
+
policyNftId,
|
486
|
+
payoutId,
|
487
|
+
payoutAmount,
|
488
|
+
payoutBeneficiary);
|
489
|
+
}
|
490
|
+
|
491
|
+
|
492
|
+
/// @inheritdoc IPoolService
|
493
|
+
function withdrawBundleFees(
|
494
|
+
NftId bundleNftId,
|
495
|
+
Amount amount
|
496
|
+
)
|
497
|
+
public
|
498
|
+
virtual
|
499
|
+
restricted()
|
500
|
+
returns (Amount withdrawnAmount)
|
501
|
+
{
|
502
|
+
// checks
|
503
|
+
_checkNftType(bundleNftId, BUNDLE());
|
504
|
+
|
505
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
506
|
+
InstanceReader reader = instance.getInstanceReader();
|
507
|
+
|
508
|
+
// determine withdrawn amount
|
509
|
+
withdrawnAmount = amount;
|
510
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
511
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
512
|
+
} else {
|
513
|
+
if (withdrawnAmount > reader.getFeeAmount(bundleNftId)) {
|
514
|
+
revert ErrorPoolServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
515
|
+
}
|
516
|
+
}
|
517
|
+
|
518
|
+
// effects
|
519
|
+
// decrease fee counters by withdrawnAmount
|
520
|
+
{
|
521
|
+
InstanceStore store = instance.getInstanceStore();
|
522
|
+
// decrease fee amount of the bundle
|
523
|
+
_accountingService.decreaseBundleBalanceForPool(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
524
|
+
// decrease pool balance
|
525
|
+
_accountingService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
526
|
+
}
|
527
|
+
|
528
|
+
// interactions
|
529
|
+
// transfer amount to bundle owner
|
530
|
+
{
|
531
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
532
|
+
TokenHandler tokenHandler = reader.getTokenHandler(poolNftId);
|
533
|
+
address token = address(tokenHandler.TOKEN());
|
534
|
+
emit LogPoolServiceFeesWithdrawn(bundleNftId, bundleOwner, token, withdrawnAmount);
|
535
|
+
|
536
|
+
tokenHandler.pushToken(bundleOwner, withdrawnAmount);
|
537
|
+
}
|
322
538
|
}
|
323
539
|
|
324
540
|
|
@@ -326,7 +542,6 @@ contract PoolService is
|
|
326
542
|
/// may only be called by the policy service for unlocked pool components
|
327
543
|
function releaseCollateral(
|
328
544
|
IInstance instance,
|
329
|
-
address token,
|
330
545
|
NftId policyNftId,
|
331
546
|
IPolicy.PolicyInfo memory policyInfo
|
332
547
|
)
|
@@ -334,117 +549,38 @@ contract PoolService is
|
|
334
549
|
virtual
|
335
550
|
restricted()
|
336
551
|
{
|
552
|
+
_checkNftType(policyNftId, POLICY());
|
553
|
+
|
337
554
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
338
555
|
|
339
556
|
_bundleService.releaseCollateral(
|
340
|
-
instance,
|
557
|
+
instance.getInstanceStore(),
|
341
558
|
policyNftId,
|
342
559
|
policyInfo.bundleNftId,
|
343
560
|
remainingCollateralAmount);
|
344
561
|
|
345
|
-
_bundleService.unlinkPolicy(
|
346
|
-
instance,
|
347
|
-
policyNftId);
|
348
|
-
|
349
562
|
// update value locked with staking service
|
563
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
350
564
|
_staking.decreaseTotalValueLocked(
|
351
|
-
|
352
|
-
|
565
|
+
instanceReader.getInstanceNftId(),
|
566
|
+
address(instanceReader.getToken(policyInfo.productNftId)),
|
353
567
|
remainingCollateralAmount);
|
354
568
|
}
|
355
569
|
|
356
570
|
|
357
|
-
function
|
358
|
-
InstanceReader instanceReader,
|
359
|
-
NftId productNftId,
|
360
|
-
Amount sumInsuredAmount
|
361
|
-
)
|
362
|
-
public
|
363
|
-
view
|
364
|
-
returns(
|
365
|
-
Amount localCollateralAmount,
|
366
|
-
Amount totalCollateralAmount
|
367
|
-
)
|
368
|
-
{
|
369
|
-
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
370
|
-
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
371
|
-
|
372
|
-
(
|
373
|
-
localCollateralAmount,
|
374
|
-
totalCollateralAmount
|
375
|
-
) = calculateRequiredCollateral(
|
376
|
-
poolInfo.collateralizationLevel,
|
377
|
-
poolInfo.retentionLevel,
|
378
|
-
sumInsuredAmount);
|
379
|
-
}
|
380
|
-
|
381
|
-
|
382
|
-
function calculateRequiredCollateral(
|
383
|
-
UFixed collateralizationLevel,
|
384
|
-
UFixed retentionLevel,
|
385
|
-
Amount sumInsuredAmount
|
386
|
-
)
|
387
|
-
public
|
388
|
-
pure
|
389
|
-
returns(
|
390
|
-
Amount localCollateralAmount,
|
391
|
-
Amount totalCollateralAmount
|
392
|
-
)
|
393
|
-
{
|
394
|
-
// TODO define if only applies to local collateral
|
395
|
-
// TODO add minimalistic implementation
|
396
|
-
|
397
|
-
// assumptions
|
398
|
-
// - collateralizationLevel == 1.0
|
399
|
-
// - retentionLevel == 1.0
|
400
|
-
localCollateralAmount = sumInsuredAmount;
|
401
|
-
totalCollateralAmount = localCollateralAmount;
|
402
|
-
}
|
403
|
-
|
404
|
-
|
405
|
-
function _processStakingFees(
|
406
|
-
Fee memory stakingFee,
|
407
|
-
Amount stakingAmount
|
408
|
-
)
|
571
|
+
function _getAndVerifyActivePool()
|
409
572
|
internal
|
410
|
-
|
573
|
+
virtual
|
574
|
+
view
|
575
|
+
returns (
|
576
|
+
NftId poolNftId,
|
577
|
+
IInstance instance
|
578
|
+
)
|
411
579
|
{
|
412
|
-
|
413
|
-
|
414
|
-
// check if any staking fees apply
|
415
|
-
if (FeeLib.gtz(stakingFee)) {
|
416
|
-
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
417
|
-
stakingNetAmount = netAmount;
|
418
|
-
|
419
|
-
// TODO update fee balance for pool
|
420
|
-
}
|
580
|
+
return PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
|
421
581
|
}
|
422
582
|
|
423
583
|
|
424
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
425
|
-
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
426
|
-
function _collectStakingAmount(
|
427
|
-
InstanceReader instanceReader,
|
428
|
-
NftId poolNftId,
|
429
|
-
address bundleOwner,
|
430
|
-
Amount amount
|
431
|
-
)
|
432
|
-
internal
|
433
|
-
{
|
434
|
-
|
435
|
-
// collecting investor token
|
436
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
437
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
438
|
-
address poolWallet = componentInfo.wallet;
|
439
|
-
|
440
|
-
if(amount.gtz()) {
|
441
|
-
tokenHandler.transfer(
|
442
|
-
bundleOwner,
|
443
|
-
poolWallet,
|
444
|
-
amount);
|
445
|
-
}
|
446
|
-
}
|
447
|
-
|
448
584
|
function _getDomain() internal pure override returns(ObjectType) {
|
449
585
|
return POOL();
|
450
586
|
}
|