@etherisc/gif-next 0.0.2-7d58318-324 → 0.0.2-7dad245-860
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +38 -97
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -75
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +88 -157
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +42 -58
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1 -43
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +54 -54
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +80 -122
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +16 -16
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +72 -194
- 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 +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- 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 +26 -85
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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 +0 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -75
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +35 -136
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +383 -51
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -26
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +25 -94
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +194 -54
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +25 -132
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +262 -90
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -19
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +21 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +9 -17
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -75
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -58
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +30 -30
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +188 -108
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +254 -174
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +42 -26
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +0 -75
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductService.sol/ProductService.json → RiskService.sol/RiskService.json} +4 -17
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductServiceManager.sol/ProductServiceManager.json → RiskServiceManager.sol/RiskServiceManager.json} +12 -12
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +28 -28
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +140 -100
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +43 -51
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +56 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -75
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- 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/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +40 -113
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -108
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +23 -23
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +17 -12
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -2
- 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 +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- 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/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- 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/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 +39 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/Authorization.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/Distribution.sol +3 -9
- package/contracts/distribution/DistributionService.sol +14 -44
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +3 -6
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +8 -33
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceReader.sol +10 -7
- package/contracts/instance/InstanceService.sol +52 -28
- package/contracts/instance/InstanceStore.sol +2 -1
- package/contracts/instance/base/ObjectLifecycle.sol +2 -3
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -6
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +1 -1
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +2 -6
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +8 -2
- package/contracts/pool/BundleService.sol +168 -16
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +7 -0
- package/contracts/pool/IPoolService.sol +37 -24
- package/contracts/pool/Pool.sol +31 -14
- package/contracts/pool/PoolService.sol +165 -60
- package/contracts/product/ApplicationService.sol +37 -17
- package/contracts/product/BasicProduct.sol +3 -33
- package/contracts/product/ClaimService.sol +8 -8
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +1 -0
- package/contracts/product/IPolicyService.sol +23 -17
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +242 -133
- package/contracts/product/PricingService.sol +5 -1
- package/contracts/product/Product.sol +35 -17
- package/contracts/product/{ProductService.sol → RiskService.sol} +4 -6
- package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
- package/contracts/registry/RegistryAdmin.sol +10 -1
- package/contracts/registry/ReleaseRegistry.sol +0 -2
- package/contracts/shared/Component.sol +11 -23
- package/contracts/shared/ComponentService.sol +44 -25
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +5 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +2 -2
- package/contracts/shared/PolicyHolder.sol +2 -5
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/StakeManagerLib.sol +0 -25
- package/contracts/staking/Staking.sol +5 -22
- package/contracts/staking/StakingService.sol +8 -12
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/Seconds.sol +13 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/package.json +1 -1
- 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/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
@@ -26,6 +26,15 @@ interface IBundleService is IService {
|
|
26
26
|
|
27
27
|
error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
|
28
28
|
|
29
|
+
error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
30
|
+
|
31
|
+
error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
|
32
|
+
|
33
|
+
error ErrorBundleServiceExtensionLifetimeIsZero();
|
34
|
+
|
35
|
+
event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
|
36
|
+
event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
|
37
|
+
|
29
38
|
/// @dev create a new bundle for the specified attributes
|
30
39
|
/// may only be called by pool service
|
31
40
|
function create(
|
@@ -41,11 +50,20 @@ interface IBundleService is IService {
|
|
41
50
|
returns(NftId bundleNftId); // the nft id of the newly created bundle
|
42
51
|
|
43
52
|
|
44
|
-
/// @dev increase bundle stakes by the specified amount
|
45
|
-
/// may only be called by the
|
46
|
-
|
53
|
+
/// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
|
54
|
+
/// may only be called by the pool service
|
55
|
+
function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
|
56
|
+
|
57
|
+
/// @dev decrease bundle stakes by the specified amount
|
58
|
+
/// may only be called by the pool service
|
59
|
+
/// @param instance the instance relevant for the bundle
|
60
|
+
/// @param bundleNftId the bundle nft id
|
61
|
+
/// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
|
62
|
+
/// @return unstakedAmount the effective unstaked amount
|
63
|
+
function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
|
47
64
|
|
48
|
-
|
65
|
+
/// @dev extend the lifetime of the bundle by the specified time in seconds
|
66
|
+
function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
|
49
67
|
|
50
68
|
/// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
|
51
69
|
/// only active bundles may be locked
|
@@ -61,10 +79,12 @@ interface IBundleService is IService {
|
|
61
79
|
/// only open bundles (active or locked) may be closed
|
62
80
|
/// to close a bundle it may not have any non-closed polices attached to it
|
63
81
|
/// may only be called by registered and unlocked pool components
|
82
|
+
/// @return balanceAmount the unstaked amount that was remaining in the bundle
|
83
|
+
/// @return feeAmount the fee amount that was remaining for the bundle
|
64
84
|
function close(
|
65
85
|
IInstance instance,
|
66
86
|
NftId bundleNftId
|
67
|
-
) external;
|
87
|
+
) external returns (Amount balanceAmount, Amount feeAmount);
|
68
88
|
|
69
89
|
/// @dev set bundle fee to provided value
|
70
90
|
/// may only be called by registered and unlocked pool components
|
@@ -103,4 +123,12 @@ interface IBundleService is IService {
|
|
103
123
|
IInstance instance,
|
104
124
|
NftId policyNftId
|
105
125
|
) external;
|
126
|
+
|
127
|
+
// FIXME: move to pool service
|
128
|
+
/// @dev Withdraw bundle feeds for the given bundle
|
129
|
+
/// @param bundleNftId the bundle Nft Id
|
130
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
131
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
132
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
133
|
+
|
106
134
|
}
|
@@ -46,6 +46,13 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
46
46
|
view
|
47
47
|
returns (bool isMatching);
|
48
48
|
|
49
|
+
/// @dev Withdraw bundle feeds for the given bundle
|
50
|
+
/// @param bundleNftId the bundle Nft Id
|
51
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
52
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
53
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
54
|
+
|
49
55
|
/// @dev returns initial pool specific infos for this pool
|
50
56
|
function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
|
57
|
+
|
51
58
|
}
|
@@ -17,29 +17,26 @@ import {UFixed} from "../type/UFixed.sol";
|
|
17
17
|
|
18
18
|
interface IPoolService is IService {
|
19
19
|
|
20
|
-
event
|
20
|
+
event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
|
21
21
|
event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
|
22
22
|
|
23
23
|
event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
|
24
24
|
event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
|
25
25
|
|
26
|
+
event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
|
27
|
+
event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
|
28
|
+
|
26
29
|
error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
|
27
30
|
error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
|
28
|
-
|
31
|
+
error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
|
32
|
+
error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
|
33
|
+
|
29
34
|
/// @dev defines the required role for bundle owners for the calling pool
|
30
35
|
/// default implementation returns PUBLIC ROLE
|
31
36
|
function setBundleOwnerRole(RoleId bundleOwnerRole) external;
|
32
37
|
|
33
|
-
/// @dev sets the max
|
34
|
-
function
|
35
|
-
|
36
|
-
/// @dev set pool sepecific fees
|
37
|
-
function setFees(
|
38
|
-
Fee memory poolFee,
|
39
|
-
Fee memory stakingFee,
|
40
|
-
Fee memory performanceFee
|
41
|
-
) external;
|
42
|
-
|
38
|
+
/// @dev sets the max balance amount for the calling pool
|
39
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount) external;
|
43
40
|
|
44
41
|
/// @dev locks required collateral to cover the specified application (and turn it into a policy)
|
45
42
|
/// - retention level == 1: the full collateral amount will be locked by the specified bundle
|
@@ -85,7 +82,8 @@ interface IPoolService is IService {
|
|
85
82
|
|
86
83
|
/// @dev create a new bundle for the provided parameters
|
87
84
|
/// staking fees will be deducted by the pool service from the staking amount
|
88
|
-
/// may only be called by registered and unlocked pool components
|
85
|
+
/// may only be called by registered and unlocked pool components.
|
86
|
+
/// The pool balance is equal to the pool fees plus the capital of all bundles.
|
89
87
|
function createBundle(
|
90
88
|
address owner, // initial bundle owner
|
91
89
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
@@ -94,7 +92,19 @@ interface IPoolService is IService {
|
|
94
92
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
95
93
|
)
|
96
94
|
external
|
97
|
-
returns(NftId bundleNftId); // the nft id of the newly created bundle
|
95
|
+
returns(NftId bundleNftId, Amount netStakedAmount); // the nft id of the newly created bundle
|
96
|
+
|
97
|
+
|
98
|
+
/// @dev increase stakes for bundle
|
99
|
+
/// staking fees will be deducted by the pool service from the staking amount
|
100
|
+
/// may only be called by registered and unlocked pool components
|
101
|
+
function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
102
|
+
|
103
|
+
|
104
|
+
/// @dev decrease stakes for bundle
|
105
|
+
/// performance fees will be deducted by the pool service from the staking amount
|
106
|
+
/// may only be called by registered and unlocked pool components
|
107
|
+
function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
98
108
|
|
99
109
|
|
100
110
|
/// @dev closes the specified bundle
|
@@ -105,19 +115,22 @@ interface IPoolService is IService {
|
|
105
115
|
function closeBundle(NftId bundleNftId) external;
|
106
116
|
|
107
117
|
|
108
|
-
/// @dev
|
109
|
-
function
|
118
|
+
/// @dev Fund the specified pool wallet with the provided amount.
|
119
|
+
/// This function will collect the amount from the sender address and transfers it to the pool wallet.
|
120
|
+
/// The function will not update balance amounts managed by the framework.
|
121
|
+
/// Only available for externally managed pools.
|
122
|
+
function fundPoolWallet(NftId poolNftId, Amount amount) external;
|
110
123
|
|
111
|
-
/// @dev increase stakes for bundle
|
112
|
-
/// staking fees will be deducted by the pool service from the staking amount
|
113
|
-
/// may only be called by registered and unlocked pool components
|
114
|
-
// function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
115
124
|
|
125
|
+
/// @dev Defund the specified pool wallet with the provided amount.
|
126
|
+
/// This function will transfer the amount from the pool wallet to the sender address.
|
127
|
+
/// The function will not update balance amounts managed by the framework.
|
128
|
+
/// Only available for externally managed pools.
|
129
|
+
function defundPoolWallet(NftId poolNftId, Amount amount) external;
|
116
130
|
|
117
|
-
|
118
|
-
///
|
119
|
-
|
120
|
-
// function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
131
|
+
|
132
|
+
/// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
|
133
|
+
function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
|
121
134
|
|
122
135
|
|
123
136
|
/// @dev calulate required collateral for the provided parameters
|
package/contracts/pool/Pool.sol
CHANGED
@@ -14,6 +14,7 @@ import {Fee, FeeLib} from "../type/Fee.sol";
|
|
14
14
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
15
|
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
16
16
|
import {Seconds} from "../type/Seconds.sol";
|
17
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
17
18
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
18
19
|
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
19
20
|
|
@@ -94,6 +95,17 @@ abstract contract Pool is
|
|
94
95
|
_approveTokenHandler(type(uint256).max);
|
95
96
|
}
|
96
97
|
|
98
|
+
/// @inheritdoc IPoolComponent
|
99
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
100
|
+
external
|
101
|
+
virtual
|
102
|
+
restricted()
|
103
|
+
onlyBundleOwner(bundleNftId)
|
104
|
+
returns (Amount withdrawnAmount)
|
105
|
+
{
|
106
|
+
return _withdrawBundleFees(bundleNftId, amount);
|
107
|
+
}
|
108
|
+
|
97
109
|
|
98
110
|
function getInitialPoolInfo()
|
99
111
|
public
|
@@ -102,17 +114,13 @@ abstract contract Pool is
|
|
102
114
|
returns (IComponents.PoolInfo memory poolInfo)
|
103
115
|
{
|
104
116
|
return IComponents.PoolInfo(
|
105
|
-
NftIdLib.zero(), // will be set when GIF registers the related product
|
106
117
|
PUBLIC_ROLE(), // bundleOwnerRole
|
107
118
|
AmountLib.max(), // maxCapitalAmount,
|
108
119
|
isNftInterceptor(), // isInterceptingBundleTransfers
|
109
120
|
false, // isExternallyManaged,
|
110
121
|
false, // isVerifyingApplications,
|
111
122
|
UFixedLib.toUFixed(1), // collateralizationLevel,
|
112
|
-
UFixedLib.toUFixed(1)
|
113
|
-
FeeLib.zero(), // initialPoolFee,
|
114
|
-
FeeLib.zero(), // initialStakingFee,
|
115
|
-
FeeLib.zero() // initialPerformanceFee,
|
123
|
+
UFixedLib.toUFixed(1) // retentionLevel,
|
116
124
|
);
|
117
125
|
}
|
118
126
|
|
@@ -161,8 +169,9 @@ abstract contract Pool is
|
|
161
169
|
)
|
162
170
|
internal
|
163
171
|
virtual
|
172
|
+
returns(Amount netAmount)
|
164
173
|
{
|
165
|
-
|
174
|
+
_getPoolStorage()._poolService.stake(bundleNftId, amount);
|
166
175
|
}
|
167
176
|
|
168
177
|
|
@@ -174,8 +183,9 @@ abstract contract Pool is
|
|
174
183
|
)
|
175
184
|
internal
|
176
185
|
virtual
|
186
|
+
returns(Amount netAmount)
|
177
187
|
{
|
178
|
-
|
188
|
+
return _getPoolStorage()._poolService.unstake(bundleNftId, amount);
|
179
189
|
}
|
180
190
|
|
181
191
|
|
@@ -187,8 +197,9 @@ abstract contract Pool is
|
|
187
197
|
)
|
188
198
|
internal
|
189
199
|
virtual
|
200
|
+
returns (Timestamp extendedExpiredAt)
|
190
201
|
{
|
191
|
-
|
202
|
+
return _getPoolStorage()._bundleService.extend(bundleNftId, lifetimeExtension);
|
192
203
|
}
|
193
204
|
|
194
205
|
|
@@ -218,7 +229,7 @@ abstract contract Pool is
|
|
218
229
|
/// To close a bundle all all linked policies MUST be in closed state as well.
|
219
230
|
/// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
|
220
231
|
/// Once a bundle is closed this action cannot be reversed.
|
221
|
-
function
|
232
|
+
function _closeBundle(NftId bundleNftId)
|
222
233
|
internal
|
223
234
|
virtual
|
224
235
|
{
|
@@ -240,13 +251,13 @@ abstract contract Pool is
|
|
240
251
|
}
|
241
252
|
|
242
253
|
|
243
|
-
/// @dev Sets the maximum
|
254
|
+
/// @dev Sets the maximum balance amound held by this pool.
|
244
255
|
/// Function may only be called by pool owner.
|
245
|
-
function
|
256
|
+
function _setMaxBalanceAmount(Amount maxBalanceAmount)
|
246
257
|
internal
|
247
258
|
virtual
|
248
259
|
{
|
249
|
-
_getPoolStorage()._poolService.
|
260
|
+
_getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
|
250
261
|
}
|
251
262
|
|
252
263
|
/// @dev Sets the required role to create/own bundles.
|
@@ -285,9 +296,9 @@ abstract contract Pool is
|
|
285
296
|
bytes memory filter
|
286
297
|
)
|
287
298
|
internal
|
288
|
-
returns(NftId bundleNftId)
|
299
|
+
returns(NftId bundleNftId, Amount netStakedAmount)
|
289
300
|
{
|
290
|
-
bundleNftId = _getPoolStorage()._poolService.createBundle(
|
301
|
+
(bundleNftId, netStakedAmount) = _getPoolStorage()._poolService.createBundle(
|
291
302
|
bundleOwner,
|
292
303
|
fee,
|
293
304
|
amount,
|
@@ -302,6 +313,12 @@ abstract contract Pool is
|
|
302
313
|
return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
|
303
314
|
}
|
304
315
|
|
316
|
+
function _withdrawBundleFees(NftId bundleNftId, Amount amount)
|
317
|
+
internal
|
318
|
+
returns (Amount withdrawnAmount)
|
319
|
+
{
|
320
|
+
return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
|
321
|
+
}
|
305
322
|
|
306
323
|
function _getPoolStorage() private pure returns (PoolStorage storage $) {
|
307
324
|
assembly {
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IBundle} from "../instance/module/IBundle.sol";
|
4
5
|
import {IBundleService} from "./IBundleService.sol";
|
5
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
6
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
@@ -14,7 +15,7 @@ import {IStaking} from "../staking/IStaking.sol";
|
|
14
15
|
|
15
16
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
17
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
17
|
-
import {NftId
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
18
19
|
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
19
20
|
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
20
21
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
@@ -32,9 +33,6 @@ contract PoolService is
|
|
32
33
|
ComponentVerifyingService,
|
33
34
|
IPoolService
|
34
35
|
{
|
35
|
-
using NftIdLib for NftId;
|
36
|
-
using AmountLib for Amount;
|
37
|
-
|
38
36
|
IBundleService internal _bundleService;
|
39
37
|
IComponentService internal _componentService;
|
40
38
|
IInstanceService private _instanceService;
|
@@ -68,24 +66,20 @@ contract PoolService is
|
|
68
66
|
registerInterface(type(IPoolService).interfaceId);
|
69
67
|
}
|
70
68
|
|
71
|
-
|
72
|
-
function
|
69
|
+
/// @inheritdoc IPoolService
|
70
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
73
71
|
external
|
74
72
|
virtual
|
75
73
|
{
|
76
|
-
/*
|
77
74
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
78
75
|
InstanceReader instanceReader = instance.getInstanceReader();
|
76
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
79
77
|
|
80
|
-
|
81
|
-
|
82
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
83
|
-
|
84
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
78
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
79
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
85
80
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
86
81
|
|
87
|
-
emit
|
88
|
-
*/
|
82
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
89
83
|
}
|
90
84
|
|
91
85
|
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
@@ -109,27 +103,7 @@ contract PoolService is
|
|
109
103
|
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
110
104
|
}
|
111
105
|
|
112
|
-
|
113
|
-
function setFees(
|
114
|
-
Fee memory poolFee,
|
115
|
-
Fee memory stakingFee,
|
116
|
-
Fee memory performanceFee
|
117
|
-
)
|
118
|
-
external
|
119
|
-
virtual
|
120
|
-
{
|
121
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
122
|
-
|
123
|
-
IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
|
124
|
-
poolInfo.poolFee = poolFee;
|
125
|
-
poolInfo.stakingFee = stakingFee;
|
126
|
-
poolInfo.performanceFee = performanceFee;
|
127
|
-
|
128
|
-
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
129
|
-
|
130
|
-
// TODO add logging
|
131
|
-
}
|
132
|
-
|
106
|
+
/// @inheritdoc IPoolService
|
133
107
|
function createBundle(
|
134
108
|
address bundleOwner, // initial bundle owner
|
135
109
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
@@ -139,24 +113,32 @@ contract PoolService is
|
|
139
113
|
)
|
140
114
|
external
|
141
115
|
virtual
|
142
|
-
returns(NftId bundleNftId)
|
116
|
+
returns(NftId bundleNftId, Amount netStakedAmount)
|
143
117
|
{
|
144
118
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
145
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
146
119
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
120
|
+
{
|
121
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
122
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
123
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
124
|
+
if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
|
125
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
|
130
|
+
Amount stakingFeeAmount;
|
131
|
+
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
132
|
+
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
152
133
|
stakingAmount);
|
153
134
|
|
135
|
+
|
154
136
|
bundleNftId = _bundleService.create(
|
155
137
|
instance,
|
156
138
|
poolNftId,
|
157
139
|
bundleOwner,
|
158
140
|
fee,
|
159
|
-
|
141
|
+
netStakedAmount,
|
160
142
|
lifetime,
|
161
143
|
filter);
|
162
144
|
|
@@ -164,12 +146,13 @@ contract PoolService is
|
|
164
146
|
_componentService.increasePoolBalance(
|
165
147
|
instance.getInstanceStore(),
|
166
148
|
poolNftId,
|
167
|
-
|
149
|
+
netStakedAmount,
|
168
150
|
stakingFeeAmount);
|
169
151
|
|
152
|
+
// TODO only collect staking token when pool is not externally managed
|
170
153
|
// pool bookkeeping and collect tokens from bundle owner
|
171
154
|
_collectStakingAmount(
|
172
|
-
|
155
|
+
instance.getInstanceReader(),
|
173
156
|
poolNftId,
|
174
157
|
bundleOwner,
|
175
158
|
stakingAmount);
|
@@ -183,8 +166,8 @@ contract PoolService is
|
|
183
166
|
view
|
184
167
|
returns (Fee memory stakingFee)
|
185
168
|
{
|
186
|
-
NftId productNftId = instanceReader.
|
187
|
-
return instanceReader.
|
169
|
+
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
170
|
+
return instanceReader.getProductInfo(productNftId).stakingFee;
|
188
171
|
}
|
189
172
|
|
190
173
|
function closeBundle(NftId bundleNftId)
|
@@ -193,16 +176,143 @@ contract PoolService is
|
|
193
176
|
{
|
194
177
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
195
178
|
|
196
|
-
// TODO
|
179
|
+
// TODO get performance fee for pool (#477)
|
197
180
|
|
198
181
|
// releasing collateral in bundle
|
199
|
-
_bundleService.close(instance, bundleNftId);
|
200
|
-
|
201
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
182
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
202
183
|
|
184
|
+
_componentService.decreasePoolBalance(
|
185
|
+
instance.getInstanceStore(),
|
186
|
+
poolNftId,
|
187
|
+
unstakedAmount + feeAmount,
|
188
|
+
AmountLib.zero());
|
189
|
+
|
203
190
|
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
191
|
+
|
192
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
193
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
194
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
195
|
+
poolComponentInfo.wallet,
|
196
|
+
getRegistry().ownerOf(bundleNftId),
|
197
|
+
unstakedAmount + feeAmount);
|
198
|
+
}
|
204
199
|
}
|
205
200
|
|
201
|
+
/// @inheritdoc IPoolService
|
202
|
+
function stake(NftId bundleNftId, Amount amount)
|
203
|
+
external
|
204
|
+
virtual
|
205
|
+
// TODO: restricted() (once #462 is done)
|
206
|
+
returns(Amount netAmount)
|
207
|
+
{
|
208
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
209
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
210
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
211
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
212
|
+
|
213
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
214
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
215
|
+
}
|
216
|
+
|
217
|
+
{
|
218
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
219
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
220
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
221
|
+
}
|
222
|
+
}
|
223
|
+
|
224
|
+
// calculate fees
|
225
|
+
Amount feeAmount;
|
226
|
+
(
|
227
|
+
feeAmount,
|
228
|
+
netAmount
|
229
|
+
) = FeeLib.calculateFee(
|
230
|
+
_getStakingFee(instanceReader, poolNftId),
|
231
|
+
amount);
|
232
|
+
|
233
|
+
// do all the bookkeeping
|
234
|
+
_componentService.increasePoolBalance(
|
235
|
+
instance.getInstanceStore(),
|
236
|
+
poolNftId,
|
237
|
+
netAmount,
|
238
|
+
feeAmount);
|
239
|
+
|
240
|
+
_bundleService.stake(instance, bundleNftId, netAmount);
|
241
|
+
|
242
|
+
// collect tokens from bundle owner
|
243
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
244
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
245
|
+
|
246
|
+
// TODO only collect staking token when pool is not externally managed
|
247
|
+
_collectStakingAmount(
|
248
|
+
instanceReader,
|
249
|
+
poolNftId,
|
250
|
+
bundleOwner,
|
251
|
+
amount);
|
252
|
+
}
|
253
|
+
|
254
|
+
/// @inheritdoc IPoolService
|
255
|
+
function unstake(NftId bundleNftId, Amount amount)
|
256
|
+
external
|
257
|
+
virtual
|
258
|
+
// TODO: restricted() (once #462 is done)
|
259
|
+
returns(Amount netAmount)
|
260
|
+
{
|
261
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
262
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
263
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
264
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
265
|
+
|
266
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
267
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
268
|
+
}
|
269
|
+
|
270
|
+
// call bundle service for bookkeeping and additional checks
|
271
|
+
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
272
|
+
|
273
|
+
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
274
|
+
// if amount was max, this was set to the available amount
|
275
|
+
|
276
|
+
// TODO: handle performance fees (issue #477)
|
277
|
+
|
278
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
279
|
+
_componentService.decreasePoolBalance(
|
280
|
+
instanceStore,
|
281
|
+
poolNftId,
|
282
|
+
unstakedAmount,
|
283
|
+
AmountLib.zero());
|
284
|
+
|
285
|
+
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
286
|
+
address poolWallet = poolComponentInfo.wallet;
|
287
|
+
// transfer amount to bundle owner
|
288
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
289
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
290
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
291
|
+
poolWallet,
|
292
|
+
owner,
|
293
|
+
unstakedAmount);
|
294
|
+
return unstakedAmount;
|
295
|
+
}
|
296
|
+
|
297
|
+
|
298
|
+
function fundPoolWallet(NftId poolNftId, Amount amount)
|
299
|
+
external
|
300
|
+
virtual
|
301
|
+
restricted()
|
302
|
+
{
|
303
|
+
// TODO check that poolNftId is externally managed
|
304
|
+
// TODO implement
|
305
|
+
}
|
306
|
+
|
307
|
+
|
308
|
+
function defundPoolWallet(NftId poolNftId, Amount amount)
|
309
|
+
external
|
310
|
+
virtual
|
311
|
+
restricted()
|
312
|
+
{
|
313
|
+
// TODO check that poolNftId is externally managed
|
314
|
+
// TODO implement
|
315
|
+
}
|
206
316
|
|
207
317
|
function processSale(
|
208
318
|
NftId bundleNftId,
|
@@ -406,7 +516,6 @@ contract PoolService is
|
|
406
516
|
}
|
407
517
|
|
408
518
|
|
409
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
410
519
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
411
520
|
function _collectStakingAmount(
|
412
521
|
InstanceReader instanceReader,
|
@@ -419,15 +528,11 @@ contract PoolService is
|
|
419
528
|
|
420
529
|
// collecting investor token
|
421
530
|
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
422
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
423
531
|
address poolWallet = componentInfo.wallet;
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
poolWallet,
|
429
|
-
amount);
|
430
|
-
}
|
532
|
+
componentInfo.tokenHandler.collectTokens(
|
533
|
+
bundleOwner,
|
534
|
+
poolWallet,
|
535
|
+
amount);
|
431
536
|
}
|
432
537
|
|
433
538
|
function _getDomain() internal pure override returns(ObjectType) {
|