@etherisc/gif-next 0.0.2-efdb520-159 → 0.0.2-efef0ea-320

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 (274) hide show
  1. package/README.md +58 -11
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.json +405 -0
  5. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +340 -0
  8. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +131 -0
  10. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +109 -18
  12. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  13. package/artifacts/contracts/components/Pool.sol/Pool.json +194 -3
  14. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  15. package/artifacts/contracts/components/Product.sol/Product.json +160 -21
  16. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  28. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  32. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  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/IInstance.sol/IInstance.dbg.json +1 -1
  37. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +697 -671
  38. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
  39. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  40. package/artifacts/contracts/instance/Instance.sol/Instance.json +928 -744
  41. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  42. package/artifacts/contracts/instance/{InstanceBase.sol/InstanceBase.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +107 -33
  43. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  44. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  45. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  46. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
  47. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  48. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  49. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  50. package/artifacts/contracts/instance/{service → base}/IService.sol/IService.json +63 -22
  51. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  52. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +463 -0
  53. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  54. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
  55. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  56. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  57. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  58. package/artifacts/contracts/instance/{module/product/ProductModule.sol/ProductModule.json → base/ModuleBase.sol/ModuleBase.json} +2 -2
  59. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  60. package/artifacts/contracts/instance/{service → base}/ServiceBase.sol/ServiceBase.json +93 -6
  61. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +71 -50
  66. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +71 -50
  69. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +22 -93
  71. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +22 -93
  74. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
  76. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.json +10 -0
  78. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
  80. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +61 -38
  83. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +61 -38
  85. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -5
  88. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -5
  90. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/{product/IProductModule.sol/IProductModule.json → risk/IRisk.sol/IRisk.json} +2 -2
  92. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +113 -0
  94. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +131 -0
  96. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +209 -236
  99. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
  101. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +209 -236
  103. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +141 -42
  105. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +507 -0
  107. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  108. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +62 -21
  109. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  110. package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → IDistributionService.sol/IDistributionService.json} +96 -30
  111. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  112. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +127 -22
  113. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  114. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +215 -21
  115. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  116. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +177 -46
  117. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  118. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +322 -62
  119. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  124. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  125. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +4 -0
  126. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +724 -0
  127. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +58 -17
  132. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +4 -0
  133. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +248 -0
  134. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +4 -0
  135. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +129 -0
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +92 -5
  139. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +4 -0
  140. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +228 -0
  141. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  142. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +405 -0
  143. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestFee.sol/TestFee.json +28 -4
  145. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestPool.sol/TestPool.json +194 -3
  147. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +209 -27
  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 +38 -4
  153. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestService.sol/TestService.json +102 -43
  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/TestVersion.sol/TestVersion.json +14 -18
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +102 -39
  160. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  161. package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
  162. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  163. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  166. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  167. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  168. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  169. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  171. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  172. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  173. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  175. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  177. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  179. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  180. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  181. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  183. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +34 -8
  186. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Version.sol/VersionLib.json +101 -2
  188. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  190. package/contracts/components/BaseComponent.sol +7 -2
  191. package/contracts/components/Distribution.sol +132 -0
  192. package/contracts/components/IDistributionComponent.sol +47 -0
  193. package/contracts/components/IPoolComponent.sol +14 -0
  194. package/contracts/components/IProductComponent.sol +24 -5
  195. package/contracts/components/Pool.sol +64 -3
  196. package/contracts/components/Product.sol +123 -13
  197. package/contracts/instance/IInstance.sol +16 -13
  198. package/contracts/instance/Instance.sol +22 -10
  199. package/contracts/instance/{service → base}/ComponentServiceBase.sol +1 -0
  200. package/contracts/instance/base/IInstanceBase.sol +22 -0
  201. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  202. package/contracts/instance/base/ILifecycle.sol +30 -0
  203. package/contracts/instance/{InstanceBase.sol → base/InstanceBase.sol} +34 -17
  204. package/contracts/instance/base/KeyValueStore.sol +161 -0
  205. package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +50 -39
  206. package/contracts/instance/base/ModuleBase.sol +57 -0
  207. package/contracts/instance/{service → base}/ServiceBase.sol +1 -3
  208. package/contracts/instance/module/access/Access.sol +6 -6
  209. package/contracts/instance/module/bundle/BundleModule.sol +24 -118
  210. package/contracts/instance/module/bundle/IBundle.sol +9 -9
  211. package/contracts/instance/module/component/ComponentModule.sol +27 -61
  212. package/contracts/instance/module/component/IComponent.sol +5 -30
  213. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  214. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  215. package/contracts/instance/module/policy/IPolicy.sol +12 -9
  216. package/contracts/instance/module/policy/PolicyModule.sol +33 -26
  217. package/contracts/instance/module/pool/IPoolModule.sol +0 -1
  218. package/contracts/instance/module/pool/PoolModule.sol +12 -9
  219. package/contracts/instance/module/risk/IRisk.sol +26 -0
  220. package/contracts/instance/module/risk/RiskModule.sol +62 -0
  221. package/contracts/instance/module/treasury/ITreasury.sol +30 -52
  222. package/contracts/instance/module/treasury/TreasuryModule.sol +74 -84
  223. package/contracts/instance/service/ComponentOwnerService.sol +33 -50
  224. package/contracts/instance/service/DistributionService.sol +59 -0
  225. package/contracts/instance/service/IComponentOwnerService.sol +1 -1
  226. package/contracts/instance/service/IDistributionService.sol +12 -0
  227. package/contracts/instance/service/IPoolService.sol +8 -1
  228. package/contracts/instance/service/IProductService.sol +56 -7
  229. package/contracts/instance/service/PoolService.sol +64 -13
  230. package/contracts/instance/service/ProductService.sol +234 -83
  231. package/contracts/registry/Registry.sol +4 -4
  232. package/contracts/registry/RegistryUpgradeable.sol +488 -0
  233. package/contracts/shared/IVersionable.sol +19 -6
  234. package/contracts/shared/Proxy.sol +94 -0
  235. package/contracts/shared/Versionable.sol +16 -9
  236. package/contracts/shared/VersionableUpgradeable.sol +136 -0
  237. package/contracts/test/TestDistribution.sol +21 -0
  238. package/contracts/test/TestFee.sol +3 -3
  239. package/contracts/test/TestPool.sol +6 -3
  240. package/contracts/test/TestProduct.sol +36 -8
  241. package/contracts/test/TestRoleId.sol +2 -2
  242. package/contracts/test/TestService.sol +3 -6
  243. package/contracts/test/TestVersion.sol +4 -7
  244. package/contracts/test/TestVersionable.sol +2 -5
  245. package/contracts/test/Usdc.sol +26 -0
  246. package/contracts/types/Fee.sol +44 -20
  247. package/contracts/types/Key32.sol +45 -0
  248. package/contracts/types/NftId.sol +16 -1
  249. package/contracts/types/ObjectType.sol +24 -8
  250. package/contracts/types/ReferralId.sol +48 -0
  251. package/contracts/types/RiskId.sol +43 -0
  252. package/contracts/types/RoleId.sol +12 -10
  253. package/contracts/types/StateId.sol +7 -1
  254. package/contracts/types/UFixed.sol +19 -16
  255. package/contracts/types/Version.sol +37 -25
  256. package/package.json +1 -1
  257. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  258. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  259. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  260. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  261. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  262. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  263. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  264. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  265. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +0 -4
  266. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
  267. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  268. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  269. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  270. package/contracts/instance/IServiceLinked.sol +0 -12
  271. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  272. package/contracts/instance/module/product/IProductModule.sol +0 -6
  273. package/contracts/instance/module/product/ProductModule.sol +0 -8
  274. /package/contracts/instance/{service → base}/IService.sol +0 -0
