@etherisc/gif-next 0.0.2-e1f23dc-329 → 0.0.2-e2d8c7d-942

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.
Files changed (200) hide show
  1. package/README.md +63 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +126 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +136 -10
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +88 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +28 -2
  11. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  12. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  13. package/artifacts/contracts/components/Pool.sol/Pool.json +168 -11
  14. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  15. package/artifacts/contracts/components/Product.sol/Product.json +144 -8
  16. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  36. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  37. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  38. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
  40. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  41. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
  42. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  44. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +69 -0
  45. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  46. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  47. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +17 -1
  49. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  50. package/artifacts/contracts/instance/Instance.sol/Instance.json +156 -139
  51. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +55 -32
  53. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  54. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  55. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +55 -40
  57. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +243 -95
  59. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +82 -30
  61. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  62. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
  63. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -19
  65. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +923 -0
  79. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +440 -0
  81. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +2 -2
  83. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +16 -48
  85. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  86. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +8 -24
  87. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
  89. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +9 -158
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +9 -212
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +984 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  100. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +20 -228
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +10 -30
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  106. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +20 -346
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +10 -62
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  112. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  113. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  120. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  121. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  123. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  125. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  127. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  130. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  131. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  132. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  133. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  134. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  135. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  136. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  137. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  138. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  139. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  140. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  141. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  142. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  143. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  144. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  145. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  146. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  147. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  148. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  149. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  150. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  151. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  152. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  153. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  154. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  155. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  156. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  157. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  163. package/contracts/components/BaseComponent.sol +49 -8
  164. package/contracts/components/Distribution.sol +5 -1
  165. package/contracts/components/IBaseComponent.sol +6 -0
  166. package/contracts/components/IPoolComponent.sol +5 -1
  167. package/contracts/components/Pool.sol +39 -10
  168. package/contracts/components/Product.sol +15 -7
  169. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  170. package/contracts/instance/BundleManager.sol +129 -0
  171. package/contracts/instance/Cloneable.sol +46 -0
  172. package/contracts/instance/IInstance.sol +6 -0
  173. package/contracts/instance/IInstanceBase.sol +26 -0
  174. package/contracts/instance/IInstanceService.sol +7 -3
  175. package/contracts/instance/Instance.sol +36 -15
  176. package/contracts/instance/InstanceAccessManager.sol +6 -6
  177. package/contracts/instance/InstanceBase.sol +41 -0
  178. package/contracts/instance/InstanceService.sol +171 -70
  179. package/contracts/instance/ObjectManager.sol +101 -0
  180. package/contracts/instance/base/ComponentServiceBase.sol +15 -77
  181. package/contracts/instance/module/ISetup.sol +3 -1
  182. package/contracts/instance/service/BundleService.sol +260 -0
  183. package/contracts/instance/service/BundleServiceManager.sol +54 -0
  184. package/contracts/instance/service/DistributionService.sol +38 -8
  185. package/contracts/instance/service/IBundleService.sol +45 -0
  186. package/contracts/instance/service/IPolicyService.sol +87 -0
  187. package/contracts/instance/service/IPoolService.sol +4 -25
  188. package/contracts/instance/service/IProductService.sol +3 -70
  189. package/contracts/instance/service/PolicyService.sol +508 -0
  190. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  191. package/contracts/instance/service/PoolService.sol +41 -118
  192. package/contracts/instance/service/ProductService.sol +50 -441
  193. package/contracts/types/NftIdSet.sol +26 -24
  194. package/contracts/types/RoleId.sol +2 -0
  195. package/package.json +1 -1
  196. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  197. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  198. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  199. package/contracts/instance/AccessManagedSimple.sol +0 -115
  200. package/contracts/instance/AccessManagerSimple.sol +0 -692
@@ -7,6 +7,7 @@ import {IInstance} from "../../instance/IInstance.sol";
7
7
  import {IBundle} from "../../instance/module/IBundle.sol";
8
8
  import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
9
  import {ISetup} from "../module/ISetup.sol";
10
+ import {IPolicy} from "../module/IPolicy.sol";
10
11
 
11
12
  import {IVersionable} from "../../shared/IVersionable.sol";
12
13
  import {Versionable} from "../../shared/Versionable.sol";
@@ -18,16 +19,17 @@ import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
18
19
  import {Fee, FeeLib} from "../../types/Fee.sol";
19
20
  import {Version, VersionLib} from "../../types/Version.sol";
20
21
  import {KEEP_STATE, StateId} from "../../types/StateId.sol";
21
- import {zeroTimestamp} from "../../types/Timestamp.sol";
22
+ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
22
23
 
23
24
  import {IService} from "../../shared/IService.sol";
24
25
  import {Service} from "../../shared/Service.sol";
26
+ import {BundleManager} from "../BundleManager.sol";
25
27
  import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
26
28
  import {IPoolService} from "./IPoolService.sol";
27
29
  import {IRegistryService} from "../../registry/IRegistryService.sol";
28
30
  import {InstanceService} from "../InstanceService.sol";
29
31
  import {InstanceReader} from "../InstanceReader.sol";
30
-
32
+ import {IBaseComponent} from "../../components/IBaseComponent.sol";
31
33
 
32
34
  string constant POOL_SERVICE_NAME = "PoolService";
33
35
 
@@ -49,13 +51,13 @@ contract PoolService is
49
51
  initializer
50
52
  virtual override
