@etherisc/gif-next 0.0.2-9c44ae6-473 → 0.0.2-9d3eab3-323

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 (230) hide show
  1. package/README.md +20 -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 +26 -0
  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 +160 -8
  14. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  15. package/artifacts/contracts/components/Product.sol/Product.json +134 -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 +1 -1
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +45 -56
  40. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +26 -0
  44. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  45. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  46. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +25 -14
  48. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  49. package/artifacts/contracts/instance/Instance.sol/Instance.json +100 -139
  50. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +55 -32
  52. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  54. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2 -2
  56. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +224 -128
  58. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +84 -36
  60. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +15 -2
  62. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +13 -32
  64. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +923 -0
  78. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +440 -0
  80. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +39 -52
  82. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +27 -72
  84. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +15 -31
  86. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
  88. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +13 -13
  90. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -13
  92. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
  94. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +15 -218
  96. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +17 -241
  98. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +971 -0
  100. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
  102. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +26 -325
  104. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +15 -47
  106. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +28 -420
  108. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +13 -81
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +87 -159
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +94 -65
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/Registry.sol/Registry.json +104 -212
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  120. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +275 -0
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +30 -128
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +38 -104
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  128. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  129. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  134. package/artifacts/contracts/shared/IService.sol/IService.json +13 -13
  135. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  142. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Service.sol/Service.json +13 -13
  145. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  146. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  147. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  153. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestService.sol/TestService.json +31 -31
  155. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  159. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  160. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  165. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  167. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  173. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  179. package/contracts/components/BaseComponent.sol +49 -8
  180. package/contracts/components/IBaseComponent.sol +6 -0
  181. package/contracts/components/IPoolComponent.sol +4 -0
  182. package/contracts/components/Pool.sol +27 -3
  183. package/contracts/components/Product.sol +8 -5
  184. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  185. package/contracts/instance/BundleManager.sol +1 -26
  186. package/contracts/instance/IInstance.sol +4 -0
  187. package/contracts/instance/IInstanceBase.sol +26 -0
  188. package/contracts/instance/IInstanceService.sol +4 -2
  189. package/contracts/instance/Instance.sol +30 -20
  190. package/contracts/instance/InstanceAccessManager.sol +6 -6
  191. package/contracts/instance/InstanceBase.sol +41 -0
  192. package/contracts/instance/InstanceService.sol +159 -92
  193. package/contracts/instance/InstanceServiceManager.sol +2 -1
  194. package/contracts/instance/ObjectManager.sol +7 -1
  195. package/contracts/instance/base/ComponentServiceBase.sol +17 -79
  196. package/contracts/instance/service/BundleService.sol +260 -0
  197. package/contracts/instance/service/BundleServiceManager.sol +55 -0
  198. package/contracts/instance/service/ComponentOwnerService.sol +4 -6
  199. package/contracts/instance/service/DistributionService.sol +40 -14
  200. package/contracts/instance/service/DistributionServiceManager.sol +2 -1
  201. package/contracts/instance/service/IBundleService.sol +45 -0
  202. package/contracts/instance/service/IPolicyService.sol +87 -0
  203. package/contracts/instance/service/IPoolService.sol +2 -33
  204. package/contracts/instance/service/IProductService.sol +2 -72
  205. package/contracts/instance/service/PolicyService.sol +503 -0
  206. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  207. package/contracts/instance/service/PoolService.sol +43 -149
  208. package/contracts/instance/service/PoolServiceManager.sol +2 -1
  209. package/contracts/instance/service/ProductService.sol +54 -456
  210. package/contracts/registry/ChainNft.sol +1 -1
  211. package/contracts/registry/IRegistry.sol +11 -15
  212. package/contracts/registry/IRegistryService.sol +13 -5
  213. package/contracts/registry/Registry.sol +135 -198
  214. package/contracts/registry/RegistryAccessManager.sol +210 -0
  215. package/contracts/registry/RegistryService.sol +55 -83
  216. package/contracts/registry/RegistryServiceManager.sol +15 -35
  217. package/contracts/registry/ReleaseManager.sol +378 -0
  218. package/contracts/registry/TokenRegistry.sol +4 -5
  219. package/contracts/shared/IService.sol +2 -1
  220. package/contracts/shared/ProxyManager.sol +1 -1
  221. package/contracts/shared/Service.sol +10 -7
  222. package/contracts/test/TestService.sol +3 -2
  223. package/contracts/types/RoleId.sol +6 -5
  224. package/package.json +1 -1
  225. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  226. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  227. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  228. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  229. package/contracts/instance/AccessManagedSimple.sol +0 -115
  230. package/contracts/instance/AccessManagerSimple.sol +0 -692