@@ -8,18 +8,22 @@ import {IPolicy, IPolicyModule} from "../../module/policy/IPolicy.sol";
8
8
  import {ITreasuryModule} from "../../module/treasury/ITreasury.sol";
9
9
 
10
10
  import {NftId} from "../../../types/NftId.sol";
11
+ import {POOL} from "../../../types/ObjectType.sol";
11
12
  import {LibNftIdSet} from "../../../types/NftIdSet.sol";
12
13
  import {StateId, APPLIED} from "../../../types/StateId.sol";
13
14
  import {UFixed} from "../../../types/UFixed.sol";
14
15
 
16
+ import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
15
17
  import {IPoolModule} from "./IPoolModule.sol";
18
+ import {ModuleBase} from "../../base/ModuleBase.sol";
16
19
 
17
20
  abstract contract PoolModule is
21
+ ModuleBase,
18
22
  IPoolModule
19
23
  {
20
24
  using LibNftIdSet for LibNftIdSet.Set;
21
25
 
22
- mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
26
+ // mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
23
27
  mapping(NftId poolNftId => LibNftIdSet.Set bundles) private _bundlesForPool;
24
28
 
25
29
  modifier poolServiceCallingPool() {
@@ -30,6 +34,10 @@ abstract contract PoolModule is
30
34
  _;
31
35
  }
32
36
 
37
+ function initializePoolModule(IKeyValueStore keyValueStore) internal {
38
+ _initialize(keyValueStore);
39
+ }
40
+
33
41
  function registerPool(
34
42
  NftId nftId,
35
43
  bool isVerifying,
@@ -38,17 +46,12 @@ abstract contract PoolModule is
38
46
  public
39
47
  override
40
48
  {
41
- require(
42
- _poolInfo[nftId].nftId.eqz(),
43
- "ERROR:PL-010:ALREADY_CREATED");
44
-
45
- _poolInfo[nftId] = PoolInfo(
46
- nftId,
49
+ PoolInfo memory info = PoolInfo(
47
50
  isVerifying,
48
51
  collateralizationRate
49
52
  );
50
53
 
51
- // TODO add logging
54
+ _create(POOL(), nftId, abi.encode(info));
52
55
  }
53
56
 
54
57
  function addBundleToPool(
@@ -71,7 +74,7 @@ abstract contract PoolModule is
71
74
  function getPoolInfo(
72
75
  NftId nftId
73
76
  ) external view override returns (PoolInfo memory info) {
74
- info = _poolInfo[nftId];
77
+ return abi.decode(_getData(POOL(), nftId), (PoolInfo));
75
78
  }
76
79
 
77
80
 
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {NftId} from "../../../types/NftId.sol";
5
+ import {RiskId} from "../../../types/RiskId.sol";
6
+ import {StateId} from "../../../types/StateId.sol";
7
+
8
+ interface IRisk {
9
+ struct RiskInfo {
10
+ NftId productNftId;
11
+ bytes data;
12
+ }
13
+ }
14
+
15
+ interface IRiskModule is IRisk {
16
+ function createRisk(
17
+ RiskId riskId,
18
+ NftId productNftId,
19
+ bytes memory data
20
+ ) external;
21
+
22
+ function setRiskInfo(RiskId riskId, RiskInfo memory info) external;
23
+ function updateRiskState(RiskId riskId, StateId state) external;
24
+
25
+ function getRiskInfo(RiskId riskId) external view returns (RiskInfo memory info);
26
+ }
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {NftId} from "../../../types/NftId.sol";
5
+ import {RISK} from "../../../types/ObjectType.sol";
6
+ import {RiskId} from "../../../types/RiskId.sol";
7
+ import {StateId} from "../../../types/StateId.sol";
8
+
9
+ import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
10
+ import {IRiskModule} from "./IRisk.sol";
11
+ import {ModuleBase} from "../../base/ModuleBase.sol";
12
+
13
+ contract RiskModule is
14
+ ModuleBase,
15
+ IRiskModule
16
+ {
17
+ function initializeRiskModule(IKeyValueStore keyValueStore) internal {
18
+ _initialize(keyValueStore);
19
+ }
20
+
21
+ function createRisk(
22
+ RiskId riskId,
23
+ NftId productNftId,
24
+ bytes memory data
25
+ ) external override {
26
+ RiskInfo memory info = RiskInfo(
27
+ productNftId,
28
+ data
29
+ );
30
+
31
+ _create(RISK(), riskId.toKey32(), abi.encode(info));
32
+ }
33
+
34
+ function setRiskInfo(
35
+ RiskId riskId,
36
+ RiskInfo memory info
37
+ )
38
+ external
39
+ override
40
+ {
41
+
42
+ }
43
+
44
+ function updateRiskState(
45
+ RiskId riskId,
46
+ StateId state
47
+ )
48
+ external
49
+ override
50
+ {
51
+
52
+ }
53
+
54
+ function getRiskInfo(RiskId riskId)
55
+ external
56
+ view
57
+ override
58
+ returns (RiskInfo memory info)
59
+ {
60
+
61
+ }
62
+ }
@@ -2,6 +2,9 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+ import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
6
+ import {IPoolComponent} from "../../../components/IPoolComponent.sol";
7
+ import {IProductComponent} from "../../../components/IProductComponent.sol";
5
8
 
6
9
  import {NftId} from "../../../types/NftId.sol";
7
10
  import {UFixed} from "../../../types/UFixed.sol";
@@ -13,73 +16,48 @@ interface ITreasury {
13
16
  // TODO add events
14
17
  // TODO add errors
15
18
 
16
- struct ProductSetup {
17
- NftId productNftId;
18
- NftId distributorNftId;
19
+ // treasury info is linked to product nft id
20
+ struct TreasuryInfo {
19
21
  NftId poolNftId;
22
+ NftId distributionNftId;
20
23
  IERC20Metadata token;
21
- TokenHandler tokenHandler;
22
- address wallet;
23
- Fee policyFee;
24
- Fee processingFee;
25
- }
26
-
27
- struct DistributorSetup {
28
- NftId distributorNftId;
29
- address wallet;
30
- Fee commissionFees;
31
- }
32
-
33
- struct PoolSetup {
34
- NftId poolNftId;
35
- address wallet;
36
- Fee stakingFee;
37
- Fee performanceFee;
24
+ Fee productFee; // product fee on net premium
25
+ Fee processingFee; // product fee on payout amounts
26
+ Fee poolFee; // pool fee on net premium
27
+ Fee stakingFee; // pool fee on staked capital from investor
28
+ Fee performanceFee; // pool fee on profits from capital investors
29
+ Fee distributionFee; // default distribution fee (no referral id)
38
30
  }
39
31
  }
40
32
 
41
33
  interface ITreasuryModule is ITreasury {
42
34
 
43
- function registerProduct(
44
- NftId productNftId,
45
- NftId distributorNftId,
46
- NftId poolNftId,
47
- IERC20Metadata token,
48
- address wallet,
49
- Fee memory policyFee,
50
- Fee memory processingFee
35
+ function registerProductSetup(
36
+ IProductComponent product,
37
+ IPoolComponent pool,
38
+ IDistributionComponent distribution
51
39
  ) external;
52
40
 
53
- function setProductFees(
41
+ function setTreasuryInfo(
54
42
  NftId productNftId,
55
- Fee memory policyFee,
56
- Fee memory processingFee
57
- ) external;
58
-
59
- function registerPool(
60
- NftId poolNftId,
61
- address wallet,
62
- Fee memory stakingFee,
63
- Fee memory performanceFee
43
+ TreasuryInfo memory info
64
44
  ) external;
65
45
 
66
- function setPoolFees(
67
- NftId poolNftId,
68
- Fee memory stakingFee,
69
- Fee memory performanceFee
70
- ) external;
71
-
72
- function getTokenHandler(
46
+ function hasTreasuryInfo(
73
47
  NftId productNftId
74
- ) external view returns (TokenHandler tokenHandler);
48
+ ) external view returns (bool hasInfo);
75
49
 
76
- function getProductSetup(
50
+ function getTreasuryInfo(
77
51
  NftId productNftId
78
- ) external view returns (ProductSetup memory setup);
52
+ ) external view returns (TreasuryInfo memory info);
79
53
 
80
- function getPoolSetup(
81
- NftId poolNftId
82
- ) external view returns (PoolSetup memory setup);
54
+ function getProductNftId(
55
+ NftId componentNftId
56
+ ) external view returns (NftId productNftId);
57
+
58
+ function getTokenHandler(
59
+ NftId componentNftId
60
+ ) external view returns (TokenHandler tokenHandler);
83
61
 
84
62
  function calculateFeeAmount(
85
63
  uint256 amount,
@@ -91,7 +69,7 @@ interface ITreasuryModule is ITreasury {
91
69
  uint256 fixedFee
92
70
  ) external pure returns (Fee memory fee);
93
71
 
94
- function getZeroFee() external pure returns (Fee memory fee);
72
+ function getZeroFee() external view returns (Fee memory fee);
95
73
 
96
74
  function getUFixed(
97
75
  uint256 a
@@ -2,134 +2,124 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+ import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
6
+ import {IPoolComponent} from "../../../components/IPoolComponent.sol";
7
+ import {IProductComponent} from "../../../components/IProductComponent.sol";
5
8
 
6
9
  import {NftId} from "../../../types/NftId.sol";
7
- import {Fee, feeIsZero, toFee, zeroFee} from "../../../types/Fee.sol";
10
+ import {TREASURY} from "../../../types/ObjectType.sol";
11
+ import {Fee, FeeLib} from "../../../types/Fee.sol";
8
12
  import {UFixed, UFixedMathLib} from "../../../types/UFixed.sol";
9
13
  import {TokenHandler} from "./TokenHandler.sol";
14
+ import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
10
15
  import {ITreasuryModule} from "./ITreasury.sol";
16
+ import {ModuleBase} from "../../base/ModuleBase.sol";
17
+
18
+ abstract contract TreasuryModule is
19
+ ModuleBase,
20
+ ITreasuryModule
21
+ {
22
+ // relation of distributor and pool nft map to product nft
23
+ mapping(NftId componentNftId => NftId productNftId) internal _productNft;
24
+ // relation of component nft to token hanlder
25
+ mapping(NftId componentNftId => TokenHandler tokenHandler) internal _tokenHandler;
26
+ Fee internal _zeroFee;
27
+
28
+
29
+ function initializeTreasuryModule(IKeyValueStore keyValueStore) internal {
30
+ _initialize(keyValueStore);
31
+ _zeroFee = FeeLib.zeroFee();
32
+ }
11
33
 
12
- abstract contract TreasuryModule is ITreasuryModule {
13
- mapping(NftId productNftId => ProductSetup setup) private _productSetup;
14
- mapping(NftId distributorNftId => DistributorSetup setup)
15
- private _distributorSetup;
16
- mapping(NftId poolNftId => PoolSetup setup) private _poolSetup;
17
-
18
- function registerProduct(
19
- NftId productNftId,
20
- NftId distributorNftId,
21
- NftId poolNftId,
22
- IERC20Metadata token,
23
- address wallet,
24
- Fee memory policyFee,
25
- Fee memory processingFee
34
+ function registerProductSetup(
35
+ IProductComponent product,
36
+ IPoolComponent pool,
37
+ IDistributionComponent distribution
26
38
  ) external override // TODO add authz (only component module)
27
39
  {
28
- // TODO add validation
40
+ NftId productNftId = product.getNftId();
41
+ NftId poolNftId = pool.getNftId();
42
+ NftId distributionNftId = distribution.getNftId();
43
+
44
+ require(productNftId.gtz(), "ERROR:TRS-010:PRODUCT_UNDEFINED");
45
+ require(poolNftId.gtz(), "ERROR:TRS-011:POOL_UNDEFINED");
46
+
47
+ require(address(_tokenHandler[productNftId]) == address(0), "ERROR:TRS-012:TOKEN_HANDLER_ALREADY_REGISTERED");
48
+ require(_productNft[poolNftId].eqz(), "ERROR:TRS-013:POOL_ALREADY_LINKED");
49
+ require(_productNft[distributionNftId].eqz(), "ERROR:TRS-014:COMPENSATION_ALREADY_LINKED");
29
50
 
30
51
  // deploy product specific handler contract
31
- TokenHandler tokenHandler = new TokenHandler(productNftId, address(token));
52
+ IERC20Metadata token = product.getToken();
53
+ _tokenHandler[productNftId] = new TokenHandler(productNftId, address(token));
54
+ _productNft[distributionNftId] = productNftId;
55
+ _productNft[poolNftId] = productNftId;
32
56
 
33
- _productSetup[productNftId] = ProductSetup(
34
- productNftId,
35
- distributorNftId,
57
+ TreasuryInfo memory info = TreasuryInfo(
36
58
  poolNftId,
59
+ distributionNftId,
37
60
  token,
38
- tokenHandler,
39
- wallet,
40
- policyFee,
41
- processingFee
61
+ product.getProductFee(),
62
+ product.getProcessingFee(),
63
+ pool.getPoolFee(),
64
+ pool.getStakingFee(),
65
+ pool.getPerformanceFee(),
66
+ distribution.getDistributionFee()
42
67
  );
43
68
 
44
- // TODO add logging
69
+ _create(TREASURY(), productNftId, abi.encode(info));
45
70
  }
46
71
 
47
- function setProductFees(
72
+ function setTreasuryInfo(
48
73
  NftId productNftId,
49
- Fee memory policyFee,
50
- Fee memory processingFee
51
- ) external override // TODO add authz (only component owner service)
52
- {
53
- // TODO add validation
54
-
55
- ProductSetup storage setup = _productSetup[productNftId];
56
- setup.policyFee = policyFee;
57
- setup.processingFee = processingFee;
58
-
59
- // TODO add logging
60
- }
61
-
62
- function registerPool(
63
- NftId poolNftId,
64
- address wallet,
65
- Fee memory stakingFee,
66
- Fee memory performanceFee
67
- ) external override // TODO add authz (only component module)
74
+ TreasuryInfo memory info
75
+ )
76
+ external
77
+ // TODO add authz (only component module)
78
+ override
68
79
  {
69
- // TODO add validation
70
-
71
- _poolSetup[poolNftId] = PoolSetup(
72
- poolNftId,
73
- wallet,
74
- stakingFee,
75
- performanceFee
76
- );
77
-
78
- // TODO add logging
80
+ _updateData(TREASURY(), productNftId, abi.encode(info));
79
81
  }
80
82
 
81
- function setPoolFees(
82
- NftId poolNftId,
83
- Fee memory stakingFee,
84
- Fee memory performanceFee
85
- ) external override // TODO add authz (only component owner service)
86
- {
87
- // TODO add validation
88
-
89
- PoolSetup storage setup = _poolSetup[poolNftId];
90
- setup.stakingFee = stakingFee;
91
- setup.performanceFee = performanceFee;
92
-
93
- // TODO add logging
83
+ function getProductNftId(
84
+ NftId componentNftId
85
+ ) external view returns (NftId productNftId) {
86
+ return _productNft[componentNftId];
94
87
  }
95
88
 
96
89
  function getTokenHandler(
97
- NftId productNftId
90
+ NftId componentNftId
98
91
  ) external view override returns (TokenHandler tokenHandler) {
99
- return _productSetup[productNftId].tokenHandler;
92
+ return _tokenHandler[componentNftId];
100
93
  }
101
94
 
102
- function getProductSetup(
95
+ function hasTreasuryInfo(
103
96
  NftId productNftId
104
- ) external view override returns (ProductSetup memory setup) {
105
- return _productSetup[productNftId];
97
+ ) public view override returns (bool hasInfo) {
98
+ return _exists(TREASURY(), productNftId);
106
99
  }
107
100
 
108
- function getPoolSetup(
109
- NftId poolNftId
110
- ) external view override returns (PoolSetup memory setup) {
111
- return _poolSetup[poolNftId];
101
+ function getTreasuryInfo(
102
+ NftId productNftId
103
+ ) public view override returns (TreasuryInfo memory info) {
104
+ return abi.decode(_getData(TREASURY(), productNftId), (TreasuryInfo));
112
105
  }
113
106
 
114
107
  function calculateFeeAmount(
115
108
  uint256 amount,
116
109
  Fee memory fee
117
110
  ) public pure override returns (uint256 feeAmount, uint256 netAmount) {
118
- UFixed fractionalAmount = UFixedMathLib.toUFixed(amount) *
119
- fee.fractionalFee;
120
- feeAmount = fractionalAmount.toInt() + fee.fixedFee;
121
- netAmount = amount - feeAmount;
111
+ return FeeLib.calculateFee(fee, amount);
122
112
  }
123
113
 
124
114
  function getFee(
125
115
  UFixed fractionalFee,
126
116
  uint256 fixedFee
127
117
  ) external pure override returns (Fee memory fee) {
128
- return toFee(fractionalFee, fixedFee);
118
+ return FeeLib.toFee(fractionalFee, fixedFee);
129
119
  }
130
120
 
131
- function getZeroFee() external pure override returns (Fee memory fee) {
132
- return zeroFee();
121
+ function getZeroFee() external view override returns (Fee memory fee) {
122
+ return _zeroFee;
133
123
  }
134
124
 
135
125
  function getUFixed(
@@ -6,25 +6,27 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
6
6
  import {IRegistry} from "../../registry/IRegistry.sol";
7
7
  import {IInstance} from "../IInstance.sol";
8
8
 
9
- import {LifecycleModule} from "../module/lifecycle/LifecycleModule.sol";
10
9
  import {ITreasuryModule} from "../module/treasury/ITreasury.sol";
11
10
  import {TreasuryModule} from "../module/treasury/TreasuryModule.sol";
12
11
  import {IComponent, IComponentModule} from "../module/component/IComponent.sol";
13
12
  import {IBaseComponent} from "../../components/IBaseComponent.sol";
14
13
  import {IPoolComponent} from "../../components/IPoolComponent.sol";
15
-
14
+ import {IKeyValueStore} from "../../instance/base/IKeyValueStore.sol";
16
15
  import {IVersionable} from "../../shared/IVersionable.sol";
17
16
  import {Versionable} from "../../shared/Versionable.sol";
18
17
 
19
- import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
20
- import {ObjectType, PRODUCT, ORACLE, POOL} from "../../types/ObjectType.sol";
18
+ import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
19
+ import {ObjectType, COMPONENT, PRODUCT, ORACLE, POOL, DISTRIBUTION} from "../../types/ObjectType.sol";
21
20
  import {StateId, ACTIVE, PAUSED} from "../../types/StateId.sol";
21
+ import {Key32} from "../../types/Key32.sol";
22
22
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
23
- import {Fee, zeroFee} from "../../types/Fee.sol";
24
- import {Version, toVersion, toVersionPart} from "../../types/Version.sol";
23
+ import {Fee} from "../../types/Fee.sol";
24
+ import {Version, VersionLib} from "../../types/Version.sol";
25
25
 
26
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
27
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
26
28
  import {IProductComponent} from "../../components/IProductComponent.sol";
27
- import {ServiceBase} from "./ServiceBase.sol";
29
+ import {ServiceBase} from "../base/ServiceBase.sol";
28
30
  import {IComponentOwnerService} from "./IComponentOwnerService.sol";
29
31
 
30
32
  contract ComponentOwnerService is
@@ -55,10 +57,7 @@ contract ComponentOwnerService is
55
57
  virtual override (IVersionable, Versionable)
56
58
  returns(Version)
57
59
  {
58
- return toVersion(
59
- toVersionPart(3),
60
- toVersionPart(0),
61
- toVersionPart(0));
60
+ return VersionLib.toVersion(3,0,0);
62
61
  }
63
62
 
64
63
  function getName() external pure override returns(string memory name) {
@@ -74,6 +73,9 @@ contract ComponentOwnerService is
74
73
  if (cType == POOL()) {
75
74
  return POOL_OWNER_ROLE();
76
75
  }
76
+ if (cType == DISTRIBUTION()) {
77
+ return DISTRIBUTION_OWNER_ROLE();
78
+ }
77
79
  if (cType == ORACLE()) {
78
80
  return ORACLE_OWNER_ROLE();
79
81
  }
@@ -101,29 +103,25 @@ contract ComponentOwnerService is
101
103
 
102
104
  instance.registerComponent(
103
105
  nftId,
104
- objectType,
105
- token);
106
-
107
- address wallet = component.getWallet();
106
+ token,
107
+ component.getWallet());
108
108
 
109
109
  // component type specific registration actions
110
110
  if (component.getType() == PRODUCT()) {
111
111
  IProductComponent product = IProductComponent(address(component));
112
+
112
113
  NftId poolNftId = product.getPoolNftId();
113
114
  require(poolNftId.gtz(), "ERROR:CMP-005:POOL_UNKNOWN");
114
- // validate pool token and product token are same
115
+ IPoolComponent pool = IPoolComponent(_registry.getObjectInfo(poolNftId).objectAddress);
116
+
117
+ NftId distributionNftId = product.getDistributionNftId();
118
+ IDistributionComponent distribution = IDistributionComponent(_registry.getObjectInfo(distributionNftId).objectAddress);
115
119
 
116
120
  // register with tresury
117
- // implement and add validation
118
- NftId distributorNftId = zeroNftId();
119
- instance.registerProduct(
120
- nftId,
121
- distributorNftId,
122
- poolNftId,
123
- token,
124
- wallet,
125
- product.getPolicyFee(),
126
- product.getProcessingFee()
121
+ instance.registerProductSetup(
122
+ product,
123
+ pool,
124
+ distribution
127
125
  );
128
126
  } else if (component.getType() == POOL()) {
129
127
  IPoolComponent pool = IPoolComponent(address(component));
@@ -133,42 +131,27 @@ contract ComponentOwnerService is
133
131
  nftId,
134
132
  pool.isVerifying(),
135
133
  pool.getCollateralizationLevel());
136
-
137
- // register with tresury
138
- instance.registerPool(
139
- nftId,
140
- wallet,
141
- pool.getStakingFee(),
142
- pool.getPerformanceFee());
143
134
  }
144
- // TODO add distribution
135
+ // TODO add compensation
145
136
  }
146
137
 
147
138
  function lock(
148
139
  IBaseComponent component
149
140
  ) external override onlyRegisteredComponent(component) {
141
+ // TODO use msg.sender to get component and get instance via registered parent nft id
150
142
  IInstance instance = component.getInstance();
151
- IComponent.ComponentInfo memory info = instance.getComponentInfo(
152
- component.getNftId()
153
- );
154
- require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
155
-
156
- info.state = PAUSED();
157
- // setComponentInfo checks for valid state changes
158
- instance.setComponentInfo(info);
143
+ NftId nftId = component.getNftId();
144
+ Key32 key = nftId.toKey32(COMPONENT());
145
+ instance.updateState(key, PAUSED());
159
146
  }
160
147
 
161
148
  function unlock(
162
149
  IBaseComponent component
163
150
  ) external override onlyRegisteredComponent(component) {
151
+ // TODO use msg.sender to get component and get instance via registered parent nft id
164
152
  IInstance instance = component.getInstance();
165
- IComponent.ComponentInfo memory info = instance.getComponentInfo(
166
- component.getNftId()
167
- );
168
- require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
169
-
170
- info.state = ACTIVE();
171
- // setComponentInfo checks for valid state changes
172
- instance.setComponentInfo(info);
153
+ NftId nftId = component.getNftId();
154
+ Key32 key = nftId.toKey32(COMPONENT());
155
+ instance.updateState(key, ACTIVE());
173
156
  }
174
157
  }