@etherisc/gif-next 0.0.2-e46206a-486 → 0.0.2-e4b632c-016
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/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +13 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +86 -33
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +13 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -25
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -59
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -50
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +123 -65
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +184 -44
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +114 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +181 -1677
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2198 -1023
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +930 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1283 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +755 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +432 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -253
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +32 -48
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +18 -60
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +428 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- 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/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +8 -8
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +5 -5
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.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/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.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/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +2 -104
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +11 -11
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/BaseComponent.sol +9 -2
- package/contracts/components/Distribution.sol +25 -14
- package/contracts/components/IBaseComponent.sol +7 -2
- package/contracts/components/IDistributionComponent.sol +0 -3
- package/contracts/components/IPoolComponent.sol +0 -2
- package/contracts/components/IProductComponent.sol +1 -3
- package/contracts/components/Pool.sol +41 -28
- package/contracts/components/Product.sol +40 -42
- package/contracts/instance/AccessManagedSimple.sol +122 -0
- package/contracts/instance/AccessManagerSimple.sol +692 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +25 -44
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +423 -64
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +290 -0
- package/contracts/instance/InstanceService.sol +138 -0
- package/contracts/instance/InstanceServiceManager.sol +56 -0
- package/contracts/instance/base/ComponentServiceBase.sol +3 -13
- package/contracts/instance/base/IKeyValueStore.sol +13 -14
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +49 -39
- package/contracts/instance/base/Lifecycle.sol +1 -1
- package/contracts/instance/module/IAccess.sol +38 -0
- package/contracts/instance/module/IBundle.sol +19 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +45 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +43 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +62 -60
- package/contracts/instance/service/DistributionService.sol +33 -17
- package/contracts/instance/service/DistributionServiceManager.sol +53 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -1
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPoolService.sol +1 -1
- package/contracts/instance/service/IProductService.sol +2 -2
- package/contracts/registry/IRegistry.sol +1 -0
- package/contracts/registry/IRegistryService.sol +8 -8
- package/contracts/registry/Registry.sol +1 -1
- package/contracts/registry/RegistryService.sol +17 -14
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +54 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/test/TestService.sol +3 -5
- package/contracts/types/StateId.sol +4 -0
- package/package.json +1 -1
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -769
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1076
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -89
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -44
- package/contracts/instance/module/bundle/BundleModule.sol +0 -134
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -71
- package/contracts/instance/module/component/IComponent.sol +0 -28
- package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
- package/contracts/instance/module/distribution/IDistribution.sol +0 -10
- package/contracts/instance/module/policy/IPolicy.sol +0 -63
- package/contracts/instance/module/policy/PolicyModule.sol +0 -91
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -95
- package/contracts/instance/module/risk/IRisk.sol +0 -26
- package/contracts/instance/module/risk/RiskModule.sol +0 -62
- package/contracts/instance/module/treasury/ITreasury.sol +0 -84
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
- package/contracts/instance/service/PoolService.sol +0 -149
- package/contracts/instance/service/ProductService.sol +0 -510
- package/contracts/test/TestDistribution.sol +0 -22
- package/contracts/test/TestPool.sol +0 -27
- package/contracts/test/TestProduct.sol +0 -74
@@ -1,41 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
|
-
import {NftId} from "../../../types/NftId.sol";
|
6
|
-
import {UFixed} from "../../../types/UFixed.sol";
|
7
|
-
import {IProductService} from "../../service/IProductService.sol";
|
8
|
-
import {IPoolService} from "../../service/IPoolService.sol";
|
9
|
-
import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
|
10
|
-
|
11
|
-
interface IPool {
|
12
|
-
struct PoolInfo {
|
13
|
-
bool isVerifying;
|
14
|
-
UFixed collateralizationLevel;
|
15
|
-
}
|
16
|
-
}
|
17
|
-
|
18
|
-
interface IPoolModule is IPool {
|
19
|
-
|
20
|
-
function registerPool(
|
21
|
-
NftId nftId,
|
22
|
-
PoolInfo memory info
|
23
|
-
) external;
|
24
|
-
|
25
|
-
function addBundleToPool(
|
26
|
-
NftId bundleNftId,
|
27
|
-
NftId poolNftId,
|
28
|
-
uint256 amount
|
29
|
-
) external;
|
30
|
-
|
31
|
-
function getPoolInfo(
|
32
|
-
NftId nftId
|
33
|
-
) external view returns (PoolInfo memory info);
|
34
|
-
|
35
|
-
function getBundleCount(NftId poolNftId) external view returns (uint256 bundleCount);
|
36
|
-
function getBundleNftId(NftId poolNftId, uint256 index) external view returns (NftId bundleNftId);
|
37
|
-
|
38
|
-
// repeat service linked signatures to avoid linearization issues
|
39
|
-
function getComponentOwnerService() external view returns(IComponentOwnerService);
|
40
|
-
function getPoolService() external returns(IPoolService);
|
41
|
-
}
|
@@ -1,95 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
|
-
import {IProductService} from "../../service/IProductService.sol";
|
6
|
-
import {IPoolService} from "../../service/IPoolService.sol";
|
7
|
-
import {IPolicy, IPolicyModule} from "../../module/policy/IPolicy.sol";
|
8
|
-
import {ITreasuryModule} from "../../module/treasury/ITreasury.sol";
|
9
|
-
|
10
|
-
import {NftId} from "../../../types/NftId.sol";
|
11
|
-
import {POOL} from "../../../types/ObjectType.sol";
|
12
|
-
import {LibNftIdSet} from "../../../types/NftIdSet.sol";
|
13
|
-
import {StateId, APPLIED} from "../../../types/StateId.sol";
|
14
|
-
import {UFixed} from "../../../types/UFixed.sol";
|
15
|
-
|
16
|
-
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
17
|
-
import {IPoolModule} from "./IPoolModule.sol";
|
18
|
-
import {ModuleBase} from "../../base/ModuleBase.sol";
|
19
|
-
|
20
|
-
abstract contract PoolModule is
|
21
|
-
ModuleBase,
|
22
|
-
IPoolModule
|
23
|
-
{
|
24
|
-
using LibNftIdSet for LibNftIdSet.Set;
|
25
|
-
|
26
|
-
// mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
|
27
|
-
mapping(NftId poolNftId => LibNftIdSet.Set bundles) private _bundlesForPool;
|
28
|
-
|
29
|
-
|
30
|
-
// TODO try to keep 1 modifier in 1 place...
|
31
|
-
modifier onlyComponentOwnerService() virtual {
|
32
|
-
require(
|
33
|
-
msg.sender == address(this.getComponentOwnerService()),
|
34
|
-
"ERROR:CMP-001:NOT_COMPONENT_OWNER_SERVICE"
|
35
|
-
);
|
36
|
-
_;
|
37
|
-
}
|
38
|
-
|
39
|
-
modifier poolServiceCallingPool() {
|
40
|
-
require(
|
41
|
-
msg.sender == address(this.getPoolService()),
|
42
|
-
"ERROR:PL-001:NOT_POOL_SERVICE"
|
43
|
-
);
|
44
|
-
_;
|
45
|
-
}
|
46
|
-
|
47
|
-
function initializePoolModule(IKeyValueStore keyValueStore) internal {
|
48
|
-
_initialize(keyValueStore);
|
49
|
-
}
|
50
|
-
|
51
|
-
function registerPool(
|
52
|
-
NftId nftId,
|
53
|
-
PoolInfo memory info
|
54
|
-
)
|
55
|
-
public
|
56
|
-
onlyComponentOwnerService
|
57
|
-
override
|
58
|
-
{
|
59
|
-
_create(POOL(), nftId, abi.encode(info));
|
60
|
-
}
|
61
|
-
|
62
|
-
function addBundleToPool(
|
63
|
-
NftId bundleNftId,
|
64
|
-
NftId poolNftId,
|
65
|
-
uint256 // amount
|
66
|
-
)
|
67
|
-
external
|
68
|
-
override
|
69
|
-
{
|
70
|
-
LibNftIdSet.Set storage bundleSet = _bundlesForPool[poolNftId];
|
71
|
-
require(
|
72
|
-
!bundleSet.contains(bundleNftId),
|
73
|
-
"ERROR:PL-020:BUNDLE_ALREADY_ADDED");
|
74
|
-
|
75
|
-
bundleSet.add(bundleNftId);
|
76
|
-
}
|
77
|
-
|
78
|
-
|
79
|
-
function getPoolInfo(
|
80
|
-
NftId nftId
|
81
|
-
) external view override returns (PoolInfo memory info) {
|
82
|
-
return abi.decode(_getData(POOL(), nftId), (PoolInfo));
|
83
|
-
}
|
84
|
-
|
85
|
-
|
86
|
-
function getBundleCount(NftId poolNftId) external view override returns (uint256 bundleCount) {
|
87
|
-
return _bundlesForPool[poolNftId].getLength();
|
88
|
-
}
|
89
|
-
|
90
|
-
|
91
|
-
function getBundleNftId(NftId poolNftId, uint256 index) external view override returns (NftId bundleNftId) {
|
92
|
-
return _bundlesForPool[poolNftId].getElementAt(index);
|
93
|
-
}
|
94
|
-
|
95
|
-
}
|
@@ -1,26 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {NftId} from "../../../types/NftId.sol";
|
5
|
-
import {RiskId} from "../../../types/RiskId.sol";
|
6
|
-
import {StateId} from "../../../types/StateId.sol";
|
7
|
-
|
8
|
-
interface IRisk {
|
9
|
-
struct RiskInfo {
|
10
|
-
NftId productNftId;
|
11
|
-
bytes data;
|
12
|
-
}
|
13
|
-
}
|
14
|
-
|
15
|
-
interface IRiskModule is IRisk {
|
16
|
-
function createRisk(
|
17
|
-
RiskId riskId,
|
18
|
-
NftId productNftId,
|
19
|
-
bytes memory data
|
20
|
-
) external;
|
21
|
-
|
22
|
-
function setRiskInfo(RiskId riskId, RiskInfo memory info) external;
|
23
|
-
function updateRiskState(RiskId riskId, StateId state) external;
|
24
|
-
|
25
|
-
function getRiskInfo(RiskId riskId) external view returns (RiskInfo memory info);
|
26
|
-
}
|
@@ -1,62 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {NftId} from "../../../types/NftId.sol";
|
5
|
-
import {RISK} from "../../../types/ObjectType.sol";
|
6
|
-
import {RiskId} from "../../../types/RiskId.sol";
|
7
|
-
import {StateId} from "../../../types/StateId.sol";
|
8
|
-
|
9
|
-
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
10
|
-
import {IRiskModule} from "./IRisk.sol";
|
11
|
-
import {ModuleBase} from "../../base/ModuleBase.sol";
|
12
|
-
|
13
|
-
contract RiskModule is
|
14
|
-
ModuleBase,
|
15
|
-
IRiskModule
|
16
|
-
{
|
17
|
-
function initializeRiskModule(IKeyValueStore keyValueStore) internal {
|
18
|
-
_initialize(keyValueStore);
|
19
|
-
}
|
20
|
-
|
21
|
-
function createRisk(
|
22
|
-
RiskId riskId,
|
23
|
-
NftId productNftId,
|
24
|
-
bytes memory data
|
25
|
-
) external override {
|
26
|
-
RiskInfo memory info = RiskInfo(
|
27
|
-
productNftId,
|
28
|
-
data
|
29
|
-
);
|
30
|
-
|
31
|
-
_create(RISK(), riskId.toKey32(), abi.encode(info));
|
32
|
-
}
|
33
|
-
|
34
|
-
function setRiskInfo(
|
35
|
-
RiskId riskId,
|
36
|
-
RiskInfo memory info
|
37
|
-
)
|
38
|
-
external
|
39
|
-
override
|
40
|
-
{
|
41
|
-
|
42
|
-
}
|
43
|
-
|
44
|
-
function updateRiskState(
|
45
|
-
RiskId riskId,
|
46
|
-
StateId state
|
47
|
-
)
|
48
|
-
external
|
49
|
-
override
|
50
|
-
{
|
51
|
-
|
52
|
-
}
|
53
|
-
|
54
|
-
function getRiskInfo(RiskId riskId)
|
55
|
-
external
|
56
|
-
view
|
57
|
-
override
|
58
|
-
returns (RiskInfo memory info)
|
59
|
-
{
|
60
|
-
|
61
|
-
}
|
62
|
-
}
|
@@ -1,84 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.20;
|
3
|
-
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
|
6
|
-
import {IPoolComponent} from "../../../components/IPoolComponent.sol";
|
7
|
-
import {IProductComponent} from "../../../components/IProductComponent.sol";
|
8
|
-
import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
|
9
|
-
|
10
|
-
import {NftId} from "../../../types/NftId.sol";
|
11
|
-
import {UFixed} from "../../../types/UFixed.sol";
|
12
|
-
import {Fee} from "../../../types/Fee.sol";
|
13
|
-
|
14
|
-
import {TokenHandler} from "./TokenHandler.sol";
|
15
|
-
|
16
|
-
interface ITreasury {
|
17
|
-
// TODO add events
|
18
|
-
// TODO add errors
|
19
|
-
|
20
|
-
// treasury info is linked to product nft id
|
21
|
-
struct TreasuryInfo {
|
22
|
-
NftId poolNftId;
|
23
|
-
NftId distributionNftId;
|
24
|
-
IERC20Metadata token;
|
25
|
-
Fee productFee; // product fee on net premium
|
26
|
-
Fee processingFee; // product fee on payout amounts
|
27
|
-
Fee poolFee; // pool fee on net premium
|
28
|
-
Fee stakingFee; // pool fee on staked capital from investor
|
29
|
-
Fee performanceFee; // pool fee on profits from capital investors
|
30
|
-
Fee distributionFee; // default distribution fee (no referral id)
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
interface ITreasuryModule is ITreasury {
|
35
|
-
|
36
|
-
function registerProductSetup(
|
37
|
-
NftId productNftId,
|
38
|
-
TreasuryInfo memory info
|
39
|
-
) external;
|
40
|
-
|
41
|
-
function setTreasuryInfo(
|
42
|
-
NftId productNftId,
|
43
|
-
TreasuryInfo memory info
|
44
|
-
) external;
|
45
|
-
|
46
|
-
function hasTreasuryInfo(
|
47
|
-
NftId productNftId
|
48
|
-
) external view returns (bool hasInfo);
|
49
|
-
|
50
|
-
function getTreasuryInfo(
|
51
|
-
NftId productNftId
|
52
|
-
) external view returns (TreasuryInfo memory info);
|
53
|
-
|
54
|
-
function getProductNftId(
|
55
|
-
NftId componentNftId
|
56
|
-
) external view returns (NftId productNftId);
|
57
|
-
|
58
|
-
function getTokenHandler(
|
59
|
-
NftId componentNftId
|
60
|
-
) external view returns (TokenHandler tokenHandler);
|
61
|
-
|
62
|
-
function calculateFeeAmount(
|
63
|
-
uint256 amount,
|
64
|
-
Fee memory fee
|
65
|
-
) external pure returns (uint256 feeAmount, uint256 netAmount);
|
66
|
-
|
67
|
-
function getFee(
|
68
|
-
UFixed fractionalFee,
|
69
|
-
uint256 fixedFee
|
70
|
-
) external pure returns (Fee memory fee);
|
71
|
-
|
72
|
-
function getZeroFee() external view returns (Fee memory fee);
|
73
|
-
|
74
|
-
function getUFixed(
|
75
|
-
uint256 a
|
76
|
-
) external pure returns (UFixed);
|
77
|
-
|
78
|
-
function getUFixed(
|
79
|
-
uint256 a,
|
80
|
-
int8 exp
|
81
|
-
) external pure returns (UFixed);
|
82
|
-
|
83
|
-
function getComponentOwnerService() external view returns(IComponentOwnerService);
|
84
|
-
}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.20;
|
3
|
-
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
|
-
import {NftId} from "../../../types/NftId.sol";
|
7
|
-
|
8
|
-
contract TokenHandler {
|
9
|
-
NftId private _productNftId;
|
10
|
-
IERC20Metadata private _token;
|
11
|
-
|
12
|
-
constructor(
|
13
|
-
NftId productNftId,
|
14
|
-
address token
|
15
|
-
)
|
16
|
-
{
|
17
|
-
_productNftId = productNftId;
|
18
|
-
_token = IERC20Metadata(token);
|
19
|
-
}
|
20
|
-
|
21
|
-
// TODO add logging
|
22
|
-
function transfer(
|
23
|
-
address from,
|
24
|
-
address to,
|
25
|
-
uint256 amount
|
26
|
-
)
|
27
|
-
external // TODO add authz (only treasury/instance/product/pool/ service)
|
28
|
-
{
|
29
|
-
// TODO switch to oz safeTransferFrom
|
30
|
-
_token.transferFrom(from, to, amount);
|
31
|
-
}
|
32
|
-
|
33
|
-
function getProductNftId()
|
34
|
-
external
|
35
|
-
view
|
36
|
-
returns(NftId)
|
37
|
-
{
|
38
|
-
return _productNftId;
|
39
|
-
}
|
40
|
-
|
41
|
-
function getToken()
|
42
|
-
external
|
43
|
-
view
|
44
|
-
returns(IERC20Metadata)
|
45
|
-
{
|
46
|
-
return _token;
|
47
|
-
}
|
48
|
-
}
|
@@ -1,131 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.20;
|
3
|
-
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
|
6
|
-
import {IPoolComponent} from "../../../components/IPoolComponent.sol";
|
7
|
-
import {IProductComponent} from "../../../components/IProductComponent.sol";
|
8
|
-
|
9
|
-
import {NftId} from "../../../types/NftId.sol";
|
10
|
-
import {TREASURY} from "../../../types/ObjectType.sol";
|
11
|
-
import {Fee, FeeLib} from "../../../types/Fee.sol";
|
12
|
-
import {UFixed, UFixedLib} from "../../../types/UFixed.sol";
|
13
|
-
import {TokenHandler} from "./TokenHandler.sol";
|
14
|
-
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
15
|
-
import {ITreasuryModule} from "./ITreasury.sol";
|
16
|
-
import {ModuleBase} from "../../base/ModuleBase.sol";
|
17
|
-
|
18
|
-
abstract contract TreasuryModule is
|
19
|
-
ModuleBase,
|
20
|
-
ITreasuryModule
|
21
|
-
{
|
22
|
-
// relation of distributor and pool nft map to product nft
|
23
|
-
mapping(NftId componentNftId => NftId productNftId) internal _productNft;
|
24
|
-
// relation of component nft to token hanlder
|
25
|
-
mapping(NftId componentNftId => TokenHandler tokenHandler) internal _tokenHandler;
|
26
|
-
Fee internal _zeroFee;
|
27
|
-
|
28
|
-
modifier onlyComponentOwnerService() virtual {
|
29
|
-
require(
|
30
|
-
msg.sender == address(this.getComponentOwnerService()),
|
31
|
-
"ERROR:CMP-001:NOT_COPONENT_OWNER_SERVICE"
|
32
|
-
);
|
33
|
-
_;
|
34
|
-
}
|
35
|
-
|
36
|
-
function _initializeTreasuryModule(IKeyValueStore keyValueStore) internal {
|
37
|
-
//_initializeModuleBase(keyValueStore);
|
38
|
-
_initialize(keyValueStore);
|
39
|
-
_zeroFee = FeeLib.zeroFee();
|
40
|
-
}
|
41
|
-
|
42
|
-
function registerProductSetup(
|
43
|
-
NftId productNftId,
|
44
|
-
TreasuryInfo memory setup
|
45
|
-
)
|
46
|
-
external
|
47
|
-
onlyComponentOwnerService
|
48
|
-
{
|
49
|
-
NftId poolNftId = setup.poolNftId;
|
50
|
-
NftId distributionNftId = setup.distributionNftId;
|
51
|
-
|
52
|
-
require(address(_tokenHandler[productNftId]) == address(0), "ERROR:TRS-012:TOKEN_HANDLER_ALREADY_REGISTERED");
|
53
|
-
require(_productNft[poolNftId].eqz(), "ERROR:TRS-013:POOL_ALREADY_LINKED");
|
54
|
-
require(_productNft[distributionNftId].eqz(), "ERROR:TRS-014:COMPENSATION_ALREADY_LINKED");
|
55
|
-
|
56
|
-
// TODO deploy TokenHandler with separate contract to save space
|
57
|
-
// deploy product specific handler contract
|
58
|
-
_tokenHandler[productNftId] = new TokenHandler(productNftId, address(setup.token));
|
59
|
-
_productNft[distributionNftId] = productNftId;
|
60
|
-
_productNft[poolNftId] = productNftId;
|
61
|
-
|
62
|
-
_create(TREASURY(), productNftId, abi.encode(setup));
|
63
|
-
}
|
64
|
-
|
65
|
-
function setTreasuryInfo(
|
66
|
-
NftId productNftId,
|
67
|
-
TreasuryInfo memory info
|
68
|
-
)
|
69
|
-
external
|
70
|
-
// TODO add authz (only component module)
|
71
|
-
override
|
72
|
-
{
|
73
|
-
_updateData(TREASURY(), productNftId, abi.encode(info));
|
74
|
-
}
|
75
|
-
|
76
|
-
function getProductNftId(
|
77
|
-
NftId componentNftId
|
78
|
-
) external view returns (NftId productNftId) {
|
79
|
-
return _productNft[componentNftId];
|
80
|
-
}
|
81
|
-
|
82
|
-
function getTokenHandler(
|
83
|
-
NftId componentNftId
|
84
|
-
) external view override returns (TokenHandler tokenHandler) {
|
85
|
-
return _tokenHandler[componentNftId];
|
86
|
-
}
|
87
|
-
|
88
|
-
function hasTreasuryInfo(
|
89
|
-
NftId productNftId
|
90
|
-
) public view override returns (bool hasInfo) {
|
91
|
-
return _exists(TREASURY(), productNftId);
|
92
|
-
}
|
93
|
-
|
94
|
-
function getTreasuryInfo(
|
95
|
-
NftId productNftId
|
96
|
-
) public view override returns (TreasuryInfo memory info) {
|
97
|
-
return abi.decode(_getData(TREASURY(), productNftId), (TreasuryInfo));
|
98
|
-
}
|
99
|
-
|
100
|
-
function calculateFeeAmount(
|
101
|
-
uint256 amount,
|
102
|
-
Fee memory fee
|
103
|
-
) public pure override returns (uint256 feeAmount, uint256 netAmount) {
|
104
|
-
return FeeLib.calculateFee(fee, amount);
|
105
|
-
}
|
106
|
-
|
107
|
-
function getFee(
|
108
|
-
UFixed fractionalFee,
|
109
|
-
uint256 fixedFee
|
110
|
-
) external pure override returns (Fee memory fee) {
|
111
|
-
return FeeLib.toFee(fractionalFee, fixedFee);
|
112
|
-
}
|
113
|
-
|
114
|
-
function getZeroFee() external view override returns (Fee memory fee) {
|
115
|
-
return _zeroFee;
|
116
|
-
}
|
117
|
-
|
118
|
-
function getUFixed(
|
119
|
-
uint256 a
|
120
|
-
) external pure override returns (UFixed) {
|
121
|
-
return UFixedLib.toUFixed(a);
|
122
|
-
}
|
123
|
-
|
124
|
-
function getUFixed(
|
125
|
-
uint256 a,
|
126
|
-
int8 exp
|
127
|
-
) external pure returns (UFixed)
|
128
|
-
{
|
129
|
-
return UFixedLib.toUFixed(a, exp);
|
130
|
-
}
|
131
|
-
}
|
@@ -1,149 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
-
import {IInstance} from "../../instance/IInstance.sol";
|
6
|
-
import {IBundle} from "../../instance/module/bundle/IBundle.sol";
|
7
|
-
import {ITreasury, ITreasuryModule, TokenHandler} from "../../instance/module/treasury/ITreasury.sol";
|
8
|
-
|
9
|
-
import {IVersionable} from "../../shared/IVersionable.sol";
|
10
|
-
import {Versionable} from "../../shared/Versionable.sol";
|
11
|
-
|
12
|
-
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
13
|
-
import {POOL, BUNDLE} from "../../types/ObjectType.sol";
|
14
|
-
import {Fee} from "../../types/Fee.sol";
|
15
|
-
import {Version, VersionLib} from "../../types/Version.sol";
|
16
|
-
|
17
|
-
import {IService} from "../base/IService.sol";
|
18
|
-
import {ServiceBase} from "../base/ServiceBase.sol";
|
19
|
-
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
20
|
-
import {IPoolService} from "./IPoolService.sol";
|
21
|
-
|
22
|
-
|
23
|
-
contract PoolService is ComponentServiceBase, IPoolService {
|
24
|
-
using NftIdLib for NftId;
|
25
|
-
|
26
|
-
string public constant NAME = "PoolService";
|
27
|
-
|
28
|
-
constructor(
|
29
|
-
address registry,
|
30
|
-
NftId registryNftId,
|
31
|
-
address initialOwner
|
32
|
-
) ComponentServiceBase(registry, registryNftId, initialOwner)
|
33
|
-
{
|
34
|
-
_registerInterface(type(IPoolService).interfaceId);
|
35
|
-
}
|
36
|
-
|
37
|
-
function getName() public pure override(IService, ServiceBase) returns(string memory name) {
|
38
|
-
return NAME;
|
39
|
-
}
|
40
|
-
|
41
|
-
function setFees(
|
42
|
-
Fee memory poolFee,
|
43
|
-
Fee memory stakingFee,
|
44
|
-
Fee memory performanceFee
|
45
|
-
)
|
46
|
-
external
|
47
|
-
override
|
48
|
-
{
|
49
|
-
(IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
50
|
-
|
51
|
-
NftId productNftId = instance.getProductNftId(poolInfo.nftId);
|
52
|
-
ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productNftId);
|
53
|
-
treasuryInfo.poolFee = poolFee;
|
54
|
-
treasuryInfo.stakingFee = stakingFee;
|
55
|
-
treasuryInfo.performanceFee = performanceFee;
|
56
|
-
instance.setTreasuryInfo(productNftId, treasuryInfo);
|
57
|
-
}
|
58
|
-
|
59
|
-
function createBundle(
|
60
|
-
address owner,
|
61
|
-
Fee memory fee,
|
62
|
-
uint256 stakingAmount,
|
63
|
-
uint256 lifetime,
|
64
|
-
bytes calldata filter
|
65
|
-
)
|
66
|
-
external
|
67
|
-
override
|
68
|
-
returns(NftId bundleNftId)
|
69
|
-
{
|
70
|
-
(IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
71
|
-
|
72
|
-
// register bundle with registry
|
73
|
-
NftId poolNftId = info.nftId;
|
74
|
-
bundleNftId = getRegistryService().registerBundle(
|
75
|
-
IRegistry.ObjectInfo(
|
76
|
-
zeroNftId(),
|
77
|
-
poolNftId,
|
78
|
-
BUNDLE(),
|
79
|
-
false, // intercepting property for bundles is defined on pool
|
80
|
-
address(0),
|
81
|
-
owner,
|
82
|
-
""
|
83
|
-
)
|
84
|
-
);
|
85
|
-
|
86
|
-
// create bundle info in instance
|
87
|
-
instance.createBundleInfo(
|
88
|
-
bundleNftId,
|
89
|
-
poolNftId,
|
90
|
-
fee,
|
91
|
-
stakingAmount,
|
92
|
-
lifetime,
|
93
|
-
filter);
|
94
|
-
|
95
|
-
// add bundle to pool in instance
|
96
|
-
instance.addBundleToPool(
|
97
|
-
bundleNftId,
|
98
|
-
poolNftId,
|
99
|
-
stakingAmount);
|
100
|
-
|
101
|
-
// collect capital
|
102
|
-
_processStakingByTreasury(
|
103
|
-
instance,
|
104
|
-
poolNftId,
|
105
|
-
bundleNftId,
|
106
|
-
stakingAmount);
|
107
|
-
|
108
|
-
// TODO add logging
|
109
|
-
}
|
110
|
-
|
111
|
-
function setBundleFee(
|
112
|
-
NftId bundleNftId,
|
113
|
-
Fee memory fee
|
114
|
-
)
|
115
|
-
external
|
116
|
-
override
|
117
|
-
{
|
118
|
-
(IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
119
|
-
IBundle.BundleInfo memory bundleInfo = instance.getBundleInfo(bundleNftId);
|
120
|
-
require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
|
121
|
-
require(poolInfo.nftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
|
122
|
-
bundleInfo.fee = fee;
|
123
|
-
instance.setBundleInfo(bundleNftId, bundleInfo);
|
124
|
-
}
|
125
|
-
|
126
|
-
|
127
|
-
function _processStakingByTreasury(
|
128
|
-
IInstance instance,
|
129
|
-
NftId poolNftId,
|
130
|
-
NftId bundleNftId,
|
131
|
-
uint256 stakingAmount
|
132
|
-
)
|
133
|
-
internal
|
134
|
-
{
|
135
|
-
// process token transfer(s)
|
136
|
-
if(stakingAmount > 0) {
|
137
|
-
NftId productNftId = instance.getProductNftId(poolNftId);
|
138
|
-
TokenHandler tokenHandler = instance.getTokenHandler(productNftId);
|
139
|
-
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
140
|
-
address poolWallet = instance.getComponentWallet(poolNftId);
|
141
|
-
|
142
|
-
tokenHandler.transfer(
|
143
|
-
bundleOwner,
|
144
|
-
poolWallet,
|
145
|
-
stakingAmount
|
146
|
-
);
|
147
|
-
}
|
148
|
-
}
|
149
|
-
}
|