@etherisc/gif-next 0.0.2-ce3fd5e-324 → 0.0.2-ce86487-031
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 +48 -5
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1518 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +180 -360
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +283 -282
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +146 -72
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +180 -237
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +169 -64
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -78
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +193 -52
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +93 -126
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +469 -345
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +282 -101
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +120 -42
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1010 -378
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1432 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +437 -204
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +184 -50
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +235 -32
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +182 -331
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +311 -175
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +244 -433
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +468 -390
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +143 -53
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +97 -152
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +116 -34
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +150 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +134 -56
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +46 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +180 -26
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +40 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +272 -148
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -55
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +300 -257
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +126 -72
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +172 -159
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +141 -43
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +312 -272
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +47 -203
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +94 -32
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +206 -124
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +439 -39
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +370 -68
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -35
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +104 -119
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1284 -203
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +76 -81
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +12 -16
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +87 -4
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +566 -54
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -85
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +97 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +100 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +591 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +136 -0
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/authorization/IServiceAuthorization.sol +38 -0
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +90 -0
- package/contracts/distribution/BasicDistribution.sol +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +162 -152
- package/contracts/distribution/DistributionService.sol +120 -133
- package/contracts/distribution/DistributionServiceManager.sol +11 -23
- package/contracts/distribution/IDistributionComponent.sol +28 -47
- package/contracts/distribution/IDistributionService.sol +19 -9
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +26 -17
- package/contracts/instance/IInstanceService.sol +46 -27
- package/contracts/instance/Instance.sol +114 -89
- package/contracts/instance/InstanceAdmin.sol +266 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
- package/contracts/instance/InstanceReader.sol +92 -52
- package/contracts/instance/InstanceService.sol +266 -131
- package/contracts/instance/InstanceServiceManager.sol +12 -26
- package/contracts/instance/InstanceStore.sol +132 -66
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +15 -10
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +13 -6
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +166 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +166 -0
- package/contracts/pool/BasicPoolAuthorization.sol +58 -0
- package/contracts/pool/BundleService.sol +264 -196
- package/contracts/pool/BundleServiceManager.sol +11 -23
- package/contracts/pool/IBundleService.sol +36 -19
- package/contracts/pool/IPoolComponent.sol +10 -66
- package/contracts/pool/IPoolService.sol +60 -25
- package/contracts/pool/Pool.sol +170 -144
- package/contracts/pool/PoolService.sol +361 -205
- package/contracts/pool/PoolServiceManager.sol +11 -23
- package/contracts/product/ApplicationService.sol +124 -80
- package/contracts/product/ApplicationServiceManager.sol +11 -8
- package/contracts/product/BasicProduct.sol +52 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +53 -66
- package/contracts/product/ClaimServiceManager.sol +11 -8
- package/contracts/product/IApplicationService.sol +1 -1
- package/contracts/product/IClaimService.sol +13 -3
- package/contracts/product/IPolicyService.sol +16 -12
- package/contracts/product/IPricingService.sol +3 -1
- package/contracts/product/IProductComponent.sol +10 -11
- package/contracts/product/IProductService.sol +1 -8
- package/contracts/product/PolicyService.sol +319 -153
- package/contracts/product/PolicyServiceManager.sol +11 -26
- package/contracts/product/PricingService.sol +78 -53
- package/contracts/product/PricingServiceManager.sol +11 -23
- package/contracts/product/Product.sol +145 -109
- package/contracts/product/ProductService.sol +36 -147
- package/contracts/product/ProductServiceManager.sol +11 -26
- package/contracts/registry/ChainNft.sol +8 -1
- package/contracts/registry/IRegistry.sol +54 -21
- package/contracts/registry/IRegistryService.sol +38 -35
- package/contracts/registry/Registry.sol +233 -124
- package/contracts/registry/RegistryAdmin.sol +365 -0
- package/contracts/registry/RegistryService.sol +67 -100
- package/contracts/registry/RegistryServiceManager.sol +23 -30
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/Component.sol +140 -130
- package/contracts/shared/ComponentService.sol +596 -96
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/IComponent.sol +21 -40
- package/contracts/shared/IComponentService.sol +108 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IPolicyHolder.sol +6 -1
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +172 -0
- package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -73
- package/contracts/shared/Lifecycle.sol +77 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +4 -15
- package/contracts/shared/PolicyHolder.sol +22 -17
- package/contracts/shared/Registerable.sol +2 -2
- package/contracts/shared/Service.sol +32 -22
- package/contracts/shared/TokenHandler.sol +28 -1
- package/contracts/staking/IStaking.sol +167 -0
- package/contracts/staking/IStakingService.sol +105 -47
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +516 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +50 -0
- package/contracts/staking/StakingReader.sol +183 -0
- package/contracts/staking/StakingService.sol +288 -47
- package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +13 -6
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +29 -3
- package/contracts/type/Blocknumber.sol +26 -3
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +14 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +172 -63
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +104 -62
- package/contracts/type/Seconds.sol +40 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +27 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +34 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +33 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +8 -5
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
- package/contracts/instance/base/Lifecycle.sol +0 -120
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/registry/ReleaseManager.sol +0 -328
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,52 +1,46 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
3
5
|
|
4
|
-
import {Pool} from "./Pool.sol";
|
5
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
-
import {IInstance} from "../instance/IInstance.sol";
|
7
6
|
import {IBundle} from "../instance/module/IBundle.sol";
|
8
|
-
import {
|
7
|
+
import {IBundleService} from "./IBundleService.sol";
|
9
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
9
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
10
|
+
import {IInstance} from "../instance/IInstance.sol";
|
11
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
12
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
|
-
|
12
|
-
import {
|
13
|
-
import {
|
14
|
-
import {
|
13
|
+
import {IPoolService} from "./IPoolService.sol";
|
14
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
16
|
+
import {IStaking} from "../staking/IStaking.sol";
|
15
17
|
|
16
18
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
19
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
18
|
-
import {NftId
|
19
|
-
import {ObjectType, POOL, BUNDLE} from "../type/ObjectType.sol";
|
20
|
-
import {
|
20
|
+
import {NftId} from "../type/NftId.sol";
|
21
|
+
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
22
|
+
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
21
23
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
22
|
-
import {
|
23
|
-
import {KEEP_STATE, StateId} from "../type/StateId.sol";
|
24
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
24
25
|
import {Seconds} from "../type/Seconds.sol";
|
25
|
-
import {
|
26
|
-
import {
|
27
|
-
|
28
|
-
import {IService} from "../shared/IService.sol";
|
29
|
-
import {Service} from "../shared/Service.sol";
|
30
|
-
import {BundleManager} from "../instance/BundleManager.sol";
|
31
|
-
import {ComponentService} from "../shared/ComponentService.sol";
|
32
|
-
import {IBundleService} from "./IBundleService.sol";
|
33
|
-
import {IPoolService} from "./IPoolService.sol";
|
34
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
35
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
26
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
27
|
+
import {UFixed} from "../type/UFixed.sol";
|
28
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
36
29
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
37
|
-
import {
|
38
|
-
import {IPoolComponent} from "./IPoolComponent.sol";
|
30
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
39
31
|
|
40
32
|
string constant POOL_SERVICE_NAME = "PoolService";
|
41
33
|
|
42
34
|
contract PoolService is
|
43
|
-
|
35
|
+
ComponentVerifyingService,
|
44
36
|
IPoolService
|
45
37
|
{
|
46
|
-
using NftIdLib for NftId;
|
47
|
-
using AmountLib for Amount;
|
48
|
-
|
49
38
|
IBundleService internal _bundleService;
|
39
|
+
IComponentService internal _componentService;
|
40
|
+
IInstanceService private _instanceService;
|
41
|
+
IRegistryService private _registryService;
|
42
|
+
|
43
|
+
IStaking private _staking;
|
50
44
|
|
51
45
|
function _initialize(
|
52
46
|
address owner,
|
@@ -56,91 +50,45 @@ contract PoolService is
|
|
56
50
|
initializer
|
57
51
|
virtual override
|
58
52
|
{
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
initializeService(registryAddress, address(0), owner);
|
53
|
+
(
|
54
|
+
address registryAddress,,
|
55
|
+
//address managerAddress
|
56
|
+
address authority
|
57
|
+
) = abi.decode(data, (address, address, address));
|
65
58
|
|
66
|
-
|
59
|
+
initializeService(registryAddress, authority, owner);
|
67
60
|
|
68
|
-
|
69
|
-
|
61
|
+
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
62
|
+
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
63
|
+
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
64
|
+
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
70
65
|
|
71
|
-
|
72
|
-
return POOL();
|
73
|
-
}
|
66
|
+
_staking = IStaking(getRegistry().getStakingAddress());
|
74
67
|
|
75
|
-
|
76
|
-
external
|
77
|
-
returns(NftId poolNftId)
|
78
|
-
{
|
79
|
-
(
|
80
|
-
IComponent component,
|
81
|
-
address owner,
|
82
|
-
IInstance instance,
|
83
|
-
NftId instanceNftId
|
84
|
-
) = _checkComponentForRegistration(
|
85
|
-
poolAddress,
|
86
|
-
POOL(),
|
87
|
-
POOL_OWNER_ROLE());
|
88
|
-
|
89
|
-
IPoolComponent pool = IPoolComponent(poolAddress);
|
90
|
-
IRegistry.ObjectInfo memory registryInfo = getRegistryService().registerPool(pool, owner);
|
91
|
-
pool.linkToRegisteredNftId();
|
92
|
-
poolNftId = registryInfo.nftId;
|
93
|
-
|
94
|
-
// amend component info with pool specific token handler
|
95
|
-
IComponents.ComponentInfo memory componentInfo = pool.getComponentInfo();
|
96
|
-
componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
|
97
|
-
|
98
|
-
// save amended component info with instance
|
99
|
-
instance.getInstanceStore().createPoolSetup(poolNftId, componentInfo);
|
100
|
-
|
101
|
-
bytes4[][] memory selectors = new bytes4[][](2);
|
102
|
-
selectors[0] = new bytes4[](1);
|
103
|
-
selectors[1] = new bytes4[](1);
|
104
|
-
|
105
|
-
selectors[0][0] = IPoolComponent.setFees.selector;
|
106
|
-
selectors[1][0] = IPoolComponent.verifyApplication.selector;
|
107
|
-
|
108
|
-
RoleId[] memory roles = new RoleId[](2);
|
109
|
-
roles[0] = POOL_OWNER_ROLE();
|
110
|
-
roles[1] = POLICY_SERVICE_ROLE();
|
111
|
-
|
112
|
-
getInstanceService().createGifTarget(
|
113
|
-
instanceNftId,
|
114
|
-
poolAddress,
|
115
|
-
pool.getName(),
|
116
|
-
selectors,
|
117
|
-
roles);
|
68
|
+
registerInterface(type(IPoolService).interfaceId);
|
118
69
|
}
|
119
70
|
|
120
|
-
|
121
|
-
function
|
71
|
+
/// @inheritdoc IPoolService
|
72
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
122
73
|
external
|
123
74
|
virtual
|
124
75
|
{
|
125
|
-
(NftId poolNftId,, IInstance instance) =
|
76
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
126
77
|
InstanceReader instanceReader = instance.getInstanceReader();
|
78
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
127
79
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
133
|
-
componentInfo.data = abi.encode(poolInfo);
|
134
|
-
instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
80
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
81
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
82
|
+
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
135
83
|
|
136
|
-
emit
|
84
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
137
85
|
}
|
138
86
|
|
139
87
|
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
140
88
|
external
|
141
89
|
virtual
|
142
90
|
{
|
143
|
-
(NftId poolNftId,, IInstance instance) =
|
91
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
144
92
|
InstanceReader instanceReader = instance.getInstanceReader();
|
145
93
|
|
146
94
|
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
@@ -152,39 +100,14 @@ contract PoolService is
|
|
152
100
|
}
|
153
101
|
|
154
102
|
poolInfo.bundleOwnerRole = bundleOwnerRole;
|
155
|
-
|
156
|
-
instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
103
|
+
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
157
104
|
|
158
105
|
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
159
106
|
}
|
160
107
|
|
161
|
-
|
162
|
-
function setFees(
|
163
|
-
Fee memory poolFee,
|
164
|
-
Fee memory stakingFee,
|
165
|
-
Fee memory performanceFee
|
166
|
-
)
|
167
|
-
external
|
168
|
-
virtual
|
169
|
-
{
|
170
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
171
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
172
|
-
|
173
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
174
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
175
|
-
|
176
|
-
poolInfo.poolFee = poolFee;
|
177
|
-
poolInfo.stakingFee = stakingFee;
|
178
|
-
poolInfo.performanceFee = performanceFee;
|
179
|
-
componentInfo.data = abi.encode(poolInfo);
|
180
|
-
instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
181
|
-
|
182
|
-
// TODO add logging
|
183
|
-
}
|
184
|
-
|
185
|
-
|
108
|
+
/// @inheritdoc IPoolService
|
186
109
|
function createBundle(
|
187
|
-
address
|
110
|
+
address bundleOwner, // initial bundle owner
|
188
111
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
189
112
|
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
190
113
|
Seconds lifetime, // initial duration for which new policies are covered
|
@@ -192,54 +115,217 @@ contract PoolService is
|
|
192
115
|
)
|
193
116
|
external
|
194
117
|
virtual
|
195
|
-
returns(NftId bundleNftId)
|
118
|
+
returns(NftId bundleNftId, Amount netStakedAmount)
|
196
119
|
{
|
197
|
-
(NftId poolNftId,, IInstance instance) =
|
198
|
-
|
120
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
121
|
+
|
122
|
+
{
|
123
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
124
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
125
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
126
|
+
if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
|
127
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
Amount stakingFeeAmount;
|
133
|
+
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
134
|
+
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
135
|
+
stakingAmount);
|
199
136
|
|
200
|
-
// pool fee book keeping
|
201
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
202
|
-
Amount stakingNetAmount = _processStakingFees(componentInfo, stakingAmount);
|
203
137
|
|
204
138
|
bundleNftId = _bundleService.create(
|
205
139
|
instance,
|
206
140
|
poolNftId,
|
207
|
-
|
141
|
+
bundleOwner,
|
208
142
|
fee,
|
209
|
-
|
143
|
+
netStakedAmount,
|
210
144
|
lifetime,
|
211
145
|
filter);
|
212
146
|
|
213
|
-
//
|
214
|
-
|
147
|
+
// pool book keeping
|
148
|
+
_componentService.increasePoolBalance(
|
149
|
+
instance.getInstanceStore(),
|
150
|
+
poolNftId,
|
151
|
+
netStakedAmount,
|
152
|
+
stakingFeeAmount);
|
153
|
+
|
154
|
+
// pool bookkeeping and collect tokens from bundle owner
|
155
|
+
_collectStakingAmount(
|
156
|
+
instance.getInstanceReader(),
|
157
|
+
poolNftId,
|
158
|
+
bundleOwner,
|
159
|
+
stakingAmount);
|
215
160
|
|
216
161
|
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
217
162
|
}
|
218
163
|
|
164
|
+
function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
|
165
|
+
internal
|
166
|
+
virtual
|
167
|
+
view
|
168
|
+
returns (Fee memory stakingFee)
|
169
|
+
{
|
170
|
+
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
171
|
+
return instanceReader.getProductInfo(productNftId).stakingFee;
|
172
|
+
}
|
219
173
|
|
220
174
|
function closeBundle(NftId bundleNftId)
|
221
175
|
external
|
222
176
|
virtual
|
223
177
|
{
|
224
|
-
(NftId poolNftId,, IInstance instance) =
|
178
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
225
179
|
|
226
|
-
// TODO
|
180
|
+
// TODO get performance fee for pool (#477)
|
227
181
|
|
228
182
|
// releasing collateral in bundle
|
229
|
-
_bundleService.close(instance, bundleNftId);
|
230
|
-
|
231
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
183
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
232
184
|
|
185
|
+
_componentService.decreasePoolBalance(
|
186
|
+
instance.getInstanceStore(),
|
187
|
+
poolNftId,
|
188
|
+
unstakedAmount + feeAmount,
|
189
|
+
AmountLib.zero());
|
190
|
+
|
233
191
|
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
192
|
+
|
193
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
194
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
195
|
+
TokenHandler tokenHandler = poolComponentInfo.tokenHandler;
|
196
|
+
IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
|
197
|
+
|
198
|
+
// TODO: centralize token handling (issue #471)
|
199
|
+
|
200
|
+
// check allowance
|
201
|
+
uint256 tokenAllowance = token.allowance(poolComponentInfo.wallet, address(tokenHandler));
|
202
|
+
if (tokenAllowance < (unstakedAmount.toInt() + feeAmount.toInt())) {
|
203
|
+
revert ErrorPoolServiceWalletAllowanceTooSmall(
|
204
|
+
poolComponentInfo.wallet,
|
205
|
+
address(tokenHandler),
|
206
|
+
tokenAllowance,
|
207
|
+
unstakedAmount.toInt() + feeAmount.toInt());
|
208
|
+
}
|
209
|
+
|
210
|
+
// transfer amount to bundle owner
|
211
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
212
|
+
tokenHandler.transfer(poolComponentInfo.wallet, bundleOwner, unstakedAmount + feeAmount);
|
213
|
+
}
|
214
|
+
}
|
215
|
+
|
216
|
+
/// @inheritdoc IPoolService
|
217
|
+
function stake(NftId bundleNftId, Amount amount)
|
218
|
+
external
|
219
|
+
virtual
|
220
|
+
// TODO: restricted() (once #462 is done)
|
221
|
+
returns(Amount netAmount)
|
222
|
+
{
|
223
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
224
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
225
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
226
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
227
|
+
|
228
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
229
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
230
|
+
}
|
231
|
+
|
232
|
+
{
|
233
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
234
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
235
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
236
|
+
}
|
237
|
+
}
|
238
|
+
|
239
|
+
// calculate fees
|
240
|
+
Amount feeAmount;
|
241
|
+
(
|
242
|
+
feeAmount,
|
243
|
+
netAmount
|
244
|
+
) = FeeLib.calculateFee(
|
245
|
+
_getStakingFee(instanceReader, poolNftId),
|
246
|
+
amount);
|
247
|
+
|
248
|
+
// do all the bookkeeping
|
249
|
+
_componentService.increasePoolBalance(
|
250
|
+
instance.getInstanceStore(),
|
251
|
+
poolNftId,
|
252
|
+
netAmount,
|
253
|
+
feeAmount);
|
254
|
+
|
255
|
+
_bundleService.stake(instance, bundleNftId, netAmount);
|
256
|
+
|
257
|
+
// collect tokens from bundle owner
|
258
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
259
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
260
|
+
_collectStakingAmount(
|
261
|
+
instanceReader,
|
262
|
+
poolNftId,
|
263
|
+
bundleOwner,
|
264
|
+
amount);
|
265
|
+
}
|
266
|
+
|
267
|
+
/// @inheritdoc IPoolService
|
268
|
+
function unstake(NftId bundleNftId, Amount amount)
|
269
|
+
external
|
270
|
+
virtual
|
271
|
+
// TODO: restricted() (once #462 is done)
|
272
|
+
returns(Amount netAmount)
|
273
|
+
{
|
274
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
275
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
276
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
277
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
278
|
+
|
279
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
280
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
281
|
+
}
|
282
|
+
|
283
|
+
if (amount.eqz()) {
|
284
|
+
revert ErrorPoolServiceAmountIsZero();
|
285
|
+
}
|
286
|
+
|
287
|
+
// call bundle service for bookkeeping and additional checks
|
288
|
+
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
289
|
+
|
290
|
+
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
291
|
+
// if amount was max, this was set to the available amount
|
292
|
+
|
293
|
+
// TODO: handle performance fees (issue #477)
|
294
|
+
|
295
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
296
|
+
_componentService.decreasePoolBalance(
|
297
|
+
instanceStore,
|
298
|
+
poolNftId,
|
299
|
+
unstakedAmount,
|
300
|
+
AmountLib.zero());
|
301
|
+
|
302
|
+
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
303
|
+
address poolWallet = poolComponentInfo.wallet;
|
304
|
+
|
305
|
+
// check allowance
|
306
|
+
{
|
307
|
+
IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
|
308
|
+
uint256 tokenAllowance = token.allowance(poolWallet, address(poolComponentInfo.tokenHandler));
|
309
|
+
if (tokenAllowance < unstakedAmount.toInt()) {
|
310
|
+
revert ErrorPoolServiceWalletAllowanceTooSmall(poolWallet, address(poolComponentInfo.tokenHandler), tokenAllowance, amount.toInt());
|
311
|
+
}
|
312
|
+
}
|
313
|
+
|
314
|
+
// transfer amount to bundle owner
|
315
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
316
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
317
|
+
// TODO: centralize token handling (issue #471)
|
318
|
+
poolComponentInfo.tokenHandler.transfer(poolWallet, owner, unstakedAmount);
|
319
|
+
return unstakedAmount;
|
234
320
|
}
|
235
321
|
|
236
322
|
function processSale(
|
237
323
|
NftId bundleNftId,
|
238
|
-
IPolicy.Premium memory premium
|
239
|
-
Amount actualAmountTransferred
|
324
|
+
IPolicy.Premium memory premium
|
240
325
|
)
|
241
326
|
external
|
242
327
|
virtual
|
328
|
+
restricted()
|
243
329
|
{
|
244
330
|
IRegistry registry = getRegistry();
|
245
331
|
IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
|
@@ -249,90 +335,90 @@ contract PoolService is
|
|
249
335
|
|
250
336
|
Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
|
251
337
|
Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
|
252
|
-
Amount
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
}
|
338
|
+
Amount bundleNetAmount = AmountLib.toAmount(premium.netPremiumAmount);
|
339
|
+
|
340
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
341
|
+
_componentService.increasePoolBalance(
|
342
|
+
instanceStore,
|
343
|
+
poolObjectInfo.nftId,
|
344
|
+
bundleNetAmount + bundleFeeAmount,
|
345
|
+
poolFeeAmount);
|
346
|
+
|
347
|
+
_componentService.increaseBundleBalance(
|
348
|
+
instanceStore,
|
349
|
+
bundleObjectInfo.nftId,
|
350
|
+
bundleNetAmount,
|
351
|
+
bundleFeeAmount);
|
267
352
|
}
|
268
353
|
|
354
|
+
|
269
355
|
function lockCollateral(
|
270
356
|
IInstance instance,
|
357
|
+
address token,
|
271
358
|
NftId productNftId,
|
272
359
|
NftId applicationNftId,
|
273
|
-
|
274
|
-
Amount
|
360
|
+
NftId bundleNftId,
|
361
|
+
Amount sumInsuredAmount // premium amount after product and distribution fees
|
275
362
|
)
|
276
363
|
external
|
277
364
|
virtual
|
278
|
-
|
365
|
+
restricted()
|
366
|
+
returns (
|
367
|
+
Amount localCollateralAmount,
|
368
|
+
Amount totalCollateralAmount
|
369
|
+
)
|
279
370
|
{
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
}
|
290
|
-
|
291
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
292
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
293
|
-
|
294
|
-
// TODO add correct required collateral calculation (collateralization level mibht be != 1, retention level might be < 1)
|
295
|
-
Amount collateralAmount = applicationInfo.sumInsuredAmount;
|
296
|
-
|
297
|
-
// TODO add correct net premium calculation (pool fee might be > 0)
|
298
|
-
Amount premiumAfterPoolFeeAmount = premiumAmount;
|
299
|
-
|
300
|
-
// lock collateral amount from involvedd bundle
|
371
|
+
(
|
372
|
+
localCollateralAmount,
|
373
|
+
totalCollateralAmount
|
374
|
+
) = calculateRequiredCollateral(
|
375
|
+
instance.getInstanceReader(),
|
376
|
+
productNftId,
|
377
|
+
sumInsuredAmount);
|
378
|
+
|
379
|
+
// lock collateral amount from involved bundle
|
301
380
|
_bundleService.lockCollateral(
|
302
381
|
instance,
|
303
382
|
applicationNftId,
|
304
383
|
bundleNftId,
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
384
|
+
localCollateralAmount);
|
385
|
+
|
386
|
+
// update value locked with staking service
|
387
|
+
_staking.increaseTotalValueLocked(
|
388
|
+
instance.getNftId(),
|
389
|
+
token,
|
390
|
+
totalCollateralAmount);
|
391
|
+
|
392
|
+
// hierarhical riskpool setup
|
393
|
+
// TODO loop in with pool component to guarantee availability of external capital
|
394
|
+
if(totalCollateralAmount > localCollateralAmount) {
|
395
|
+
|
317
396
|
}
|
318
397
|
}
|
319
398
|
|
320
399
|
|
321
400
|
function reduceCollateral(
|
322
401
|
IInstance instance,
|
402
|
+
address token,
|
323
403
|
NftId policyNftId,
|
324
404
|
IPolicy.PolicyInfo memory policyInfo,
|
325
405
|
Amount payoutAmount
|
326
406
|
)
|
327
407
|
external
|
328
408
|
virtual
|
329
|
-
|
409
|
+
restricted()
|
330
410
|
{
|
331
411
|
_bundleService.releaseCollateral(
|
332
412
|
instance,
|
333
413
|
policyNftId,
|
334
414
|
policyInfo.bundleNftId,
|
335
415
|
payoutAmount);
|
416
|
+
|
417
|
+
// update value locked with staking service
|
418
|
+
_staking.decreaseTotalValueLocked(
|
419
|
+
instance.getNftId(),
|
420
|
+
token,
|
421
|
+
payoutAmount);
|
336
422
|
}
|
337
423
|
|
338
424
|
|
@@ -340,27 +426,84 @@ contract PoolService is
|
|
340
426
|
/// may only be called by the policy service for unlocked pool components
|
341
427
|
function releaseCollateral(
|
342
428
|
IInstance instance,
|
429
|
+
address token,
|
343
430
|
NftId policyNftId,
|
344
431
|
IPolicy.PolicyInfo memory policyInfo
|
345
432
|
)
|
346
433
|
external
|
347
434
|
virtual
|
348
|
-
|
435
|
+
restricted()
|
349
436
|
{
|
437
|
+
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
438
|
+
|
350
439
|
_bundleService.releaseCollateral(
|
351
440
|
instance,
|
352
441
|
policyNftId,
|
353
442
|
policyInfo.bundleNftId,
|
354
|
-
|
443
|
+
remainingCollateralAmount);
|
355
444
|
|
356
445
|
_bundleService.unlinkPolicy(
|
357
446
|
instance,
|
358
447
|
policyNftId);
|
448
|
+
|
449
|
+
// update value locked with staking service
|
450
|
+
_staking.decreaseTotalValueLocked(
|
451
|
+
instance.getNftId(),
|
452
|
+
token,
|
453
|
+
remainingCollateralAmount);
|
454
|
+
}
|
455
|
+
|
456
|
+
|
457
|
+
function calculateRequiredCollateral(
|
458
|
+
InstanceReader instanceReader,
|
459
|
+
NftId productNftId,
|
460
|
+
Amount sumInsuredAmount
|
461
|
+
)
|
462
|
+
public
|
463
|
+
view
|
464
|
+
returns(
|
465
|
+
Amount localCollateralAmount,
|
466
|
+
Amount totalCollateralAmount
|
467
|
+
)
|
468
|
+
{
|
469
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
470
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
471
|
+
|
472
|
+
(
|
473
|
+
localCollateralAmount,
|
474
|
+
totalCollateralAmount
|
475
|
+
) = calculateRequiredCollateral(
|
476
|
+
poolInfo.collateralizationLevel,
|
477
|
+
poolInfo.retentionLevel,
|
478
|
+
sumInsuredAmount);
|
479
|
+
}
|
480
|
+
|
481
|
+
|
482
|
+
function calculateRequiredCollateral(
|
483
|
+
UFixed collateralizationLevel,
|
484
|
+
UFixed retentionLevel,
|
485
|
+
Amount sumInsuredAmount
|
486
|
+
)
|
487
|
+
public
|
488
|
+
pure
|
489
|
+
returns(
|
490
|
+
Amount localCollateralAmount,
|
491
|
+
Amount totalCollateralAmount
|
492
|
+
)
|
493
|
+
{
|
494
|
+
// TODO define if only applies to local collateral
|
495
|
+
// TODO add minimalistic implementation
|
496
|
+
|
497
|
+
// assumptions
|
498
|
+
// - collateralizationLevel == 1.0
|
499
|
+
// - retentionLevel == 1.0
|
500
|
+
localCollateralAmount = sumInsuredAmount;
|
501
|
+
totalCollateralAmount = localCollateralAmount;
|
359
502
|
}
|
360
503
|
|
361
504
|
|
362
505
|
function _processStakingFees(
|
363
|
-
|
506
|
+
Fee memory stakingFee,
|
364
507
|
Amount stakingAmount
|
365
508
|
)
|
366
509
|
internal
|
@@ -369,7 +512,6 @@ contract PoolService is
|
|
369
512
|
stakingNetAmount = stakingAmount;
|
370
513
|
|
371
514
|
// check if any staking fees apply
|
372
|
-
Fee memory stakingFee = abi.decode(componentInfo.data, (IComponents.PoolInfo)).stakingFee;
|
373
515
|
if (FeeLib.gtz(stakingFee)) {
|
374
516
|
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
375
517
|
stakingNetAmount = netAmount;
|
@@ -381,23 +523,37 @@ contract PoolService is
|
|
381
523
|
|
382
524
|
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
383
525
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
384
|
-
function
|
385
|
-
|
526
|
+
function _collectStakingAmount(
|
527
|
+
InstanceReader instanceReader,
|
528
|
+
NftId poolNftId,
|
386
529
|
address bundleOwner,
|
387
|
-
Amount
|
530
|
+
Amount amount
|
388
531
|
)
|
389
532
|
internal
|
390
533
|
{
|
534
|
+
|
535
|
+
// collecting investor token
|
536
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
391
537
|
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
392
538
|
address poolWallet = componentInfo.wallet;
|
393
539
|
|
394
|
-
if(
|
540
|
+
if(amount.gtz()) {
|
541
|
+
uint256 allowance = IERC20Metadata(componentInfo.token).allowance(bundleOwner, address(tokenHandler));
|
542
|
+
if (allowance < amount.toInt()) {
|
543
|
+
revert ErrorPoolServiceWalletAllowanceTooSmall(bundleOwner, address(tokenHandler), allowance, amount.toInt());
|
544
|
+
}
|
545
|
+
|
546
|
+
// TODO: centralize token handling (issue #471)
|
395
547
|
tokenHandler.transfer(
|
396
548
|
bundleOwner,
|
397
549
|
poolWallet,
|
398
|
-
|
399
|
-
|
550
|
+
amount);
|
551
|
+
} else {
|
552
|
+
revert ErrorPoolServiceAmountIsZero();
|
400
553
|
}
|
401
554
|
}
|
402
555
|
|
556
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
557
|
+
return POOL();
|
558
|
+
}
|
403
559
|
}
|