51
53
  {
52
- address initialOwner = address(0);
53
- (_registryAddress, initialOwner) = abi.decode(data, (address, address));
54
+ address registryAddress;
55
+ address initialOwner;
56
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
54
57
  // TODO while PoolService is not deployed in PoolServiceManager constructor
55
58
  // owner is PoolServiceManager deployer
56
- _initializeService(_registryAddress, owner);
59
+ _initializeService(registryAddress, owner);
57
60
 
58
- _registerInterface(type(IService).interfaceId);
59
61
  _registerInterface(type(IPoolService).interfaceId);
60
62
  }
61
63
 
@@ -63,12 +65,41 @@ contract PoolService is
63
65
  return NAME;
64
66
  }
65
67
 
66
- function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal override {
67
- ISetup.PoolSetupInfo memory initialSetup = abi.decode(
68
- initialObjData,
68
+ function register(address poolAddress)
69
+ external
70
+ returns(NftId poolNftId)
71
+ {
72
+ address poolOwner = msg.sender;
73
+ IBaseComponent pool = IBaseComponent(poolAddress);
74
+
75
+ IRegistry.ObjectInfo memory info;
76
+ bytes memory data;
77
+ (info, data) = getRegistryService().registerPool(pool, poolOwner);
78
+
79
+ IInstance instance = _getInstance(info);
80
+
81
+ bool hasRole = getInstanceService().hasRole(
82
+ poolOwner,
83
+ POOL_OWNER_ROLE(),
84
+ address(instance));
85
+
86
+ if(!hasRole) {
87
+ revert ExpectedRoleMissing(POOL_OWNER_ROLE(), poolOwner);
88
+ }
89
+
90
+ poolNftId = info.nftId;
91
+ ISetup.PoolSetupInfo memory initialSetup = _decodeAndVerifyPoolSetup(data);
92
+ instance.createPoolSetup(poolNftId, initialSetup);
93
+ }
94
+
95
+ function _decodeAndVerifyPoolSetup(bytes memory data) internal returns(ISetup.PoolSetupInfo memory setup)
96
+ {
97
+ setup = abi.decode(
98
+ data,
69
99
  (ISetup.PoolSetupInfo)
70
100
  );
71
- instance.createPoolSetup(componentNftId, initialSetup);
101
+
102
+ // TODO add checks if applicable
72
103
  }
73
104
 
74
105
  function setFees(
@@ -90,112 +121,4 @@ contract PoolService is
90
121
 
91
122
  instance.updatePoolSetup(poolNftId, poolSetupInfo, KEEP_STATE());
92
123
  }
93
-
94
- function createBundle(
95
- address owner,
96
- Fee memory fee,
97
- uint256 stakingAmount,
98
- uint256 lifetime,
99
- bytes calldata filter
100
- )
101
- external
102
- override
103
- returns(NftId bundleNftId)
104
- {
105
- (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
106
- InstanceReader instanceReader = instance.getInstanceReader();
107
- NftId poolNftId = info.nftId;
108
-
109
- IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
110
- poolNftId,
111
- fee,
112
- filter,
113
- stakingAmount,
114
- 0,
115
- stakingAmount,
116
- lifetime,
117
- zeroTimestamp(),
118
- zeroTimestamp()
119
- );
120
-
121
- // register bundle with registry
122
- bundleNftId = getRegistryService().registerBundle(
123
- IRegistry.ObjectInfo(
124
- zeroNftId(),
125
- poolNftId,
126
- BUNDLE(),
127
- false, // intercepting property for bundles is defined on pool
128
- address(0),
129
- owner,
130
- abi.encode(bundleInfo)
131
- )
132
- );
133
-
134
- // create bundle info in instance
135
- instance.createBundle(bundleNftId, bundleInfo);
136
-
137
- // TODO add bundle to pool in instance
138
-
139
- // TODO collect capital
140
- // _processStakingByTreasury(
141
- // instanceReader,
142
- // zeroNftId(),
143
- // poolNftId,
144
- // bundleNftId,
145
- // stakingAmount);
146
-
147
- // TODO add logging
148
- }
149
-
150
- function setBundleFee(
151
- NftId bundleNftId,
152
- Fee memory fee
153
- )
154
- external
155
- override
156
- {
157
- (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
158
- InstanceReader instanceReader = instance.getInstanceReader();
159
- NftId poolNftId = info.nftId;
160
-
161
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
162
- require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
163
- require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
164
-
165
- bundleInfo.fee = fee;
166
-
167
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
168
- }
169
-
170
- function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
171
- external
172
- onlyService
173
- {
174
- IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
175
- IInstance instance = IInstance(instanceInfo.objectAddress);
176
- instance.updateBundle(bundleNftId, bundleInfo, state);
177
- }
178
-
179
- function _processStakingByTreasury(
180
- InstanceReader instanceReader,
181
- NftId productNftId,
182
- NftId poolNftId,
183
- NftId bundleNftId,
184
- uint256 stakingAmount
185
- )
186
- internal
187
- {
188
- // process token transfer(s)
189
- if(stakingAmount > 0) {
190
- TokenHandler tokenHandler = TokenHandler(instanceReader.getTokenHandler(productNftId));
191
- address bundleOwner = getRegistry().ownerOf(bundleNftId);
192
- ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
193
-
194
- tokenHandler.transfer(
195
- bundleOwner,
196
- poolInfo.wallet,
197
- stakingAmount
198
- );
199
- }
200
- }
201
124
  }