@etherisc/gif-next 0.0.2-bc11089-132 → 0.0.2-bca28f1-161
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +73 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +897 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +896 -235
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +137 -86
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +798 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +662 -43
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +661 -5
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +603 -204
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +529 -122
- 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/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- 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/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +706 -56
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -19
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +560 -272
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +103 -176
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +61 -97
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +460 -191
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +187 -85
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/base/ComponentService.sol/ComponentService.json} +321 -9
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- 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 +2 -2
- 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 +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +24 -13
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.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/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1117 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +495 -100
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +172 -26
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +554 -62
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +197 -23
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → service/IApplicationService.sol/IApplicationService.json} +221 -104
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +181 -52
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +229 -19
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +152 -32
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +32 -19
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +32 -19
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +481 -87
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +203 -25
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +301 -62
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +169 -23
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +301 -62
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +169 -15
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +185 -77
- 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 +238 -235
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +243 -129
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +181 -97
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +150 -29
- 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/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +37 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +18 -5
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +69 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +32 -19
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +156 -11
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +269 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +156 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -11
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +105 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +178 -19
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -2
- 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 +152 -11
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +196 -37
- 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/TestVersionable.sol/TestVersionable.json +8 -8
- 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/DistributorType.sol/DistributorTypeLib.json +2 -2
- 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/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- 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/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- 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/Component.sol +236 -0
- package/contracts/components/Distribution.sol +209 -64
- package/contracts/components/IComponent.sol +50 -0
- package/contracts/components/IDistributionComponent.sol +59 -3
- package/contracts/components/IPoolComponent.sol +50 -29
- package/contracts/components/IProductComponent.sol +7 -3
- package/contracts/components/Pool.sol +135 -152
- package/contracts/components/Product.sol +103 -117
- package/contracts/instance/BundleManager.sol +7 -11
- package/contracts/instance/IInstance.sol +35 -11
- package/contracts/instance/IInstanceService.sol +23 -2
- package/contracts/instance/Instance.sol +67 -62
- package/contracts/instance/InstanceAccessManager.sol +31 -38
- package/contracts/instance/InstanceReader.sol +3 -25
- package/contracts/instance/InstanceService.sol +198 -56
- package/contracts/instance/InstanceServiceManager.sol +5 -8
- package/contracts/instance/ObjectManager.sol +7 -24
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/module/IAccess.sol +4 -5
- package/contracts/instance/module/ISetup.sol +5 -4
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/BundleService.sol +52 -14
- package/contracts/instance/service/BundleServiceManager.sol +5 -8
- package/contracts/instance/service/DistributionService.sol +208 -49
- package/contracts/instance/service/DistributionServiceManager.sol +6 -9
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +12 -3
- package/contracts/instance/service/IDistributionService.sol +53 -0
- package/contracts/instance/service/IPolicyService.sol +17 -16
- package/contracts/instance/service/PolicyService.sol +148 -132
- package/contracts/instance/service/PoolService.sol +27 -42
- package/contracts/instance/service/PoolServiceManager.sol +5 -8
- package/contracts/instance/service/ProductService.sol +100 -40
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +37 -19
- package/contracts/registry/IRegistryService.sol +30 -13
- package/contracts/registry/Registry.sol +233 -217
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +81 -162
- package/contracts/registry/RegistryServiceManager.sol +18 -36
- package/contracts/registry/ReleaseManager.sol +331 -0
- package/contracts/registry/TokenRegistry.sol +11 -9
- package/contracts/shared/ERC165.sol +12 -11
- package/contracts/shared/INftOwnable.sol +12 -6
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +15 -0
- package/contracts/shared/IService.sol +2 -1
- package/contracts/shared/IVersionable.sol +2 -2
- package/contracts/shared/NftOwnable.sol +113 -57
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +6 -5
- package/contracts/shared/Registerable.sol +15 -24
- package/contracts/shared/RegistryLinked.sol +64 -0
- package/contracts/shared/Service.sol +18 -13
- package/contracts/shared/Versionable.sol +3 -2
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +4 -3
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/ObjectType.sol +6 -2
- package/contracts/types/RoleId.sol +4 -5
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -384
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -148
- package/contracts/components/IBaseComponent.sol +0 -32
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -2,16 +2,62 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {Fee} from "../types/Fee.sol";
|
5
|
-
import {
|
6
|
-
import {NftId} from "../types/NftId.sol";
|
5
|
+
import {IComponent} from "./IComponent.sol";
|
7
6
|
import {ISetup} from "../instance/module/ISetup.sol";
|
7
|
+
import {ReferralId, ReferralStatus} from "../types/Referral.sol";
|
8
|
+
import {NftId} from "../types/NftId.sol";
|
9
|
+
import {DistributorType} from "../types/DistributorType.sol";
|
10
|
+
import {UFixed} from "../types/UFixed.sol";
|
11
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
12
|
+
|
13
|
+
interface IDistributionComponent is IComponent {
|
8
14
|
|
9
|
-
|
15
|
+
event LogDistributorUpdated(address to, address caller);
|
16
|
+
|
17
|
+
function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
|
10
18
|
|
11
19
|
function setFees(
|
12
20
|
Fee memory distributionFee
|
13
21
|
) external;
|
14
22
|
|
23
|
+
function createDistributorType(
|
24
|
+
string memory name,
|
25
|
+
UFixed minDiscountPercentage,
|
26
|
+
UFixed maxDiscountPercentage,
|
27
|
+
UFixed commissionPercentage,
|
28
|
+
uint32 maxReferralCount,
|
29
|
+
uint32 maxReferralLifetime,
|
30
|
+
bool allowSelfReferrals,
|
31
|
+
bool allowRenewals,
|
32
|
+
bytes memory data
|
33
|
+
) external returns (DistributorType distributorType);
|
34
|
+
|
35
|
+
function createDistributor(
|
36
|
+
address distributor,
|
37
|
+
DistributorType distributorType,
|
38
|
+
bytes memory data
|
39
|
+
) external returns(NftId distributorNftId);
|
40
|
+
|
41
|
+
function updateDistributorType(
|
42
|
+
NftId distributorNftId,
|
43
|
+
DistributorType distributorType,
|
44
|
+
bytes memory data
|
45
|
+
) external;
|
46
|
+
|
47
|
+
/**
|
48
|
+
* @dev lets distributors create referral codes.
|
49
|
+
* referral codes need to be unique
|
50
|
+
* distributor is identified via msg.sender.
|
51
|
+
*/
|
52
|
+
function createReferral(
|
53
|
+
NftId distributorNftId,
|
54
|
+
string memory code,
|
55
|
+
UFixed discountPercentage,
|
56
|
+
uint32 maxReferrals,
|
57
|
+
Timestamp expiryAt,
|
58
|
+
bytes memory data
|
59
|
+
) external returns (ReferralId referralId);
|
60
|
+
|
15
61
|
function calculateFeeAmount(
|
16
62
|
ReferralId referralId,
|
17
63
|
uint256 netPremiumAmount
|
@@ -36,6 +82,16 @@ interface IDistributionComponent {
|
|
36
82
|
uint256 feeAmount
|
37
83
|
) external;
|
38
84
|
|
85
|
+
function getDiscountPercentage(
|
86
|
+
string memory referralCode
|
87
|
+
) external view returns (UFixed discountPercentage, ReferralStatus status);
|
88
|
+
|
89
|
+
function getDistributionFee() external view returns (Fee memory distibutionFee);
|
90
|
+
|
91
|
+
function getReferralId(
|
92
|
+
string memory referralCode
|
93
|
+
) external returns (ReferralId referralId);
|
94
|
+
|
39
95
|
/// @dev returns true iff the referral id is valid
|
40
96
|
function referralIsValid(ReferralId referralId) external view returns (bool isValid);
|
41
97
|
|
@@ -1,43 +1,41 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {NftId} from "../types/NftId.sol";
|
5
4
|
import {Fee} from "../types/Fee.sol";
|
5
|
+
import {IComponent} from "./IComponent.sol";
|
6
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
7
|
+
import {NftId} from "../types/NftId.sol";
|
6
8
|
import {UFixed} from "../types/UFixed.sol";
|
7
9
|
|
8
|
-
|
10
|
+
/// @dev pool components hold and manage the collateral to cover active policies
|
11
|
+
/// pools come in different flavors
|
12
|
+
interface IPoolComponent is IComponent {
|
9
13
|
|
10
14
|
event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
|
11
15
|
|
16
|
+
error ErrorPoolNotPoolService(address service);
|
17
|
+
|
18
|
+
function getSetupInfo() external view returns (ISetup.PoolSetupInfo memory setupInfo);
|
19
|
+
|
12
20
|
function setFees(
|
13
21
|
Fee memory poolFee,
|
14
22
|
Fee memory stakingFee,
|
15
23
|
Fee memory performanceFee
|
16
24
|
) external;
|
17
25
|
|
18
|
-
|
19
|
-
|
20
|
-
*/
|
21
|
-
function createBundle(
|
22
|
-
Fee memory fee,
|
23
|
-
uint256 initialAmount,
|
24
|
-
uint256 lifetime,
|
25
|
-
bytes memory filter
|
26
|
-
) external returns(NftId bundleNftId);
|
27
|
-
|
26
|
+
/// @dev sets an additional bundle fee, this fee is added on top of the poolFee and deducted from the premium amounts.
|
27
|
+
/// via these fees individual bundler owner may earn income per policy in the context of peer to peer pools
|
28
28
|
function setBundleFee(
|
29
|
-
NftId
|
29
|
+
NftId bundleNftId,
|
30
30
|
Fee memory fee
|
31
31
|
) external;
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
function underwrite(
|
40
|
-
NftId policyNftId,
|
33
|
+
/// @dev this is a callback function that is called by the product service when underwriting a policy.
|
34
|
+
/// the pool has the option to check the details and object to underwriting by reverting.
|
35
|
+
/// the function is only called for "active" pools that ask to be involved/notified
|
36
|
+
/// by product related state changes.
|
37
|
+
function verifyApplication(
|
38
|
+
NftId applicationNftId,
|
41
39
|
bytes memory policyData,
|
42
40
|
bytes memory bundleFilter,
|
43
41
|
uint256 collateralizationAmount
|
@@ -47,10 +45,37 @@ interface IPoolComponent {
|
|
47
45
|
|
48
46
|
function unlockBundle(NftId bundleNftId) external;
|
49
47
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
48
|
+
/// @dev defines the multiplier to calculate the required collateral to cover a given sum insured amount
|
49
|
+
/// default implementation returns 100%
|
50
|
+
function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
|
51
|
+
|
52
|
+
/// @dev defines the amount of collateral held in the pool.
|
53
|
+
/// if the value is < 100% the pool is required to hold a policy that covers the locally missing collateral
|
54
|
+
/// default implementation returns 100%
|
55
|
+
function getRetentionLevel() external view returns (UFixed retentionLevel);
|
56
|
+
|
57
|
+
/// @dev declares if pool intercept transfers of bundle nft ids
|
58
|
+
/// - yes: pool may block transfer of bundle ownership or simply updates some bookkeeping related to bundle ownership. callback function is nftTransferFrom
|
59
|
+
/// - no: pool is not involved in transfer of bundle ownership
|
60
|
+
/// default implementation returns false (no)
|
61
|
+
function isInterceptingBundleTransfers() external view returns (bool);
|
62
|
+
|
63
|
+
/// @dev declares if pool relies on external management of collateral (yes/no):
|
64
|
+
/// - yes: underwriting of new policies does not require an actual token balance, instead it is assumed that the pool owner will manage funds externally and inject enough tokens to allow process confirmed payouts
|
65
|
+
/// - no: the pool smart contract ensures that the necessary capacity of the pool prior to underwriting.
|
66
|
+
/// default implementation returns false (no)
|
67
|
+
function isExternallyManaged() external view returns (bool);
|
68
|
+
|
69
|
+
/// @dev declares if pool component is actively involved in underwriting (yes/no):
|
70
|
+
/// - yes: verifying pools components actively confirm underwriting applications, ie the pool component logic explicitly needs to confirm the locking of collateral to cover the sum insured of the policy
|
71
|
+
/// - no: underwriting a policy does not require any interaction with the pool component if the covering bundle can provide the necessary captial
|
72
|
+
/// default implementation returnsfalse (no)
|
73
|
+
function isVerifyingApplications() external view returns (bool);
|
74
|
+
|
75
|
+
/// @dev returns true iff the policy application data in policyData matches
|
76
|
+
/// with the bundle filter criteria encoded in bundleFilter
|
77
|
+
/// this is a callback function that is only called if a pool declares itself as a verifying pool
|
78
|
+
/// default implementation returns true
|
54
79
|
function policyMatchesBundle(
|
55
80
|
bytes memory policyData,
|
56
81
|
bytes memory bundleFilter
|
@@ -59,8 +84,4 @@ interface IPoolComponent {
|
|
59
84
|
view
|
60
85
|
returns (bool isMatching);
|
61
86
|
|
62
|
-
function isConfirmingApplication() external view returns (bool isConfirmingApplication);
|
63
|
-
|
64
|
-
function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
|
65
|
-
|
66
87
|
}
|
@@ -2,11 +2,15 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Fee} from "../types/Fee.sol";
|
5
|
+
import {IComponent} from "./IComponent.sol";
|
6
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
5
7
|
import {NftId} from "../types/NftId.sol";
|
6
8
|
import {ReferralId} from "../types/Referral.sol";
|
7
9
|
import {RiskId} from "../types/RiskId.sol";
|
8
10
|
|
9
|
-
interface IProductComponent {
|
11
|
+
interface IProductComponent is IComponent {
|
12
|
+
|
13
|
+
function getSetupInfo() external view returns (ISetup.ProductSetupInfo memory setupInfo);
|
10
14
|
|
11
15
|
function setFees(
|
12
16
|
Fee memory productFee,
|
@@ -18,8 +22,8 @@ interface IProductComponent {
|
|
18
22
|
RiskId riskId,
|
19
23
|
uint256 lifetime,
|
20
24
|
bytes memory applicationData,
|
21
|
-
|
22
|
-
|
25
|
+
NftId bundleNftId,
|
26
|
+
ReferralId referralId
|
23
27
|
) external view returns (uint256 premiumAmount);
|
24
28
|
|
25
29
|
function calculateNetPremium(
|
@@ -1,142 +1,147 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {IProductService} from "../instance/service/IProductService.sol";
|
4
|
+
import {POOL} from "../types/ObjectType.sol";
|
6
5
|
import {IPoolService} from "../instance/service/IPoolService.sol";
|
7
6
|
import {IBundleService} from "../instance/service/IBundleService.sol";
|
8
|
-
import {NftId,
|
9
|
-
import {Fee} from "../types/Fee.sol";
|
7
|
+
import {NftId, NftIdLib} from "../types/NftId.sol";
|
8
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
10
9
|
import {UFixed} from "../types/UFixed.sol";
|
11
10
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
12
|
-
import {
|
11
|
+
import {Component} from "./Component.sol";
|
13
12
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
14
13
|
import {ISetup} from "../instance/module/ISetup.sol";
|
15
14
|
|
16
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
17
|
-
|
18
|
-
// import {IPool} from "../instance/module/pool/IPoolModule.sol";
|
19
|
-
import {ITreasury} from "../instance/module/ITreasury.sol";
|
20
15
|
import {ISetup} from "../instance/module/ISetup.sol";
|
21
16
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
22
17
|
|
23
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
24
|
-
import {Registerable} from "../shared/Registerable.sol";
|
25
|
-
|
26
|
-
contract Pool is BaseComponent, IPoolComponent {
|
27
|
-
using NftIdLib for NftId;
|
28
18
|
|
29
|
-
|
30
|
-
|
19
|
+
abstract contract Pool is
|
20
|
+
Component,
|
21
|
+
IPoolComponent
|
22
|
+
{
|
23
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.Pool")) - 1)) & ~bytes32(uint256(0xff));
|
24
|
+
bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
|
31
25
|
|
32
|
-
|
33
|
-
|
34
|
-
|
26
|
+
struct PoolStorage {
|
27
|
+
UFixed _collateralizationLevel;
|
28
|
+
UFixed _retentionLevel;
|
35
29
|
|
36
|
-
|
30
|
+
bool _isExternallyManaged;
|
31
|
+
bool _isInterceptingBundleTransfers;
|
32
|
+
bool _isVerifyingApplications;
|
37
33
|
|
38
|
-
|
39
|
-
|
34
|
+
Fee _initialPoolFee;
|
35
|
+
Fee _initialStakingFee;
|
36
|
+
Fee _initialPerformanceFee;
|
40
37
|
|
41
|
-
|
42
|
-
IProductService private _productService;
|
38
|
+
TokenHandler _tokenHandler;
|
43
39
|
|
44
|
-
|
40
|
+
// may be used to interact with instance by derived contracts
|
41
|
+
IPoolService _poolService;
|
42
|
+
IBundleService _bundleService;
|
43
|
+
}
|
45
44
|
|
46
45
|
modifier onlyPoolService() {
|
47
|
-
|
48
|
-
msg.sender
|
49
|
-
|
46
|
+
if(msg.sender != address(_getPoolStorage()._poolService)) {
|
47
|
+
revert ErrorPoolNotPoolService(msg.sender);
|
48
|
+
}
|
50
49
|
_;
|
51
50
|
}
|
52
51
|
|
53
|
-
modifier onlyProductService() {
|
54
|
-
require(
|
55
|
-
msg.sender == address(_productService),
|
56
|
-
"ERROR:POL-002:NOT_PRODUCT_SERVICE");
|
57
|
-
_;
|
58
|
-
}
|
59
52
|
|
60
|
-
|
53
|
+
function initializePool(
|
61
54
|
address registry,
|
62
55
|
NftId instanceNftId,
|
56
|
+
string memory name,
|
63
57
|
// TODO refactor into tokenNftId
|
64
58
|
address token,
|
65
|
-
bool
|
66
|
-
bool
|
59
|
+
bool isInterceptingNftTransfers,
|
60
|
+
bool isExternallyManaging,
|
61
|
+
bool isVerifying,
|
67
62
|
UFixed collateralizationLevel,
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
address initialOwner
|
63
|
+
UFixed retentionLevel,
|
64
|
+
address initialOwner,
|
65
|
+
bytes memory data
|
72
66
|
)
|
73
|
-
|
67
|
+
public
|
68
|
+
virtual
|
69
|
+
onlyInitializing()
|
74
70
|
{
|
75
|
-
|
76
|
-
// TODO add validation
|
77
|
-
_collateralizationLevel = collateralizationLevel;
|
78
|
-
_initialPoolFee = poolFee;
|
79
|
-
_initialStakingFee = stakingFee;
|
80
|
-
_initialPerformanceFee = performanceFee;
|
81
|
-
|
82
|
-
_tokenHandler = new TokenHandler(token);
|
83
|
-
|
84
|
-
_poolService = _instance.getPoolService();
|
85
|
-
_productService = _instance.getProductService();
|
86
|
-
_bundleService = _instance.getBundleService();
|
87
|
-
|
88
|
-
_registerInterface(type(IPoolComponent).interfaceId);
|
89
|
-
}
|
71
|
+
initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, data);
|
90
72
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
owner,
|
104
|
-
fee,
|
105
|
-
initialAmount,
|
106
|
-
lifetime,
|
107
|
-
filter
|
108
|
-
);
|
73
|
+
PoolStorage storage $ = _getPoolStorage();
|
74
|
+
// TODO add validation
|
75
|
+
$._tokenHandler = new TokenHandler(token);
|
76
|
+
$._isExternallyManaged = isExternallyManaging;
|
77
|
+
$._isVerifyingApplications = isVerifying;
|
78
|
+
$._collateralizationLevel = collateralizationLevel;
|
79
|
+
$._retentionLevel = retentionLevel;
|
80
|
+
$._initialPoolFee = FeeLib.zeroFee();
|
81
|
+
$._initialStakingFee = FeeLib.zeroFee();
|
82
|
+
$._initialPerformanceFee = FeeLib.zeroFee();
|
83
|
+
$._poolService = getInstance().getPoolService();
|
84
|
+
$._bundleService = getInstance().getBundleService();
|
109
85
|
|
110
|
-
|
86
|
+
registerInterface(type(IPoolComponent).interfaceId);
|
111
87
|
}
|
112
88
|
|
113
89
|
/**
|
114
|
-
* @dev see {IPool.
|
90
|
+
* @dev see {IPool.verifyApplication}.
|
115
91
|
* Default implementation that only writes a {LogUnderwrittenByPool} entry.
|
116
92
|
*/
|
117
|
-
function
|
118
|
-
NftId
|
119
|
-
bytes memory
|
93
|
+
function verifyApplication(
|
94
|
+
NftId applicationNftId,
|
95
|
+
bytes memory applicationData,
|
120
96
|
bytes memory bundleFilter,
|
121
97
|
uint256 collateralizationAmount
|
122
98
|
)
|
123
99
|
external
|
124
|
-
|
100
|
+
restricted()
|
125
101
|
virtual override
|
126
102
|
{
|
127
|
-
|
103
|
+
require(
|
104
|
+
policyMatchesBundle(applicationData, bundleFilter),
|
105
|
+
"ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
|
106
|
+
);
|
107
|
+
|
108
|
+
emit LogUnderwrittenByPool(applicationNftId, collateralizationAmount, address(this));
|
128
109
|
}
|
129
110
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
111
|
+
|
112
|
+
function isInterceptingBundleTransfers() external view override returns (bool) {
|
113
|
+
return isNftInterceptor();
|
114
|
+
}
|
115
|
+
|
116
|
+
|
117
|
+
function isExternallyManaged() external view override returns (bool) {
|
118
|
+
return _getPoolStorage()._isExternallyManaged;
|
119
|
+
}
|
120
|
+
|
121
|
+
|
122
|
+
function getRetentionLevel() external view override returns (UFixed retentionLevel) {
|
123
|
+
return _getPoolStorage()._retentionLevel;
|
124
|
+
}
|
125
|
+
|
126
|
+
|
127
|
+
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
128
|
+
return _getPoolStorage()._collateralizationLevel;
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
function isVerifyingApplications() external view override returns (bool isConfirmingApplication) {
|
133
|
+
return _getPoolStorage()._isVerifyingApplications;
|
134
|
+
}
|
135
|
+
|
136
|
+
|
137
|
+
/// @dev see {IPoolComponent.policyMatchesBundle}.
|
138
|
+
/// Default implementation always returns true
|
134
139
|
function policyMatchesBundle(
|
135
140
|
bytes memory, // policyData
|
136
141
|
bytes memory // bundleFilter
|
137
142
|
)
|
138
143
|
public
|
139
|
-
|
144
|
+
pure
|
140
145
|
virtual override
|
141
146
|
returns (bool isMatching)
|
142
147
|
{
|
@@ -144,14 +149,6 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
144
149
|
}
|
145
150
|
|
146
151
|
|
147
|
-
function isConfirmingApplication() external view override returns (bool isConfirmingApplication) {
|
148
|
-
return _isConfirmingApplication;
|
149
|
-
}
|
150
|
-
|
151
|
-
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
152
|
-
return _collateralizationLevel;
|
153
|
-
}
|
154
|
-
|
155
152
|
function setFees(
|
156
153
|
Fee memory poolFee,
|
157
154
|
Fee memory stakingFee,
|
@@ -159,9 +156,10 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
159
156
|
)
|
160
157
|
external
|
161
158
|
onlyOwner
|
159
|
+
restricted()
|
162
160
|
override
|
163
161
|
{
|
164
|
-
_poolService.setFees(poolFee, stakingFee, performanceFee);
|
162
|
+
_getPoolStorage()._poolService.setFees(poolFee, stakingFee, performanceFee);
|
165
163
|
}
|
166
164
|
|
167
165
|
function setBundleFee(
|
@@ -172,7 +170,7 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
172
170
|
override
|
173
171
|
// TODO add onlyBundleOwner
|
174
172
|
{
|
175
|
-
_bundleService.setBundleFee(bundleNftId, fee);
|
173
|
+
_getPoolStorage()._bundleService.setBundleFee(bundleNftId, fee);
|
176
174
|
}
|
177
175
|
|
178
176
|
function lockBundle(
|
@@ -182,7 +180,7 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
182
180
|
override
|
183
181
|
// TODO add onlyBundleOwner
|
184
182
|
{
|
185
|
-
_bundleService.lockBundle(bundleNftId);
|
183
|
+
_getPoolStorage()._bundleService.lockBundle(bundleNftId);
|
186
184
|
}
|
187
185
|
|
188
186
|
function unlockBundle(
|
@@ -192,80 +190,65 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
192
190
|
override
|
193
191
|
// TODO add onlyBundleOwner
|
194
192
|
{
|
195
|
-
_bundleService.unlockBundle(bundleNftId);
|
193
|
+
_getPoolStorage()._bundleService.unlockBundle(bundleNftId);
|
196
194
|
}
|
197
195
|
|
198
196
|
function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
|
199
|
-
InstanceReader reader =
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
_tokenHandler,
|
223
|
-
_collateralizationLevel,
|
224
|
-
_initialPoolFee,
|
225
|
-
_initialStakingFee,
|
226
|
-
_initialPerformanceFee,
|
227
|
-
false,
|
228
|
-
_isConfirmingApplication,
|
229
|
-
_wallet
|
230
|
-
)
|
231
|
-
)
|
197
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
198
|
+
setupInfo = reader.getPoolSetupInfo(getNftId());
|
199
|
+
|
200
|
+
// fallback to initial setup info (wallet is always != address(0))
|
201
|
+
if(setupInfo.wallet == address(0)) {
|
202
|
+
setupInfo = _getInitialSetupInfo();
|
203
|
+
}
|
204
|
+
}
|
205
|
+
|
206
|
+
function _getInitialSetupInfo() internal view returns (ISetup.PoolSetupInfo memory) {
|
207
|
+
PoolStorage storage $ = _getPoolStorage();
|
208
|
+
return ISetup.PoolSetupInfo(
|
209
|
+
getProductNftId(),
|
210
|
+
$._tokenHandler,
|
211
|
+
isNftInterceptor(),
|
212
|
+
$._isExternallyManaged,
|
213
|
+
$._isVerifyingApplications,
|
214
|
+
$._collateralizationLevel,
|
215
|
+
$._retentionLevel,
|
216
|
+
$._initialPoolFee,
|
217
|
+
$._initialStakingFee,
|
218
|
+
$._initialPerformanceFee,
|
219
|
+
getWallet()
|
232
220
|
);
|
233
221
|
}
|
234
222
|
|
235
223
|
// Internals
|
236
224
|
|
237
|
-
function _underwrite(
|
238
|
-
NftId policyNftId,
|
239
|
-
bytes memory policyData,
|
240
|
-
bytes memory bundleFilter,
|
241
|
-
uint256 collateralizationAmount
|
242
|
-
)
|
243
|
-
internal
|
244
|
-
{
|
245
|
-
require(
|
246
|
-
policyMatchesBundle(policyData, bundleFilter),
|
247
|
-
"ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
|
248
|
-
);
|
249
|
-
|
250
|
-
emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
|
251
|
-
}
|
252
|
-
|
253
225
|
function _createBundle(
|
254
226
|
address bundleOwner,
|
255
227
|
Fee memory fee,
|
256
228
|
uint256 amount,
|
257
229
|
uint256 lifetime,
|
258
|
-
bytes
|
230
|
+
bytes memory filter
|
259
231
|
)
|
260
232
|
internal
|
261
233
|
returns(NftId bundleNftId)
|
262
234
|
{
|
263
|
-
bundleNftId = _bundleService.createBundle(
|
235
|
+
bundleNftId = _getPoolStorage()._bundleService.createBundle(
|
264
236
|
bundleOwner,
|
265
237
|
fee,
|
266
238
|
amount,
|
267
239
|
lifetime,
|
268
|
-
filter
|
269
|
-
|
240
|
+
filter);
|
241
|
+
|
242
|
+
// TODO add logging
|
243
|
+
}
|
244
|
+
|
245
|
+
function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
|
246
|
+
return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
|
247
|
+
}
|
248
|
+
|
249
|
+
function _getPoolStorage() private pure returns (PoolStorage storage $) {
|
250
|
+
assembly {
|
251
|
+
$.slot := POOL_STORAGE_LOCATION_V1
|
252
|
+
}
|
270
253
|
}
|
271
254
|
}
|