@@ -7,18 +7,19 @@ 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";
13
14
  import {INftOwnable} from "../../shared/INftOwnable.sol";
14
15
 
15
16
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
16
- import {POOL, BUNDLE} from "../../types/ObjectType.sol";
17
+ import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
17
18
  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";
@@ -28,6 +29,7 @@ import {IPoolService} from "./IPoolService.sol";
28
29
  import {IRegistryService} from "../../registry/IRegistryService.sol";
29
30
  import {InstanceService} from "../InstanceService.sol";
30
31
  import {InstanceReader} from "../InstanceReader.sol";
32
+ import {IBaseComponent} from "../../components/IBaseComponent.sol";
31
33
 
32
34
  string constant POOL_SERVICE_NAME = "PoolService";
33
35
 
@@ -37,8 +39,6 @@ contract PoolService is
37
39
  {
38
40
  using NftIdLib for NftId;
39
41
 
40
- string public constant NAME = "PoolService";
41
-
42
42
  address internal _registryAddress;
43
43
 
44
44
  function _initialize(
@@ -49,26 +49,55 @@ contract PoolService is
49
49
  initializer
50
50
  virtual override
51
51
  {
52
- address initialOwner = address(0);
53
- (_registryAddress, initialOwner) = abi.decode(data, (address, address));
52
+ address registryAddress;
53
+ address initialOwner;
54
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
54
55
  // TODO while PoolService is not deployed in PoolServiceManager constructor
55
56
  // owner is PoolServiceManager deployer
56
- _initializeService(_registryAddress, owner);
57
+ _initializeService(registryAddress, owner);
57
58
 
58
- _registerInterface(type(IService).interfaceId);
59
59
  _registerInterface(type(IPoolService).interfaceId);
60
60
  }
61
61
 
62
- function getName() public pure override(Service, IService) returns(string memory name) {
63
- return NAME;
62
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
63
+ return POOL();
64
+ }
65
+
66
+ function register(address poolAddress)
67
+ external
68
+ returns(NftId poolNftId)
69
+ {
70
+ address poolOwner = msg.sender;
71
+ IBaseComponent pool = IBaseComponent(poolAddress);
72
+
73
+ IRegistry.ObjectInfo memory info;
74
+ bytes memory data;
75
+ (info, data) = getRegistryService().registerPool(pool, poolOwner);
76
+
77
+ IInstance instance = _getInstance(info);
78
+
79
+ bool hasRole = getInstanceService().hasRole(
80
+ poolOwner,
81
+ POOL_OWNER_ROLE(),
82
+ address(instance));
83
+
84
+ if(!hasRole) {
85
+ revert ExpectedRoleMissing(POOL_OWNER_ROLE(), poolOwner);
86
+ }
87
+
88
+ poolNftId = info.nftId;
89
+ ISetup.PoolSetupInfo memory initialSetup = _decodeAndVerifyPoolSetup(data);
90
+ instance.createPoolSetup(poolNftId, initialSetup);
64
91
  }
65
92
 
66
- function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal override {
67
- ISetup.PoolSetupInfo memory initialSetup = abi.decode(
68
- initialObjData,
93
+ function _decodeAndVerifyPoolSetup(bytes memory data) internal returns(ISetup.PoolSetupInfo memory setup)
94
+ {
95
+ setup = abi.decode(
96
+ data,
69
97
  (ISetup.PoolSetupInfo)
70
98
  );
71
- instance.createPoolSetup(componentNftId, initialSetup);
99
+
100
+ // TODO add checks if applicable
72
101
  }
73
102
 
74
103
  function setFees(
@@ -90,139 +119,4 @@ contract PoolService is
90
119
 
91
120
  instance.updatePoolSetup(poolNftId, poolSetupInfo, KEEP_STATE());
92
121
  }
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
- BundleManager bundleManager = instance.getBundleManager();
138
- bundleManager.add(bundleNftId);
139
-
140
- _processStakingByTreasury(
141
- instanceReader,
142
- poolNftId,
143
- bundleNftId,
144
- stakingAmount);
145
-
146
- // TODO add logging
147
- }
148
-
149
- function setBundleFee(
150
- NftId bundleNftId,
151
- Fee memory fee
152
- )
153
- external
154
- override
155
- {
156
- (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
157
- InstanceReader instanceReader = instance.getInstanceReader();
158
- NftId poolNftId = info.nftId;
159
-
160
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
161
- require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
162
- require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
163
-
164
- bundleInfo.fee = fee;
165
-
166
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
167
- }
168
-
169
- function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
170
- external
171
- onlyService
172
- {
173
- IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
174
- IInstance instance = IInstance(instanceInfo.objectAddress);
175
- instance.updateBundle(bundleNftId, bundleInfo, state);
176
- }
177
-
178
- function underwritePolicy(IInstance instance,
179
- NftId policyNftId,
180
- NftId bundleNftId,
181
- uint256 collateralAmount,
182
- uint256 netPremiumAmount
183
- )
184
- external
185
- onlyService
186
- {
187
- InstanceReader instanceReader = instance.getInstanceReader();
188
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
189
-
190
- // lock collateral
191
- bundleInfo.lockedAmount += collateralAmount;
192
- bundleInfo.balanceAmount += netPremiumAmount;
193
-
194
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
195
-
196
- BundleManager bundleManager = instance.getBundleManager();
197
- bundleManager.linkPolicy(policyNftId);
198
- }
199
-
200
- function _processStakingByTreasury(
201
- InstanceReader instanceReader,
202
- NftId poolNftId,
203
- NftId bundleNftId,
204
- uint256 stakingAmount
205
- )
206
- internal
207
- {
208
- // process token transfer(s)
209
- if(stakingAmount > 0) {
210
- ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
211
- TokenHandler tokenHandler = poolInfo.tokenHandler;
212
- address bundleOwner = getRegistry().ownerOf(bundleNftId);
213
- Fee memory stakingFee = poolInfo.stakingFee;
214
-
215
- tokenHandler.transfer(
216
- bundleOwner,
217
- poolInfo.wallet,
218
- stakingAmount
219
- );
220
-
221
-
222
- if (! FeeLib.feeIsZero(stakingFee)) {
223
- (uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
224
- // TODO: track staking fees in pool's state (issue #177)
225
- }
226
- }
227
- }
228
122
  }
@@ -7,6 +7,7 @@ import {PoolService} from "./PoolService.sol";
7
7
  import {Registry} from "../../registry/Registry.sol";
8
8
  import {RegistryService} from "../../registry/RegistryService.sol";
9
9
  import {VersionLib} from "../../types/Version.sol";
10
+ import {SERVICE} from "../../types/ObjectType.sol";
10
11
 
11
12
  contract PoolServiceManager is ProxyManager {
12
13
 
@@ -27,7 +28,7 @@ contract PoolServiceManager is ProxyManager {
27
28
  _poolService = PoolService(address(versionable));
28
29
 
29
30
  Registry registry = Registry(registryAddress);
30
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ address registryServiceAddress = registry.getServiceAddress(SERVICE(), VersionLib.toVersion(3, 0, 0).toMajorPart());
31
32
  RegistryService registryService = RegistryService(registryServiceAddress);
32
33
  // TODO this must have a role or own nft to register service
33
34
  //registryService.registerService(_poolService);