@etherisc/gif-next 0.0.2-299fe4a-464 → 0.0.2-29a48ef-239

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 (390) hide show
  1. package/README.md +192 -7
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +176 -23
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +618 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +129 -23
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +74 -181
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +463 -63
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +494 -70
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  26. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  28. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  30. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  32. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  42. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  44. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  45. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  46. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  47. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  48. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  49. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  50. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  51. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  52. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  53. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
  54. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  55. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +906 -1243
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +2406 -1112
  62. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +931 -0
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +508 -0
  70. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +540 -0
  72. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  74. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  76. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  78. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  80. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  82. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  84. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  86. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  88. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  90. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IRisk.sol/IRisk.json} +2 -2
  92. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → ISetup.sol/ISetup.json} +2 -2
  94. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  96. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +393 -85
  98. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
  100. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
  102. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +182 -80
  104. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → IDistributionService.sol/IDistributionService.json} +209 -63
  106. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +347 -54
  108. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  109. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +339 -56
  110. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  111. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +545 -73
  112. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +460 -0
  114. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  115. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +561 -99
  116. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
  118. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  119. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +377 -37
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +947 -0
  124. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  126. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -123
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1293 -0
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +517 -0
  132. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  134. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  135. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  136. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  137. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  138. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  140. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  142. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  143. package/artifacts/contracts/{instance/service → shared}/IService.sol/IService.json +180 -59
  144. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +60 -19
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  152. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +209 -80
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/service/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +227 -59
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +83 -19
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.json +30 -6
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
  168. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestService.sol/TestService.json +277 -84
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +14 -18
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +106 -50
  176. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  177. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  178. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +2 -2
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  186. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  188. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  190. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  192. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  194. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  198. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  204. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  206. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  208. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  210. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  212. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/Version.sol/VersionLib.json +101 -2
  214. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  216. package/contracts/components/BaseComponent.sol +26 -24
  217. package/contracts/components/Distribution.sol +163 -0
  218. package/contracts/components/IBaseComponent.sol +9 -3
  219. package/contracts/components/IDistributionComponent.sol +44 -0
  220. package/contracts/components/IPoolComponent.sol +15 -10
  221. package/contracts/components/IProductComponent.sol +25 -9
  222. package/contracts/components/Pool.sol +106 -33
  223. package/contracts/components/Product.sol +204 -32
  224. package/contracts/experiment/cloning/Cloner.sol +47 -0
  225. package/contracts/instance/AccessManagedSimple.sol +115 -0
  226. package/contracts/instance/AccessManagerSimple.sol +692 -0
  227. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  228. package/contracts/instance/IInstance.sol +44 -40
  229. package/contracts/instance/IInstanceService.sol +30 -0
  230. package/contracts/instance/Instance.sol +426 -45
  231. package/contracts/instance/InstanceAccessManager.sol +288 -0
  232. package/contracts/instance/InstanceReader.sol +315 -0
  233. package/contracts/instance/InstanceService.sol +198 -0
  234. package/contracts/instance/InstanceServiceManager.sol +57 -0
  235. package/contracts/instance/base/ComponentServiceBase.sol +134 -0
  236. package/contracts/instance/base/IInstanceBase.sol +23 -0
  237. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  238. package/contracts/instance/base/ILifecycle.sol +30 -0
  239. package/contracts/instance/base/KeyValueStore.sol +172 -0
  240. package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +51 -40
  241. package/contracts/instance/module/IAccess.sol +38 -0
  242. package/contracts/instance/module/IBundle.sol +20 -0
  243. package/contracts/instance/module/IDistribution.sol +39 -0
  244. package/contracts/instance/module/IPolicy.sol +45 -0
  245. package/contracts/instance/module/IRisk.sol +11 -0
  246. package/contracts/instance/module/ISetup.sol +47 -0
  247. package/contracts/instance/module/ITreasury.sol +23 -0
  248. package/contracts/instance/service/ComponentOwnerService.sol +246 -103
  249. package/contracts/instance/service/DistributionService.sol +88 -0
  250. package/contracts/instance/service/DistributionServiceManager.sol +54 -0
  251. package/contracts/instance/service/IComponentOwnerService.sol +1 -3
  252. package/contracts/instance/service/IDistributionService.sol +12 -0
  253. package/contracts/instance/service/IPoolService.sol +14 -1
  254. package/contracts/instance/service/IProductService.sol +59 -7
  255. package/contracts/instance/service/PoolService.sol +150 -44
  256. package/contracts/instance/service/PoolServiceManager.sol +54 -0
  257. package/contracts/instance/service/ProductService.sol +344 -141
  258. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  259. package/contracts/registry/ChainNft.sol +80 -37
  260. package/contracts/registry/IRegistry.sol +49 -25
  261. package/contracts/registry/IRegistryService.sol +50 -0
  262. package/contracts/registry/ITransferInterceptor.sol +6 -0
  263. package/contracts/registry/Registry.sol +337 -270
  264. package/contracts/registry/RegistryService.sol +358 -0
  265. package/contracts/registry/RegistryServiceManager.sol +80 -0
  266. package/contracts/registry/TokenRegistry.sol +111 -0
  267. package/contracts/shared/ContractDeployerLib.sol +72 -0
  268. package/contracts/shared/ERC165.sol +6 -2
  269. package/contracts/shared/INftOwnable.sol +22 -0
  270. package/contracts/shared/IRegisterable.sol +8 -15
  271. package/contracts/{instance/service → shared}/IService.sol +3 -3
  272. package/contracts/shared/IVersionable.sol +56 -12
  273. package/contracts/shared/NftOwnable.sol +134 -0
  274. package/contracts/shared/ProxyManager.sol +94 -0
  275. package/contracts/shared/Registerable.sol +63 -59
  276. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  277. package/contracts/shared/Service.sol +55 -0
  278. package/contracts/shared/TokenHandler.sol +27 -0
  279. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  280. package/contracts/shared/Versionable.sol +112 -57
  281. package/contracts/test/TestFee.sol +4 -4
  282. package/contracts/test/TestRegisterable.sol +5 -6
  283. package/contracts/test/TestRoleId.sol +2 -2
  284. package/contracts/test/TestService.sol +6 -17
  285. package/contracts/test/TestVersion.sol +4 -7
  286. package/contracts/test/TestVersionable.sol +2 -5
  287. package/contracts/test/Usdc.sol +26 -0
  288. package/contracts/types/DistributorType.sol +55 -0
  289. package/contracts/types/Fee.sol +44 -20
  290. package/contracts/types/Key32.sol +50 -0
  291. package/contracts/types/NftId.sol +16 -1
  292. package/contracts/types/NumberId.sol +52 -0
  293. package/contracts/types/ObjectType.sol +51 -14
  294. package/contracts/types/Referral.sol +85 -0
  295. package/contracts/types/RiskId.sol +43 -0
  296. package/contracts/types/RoleId.sol +65 -11
  297. package/contracts/types/StateId.sol +12 -2
  298. package/contracts/types/Timestamp.sol +7 -3
  299. package/contracts/types/UFixed.sol +144 -25
  300. package/contracts/types/Version.sol +42 -26
  301. package/package.json +7 -3
  302. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  303. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  304. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  305. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  306. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  307. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  308. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  309. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  310. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  311. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  312. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  313. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
  314. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  315. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  316. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
  317. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  318. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  319. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  320. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  321. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  322. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  323. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  324. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  325. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  326. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  327. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  328. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  329. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  330. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  331. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  332. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  333. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  334. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  335. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  336. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  337. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  338. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +0 -4
  339. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +0 -10
  340. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
  341. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.json +0 -10
  342. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  343. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  344. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -538
  345. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  346. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  347. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  348. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -538
  349. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  350. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  351. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  352. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  353. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  354. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  355. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  356. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  357. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  358. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  359. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  360. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  361. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  362. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  363. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  364. package/contracts/experiment/statemachine/README.md +0 -112
  365. package/contracts/instance/IInstanceLinked.sol +0 -8
  366. package/contracts/instance/IServiceLinked.sol +0 -12
  367. package/contracts/instance/InstanceBase.sol +0 -74
  368. package/contracts/instance/module/access/Access.sol +0 -149
  369. package/contracts/instance/module/access/IAccess.sol +0 -53
  370. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  371. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  372. package/contracts/instance/module/component/ComponentModule.sol +0 -104
  373. package/contracts/instance/module/component/IComponent.sol +0 -53
  374. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  375. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  376. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  377. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  378. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  379. package/contracts/instance/module/product/IProductModule.sol +0 -6
  380. package/contracts/instance/module/product/ProductModule.sol +0 -8
  381. package/contracts/instance/module/treasury/ITreasury.sol +0 -104
  382. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  383. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -148
  384. package/contracts/instance/service/ComponentServiceBase.sol +0 -41
  385. package/contracts/instance/service/ServiceBase.sol +0 -39
  386. package/contracts/registry/IChainNft.sol +0 -21
  387. package/contracts/registry/IRegistryLinked.sol +0 -8
  388. package/contracts/shared/IOwnable.sol +0 -6
  389. package/contracts/test/TestPool.sol +0 -22
  390. package/contracts/test/TestProduct.sol +0 -44
@@ -1,27 +1,79 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
+ import {IRisk} from "../module/IRisk.sol";
5
+ import {IService} from "../../shared/IService.sol";
6
+
4
7
  import {NftId} from "../../types/NftId.sol";
8
+ import {ReferralId} from "../../types/Referral.sol";
9
+ import {RiskId} from "../../types/RiskId.sol";
10
+ import {StateId} from "../../types/StateId.sol";
5
11
  import {Timestamp} from "../../types/Timestamp.sol";
6
12
  import {UFixed} from "../../types/UFixed.sol";
7
13
  import {Fee} from "../../types/Fee.sol";
8
- import {IService} from "./IService.sol";
9
14
 
10
15
  interface IProductService is IService {
16
+
17
+ error ErrorIProductServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
18
+
11
19
  function setFees(
12
- Fee memory policyFee,
20
+ Fee memory productFee,
13
21
  Fee memory processingFee
14
22
  ) external;
15
23
 
24
+ function createRisk(
25
+ RiskId riskId,
26
+ bytes memory data
27
+ ) external;
28
+
29
+
30
+ function updateRisk(
31
+ RiskId riskId,
32
+ bytes memory data
33
+ ) external;
34
+
35
+
36
+ function updateRiskState(
37
+ RiskId riskId,
38
+ StateId newState
39
+ ) external;
40
+
41
+
42
+ function calculatePremium(
43
+ RiskId riskId,
44
+ uint256 sumInsuredAmount,
45
+ uint256 lifetime,
46
+ bytes memory applicationData,
47
+ NftId bundleNftId,
48
+ ReferralId referralId
49
+ )
50
+ external
51
+ view
52
+ returns (
53
+ uint256 premiumAmount,
54
+ uint256 productFeeAmount,
55
+ uint256 poolFeeAmount,
56
+ uint256 bundleFeeAmount,
57
+ uint256 distributionFeeAmount
58
+ );
59
+
60
+
16
61
  function createApplication(
17
62
  address applicationOwner,
63
+ RiskId riskId,
18
64
  uint256 sumInsuredAmount,
19
- uint256 premiumAmount,
20
65
  uint256 lifetime,
21
- NftId bundleNftId
66
+ bytes memory applicationData,
67
+ NftId bundleNftId,
68
+ ReferralId referralId
22
69
  ) external returns (NftId nftId);
23
70
 
24
- // function revoke(unit256 nftId) external;
71
+ /**
72
+ * @dev revokes the application represented by {policyNftId}.
73
+ * an application can only be revoked in applied state.
74
+ * only the application holder may revoke an application.
75
+ */
76
+ function revoke(NftId policyNftId) external;
25
77
 
26
78
  /**
27
79
  * @dev underwrites the policy represented by {policyNftId}.
@@ -38,9 +90,9 @@ interface IProductService is IService {
38
90
  // function decline(uint256 nftId) external;
39
91
  // function expire(uint256 nftId) external;
40
92
 
41
- function collectPremium(NftId nftId, Timestamp activateAt) external;
93
+ function collectPremium(NftId policyNftId, Timestamp activateAt) external;
42
94
 
43
- function activate(NftId nftId, Timestamp activateAt) external;
95
+ function activate(NftId policyNftId, Timestamp activateAt) external;
44
96
 
45
97
 
46
98
  function close(NftId nftId) external;
@@ -1,65 +1,99 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
+ import {Pool} from "../../components/Pool.sol";
4
5
  import {IRegistry} from "../../registry/IRegistry.sol";
5
6
  import {IInstance} from "../../instance/IInstance.sol";
6
- import {ITreasury, ITreasuryModule, TokenHandler} from "../../instance/module/treasury/ITreasury.sol";
7
+ import {IBundle} from "../../instance/module/IBundle.sol";
8
+ import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
+ import {ISetup} from "../module/ISetup.sol";
7
10
 
8
11
  import {IVersionable} from "../../shared/IVersionable.sol";
9
12
  import {Versionable} from "../../shared/Versionable.sol";
13
+ import {INftOwnable} from "../../shared/INftOwnable.sol";
10
14
 
11
- import {NftId, NftIdLib} from "../../types/NftId.sol";
15
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
12
16
  import {POOL, BUNDLE} from "../../types/ObjectType.sol";
13
- import {Fee, feeIsZero} from "../../types/Fee.sol";
14
- import {Version, toVersion, toVersionPart} from "../../types/Version.sol";
15
-
16
- import {ComponentServiceBase} from "./ComponentServiceBase.sol";
17
+ import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
18
+ import {Fee, FeeLib} from "../../types/Fee.sol";
19
+ import {Version, VersionLib} from "../../types/Version.sol";
20
+ import {KEEP_STATE, StateId} from "../../types/StateId.sol";
21
+ import {zeroTimestamp} from "../../types/Timestamp.sol";
22
+
23
+ import {IService} from "../../shared/IService.sol";
24
+ import {Service} from "../../shared/Service.sol";
25
+ import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
17
26
  import {IPoolService} from "./IPoolService.sol";
27
+ import {IRegistryService} from "../../registry/IRegistryService.sol";
28
+ import {InstanceService} from "../InstanceService.sol";
29
+ import {InstanceReader} from "../InstanceReader.sol";
18
30
 
31
+ string constant POOL_SERVICE_NAME = "PoolService";
19
32
 
20
- contract PoolService is ComponentServiceBase, IPoolService {
33
+ contract PoolService is
34
+ ComponentServiceBase,
35
+ IPoolService
36
+ {
21
37
  using NftIdLib for NftId;
22
38
 
23
39
  string public constant NAME = "PoolService";
24
40
 
25
- constructor(
26
- address registry,
27
- NftId registryNftId
28
- ) ComponentServiceBase(registry, registryNftId) // solhint-disable-next-line no-empty-blocks
41
+ address internal _registryAddress;
42
+
43
+ function _initialize(
44
+ address owner,
45
+ bytes memory data
46
+ )
47
+ internal
48
+ initializer
49
+ virtual override
29
50
  {
51
+ address initialOwner = address(0);
52
+ (_registryAddress, initialOwner) = abi.decode(data, (address, address));
53
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
54
+ // owner is PoolServiceManager deployer
55
+ _initializeService(_registryAddress, owner);
56
+
57
+ _registerInterface(type(IService).interfaceId);
30
58
  _registerInterface(type(IPoolService).interfaceId);
31
59
  }
32
60
 
33
- function getVersion()
34
- public
35
- pure
36
- virtual override (IVersionable, Versionable)
37
- returns(Version)
38
- {
39
- return toVersion(
40
- toVersionPart(3),
41
- toVersionPart(0),
42
- toVersionPart(0));
61
+ function getName() public pure override(Service, IService) returns(string memory name) {
62
+ return NAME;
43
63
  }
44
64
 
45
- function getName() external pure override returns(string memory name) {
46
- return NAME;
65
+ function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal override {
66
+ ISetup.PoolSetupInfo memory initialSetup = abi.decode(
67
+ initialObjData,
68
+ (ISetup.PoolSetupInfo)
69
+ );
70
+ instance.createPoolSetup(componentNftId, initialSetup);
47
71
  }
48
72
 
49
73
  function setFees(
74
+ Fee memory poolFee,
50
75
  Fee memory stakingFee,
51
76
  Fee memory performanceFee
52
77
  )
53
78
  external
54
79
  override
55
80
  {
56
- (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
57
- instance.setPoolFees(info.nftId, stakingFee, performanceFee);
81
+ (IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
82
+ InstanceReader instanceReader = instance.getInstanceReader();
83
+ NftId poolNftId = poolInfo.nftId;
84
+
85
+ ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
86
+ poolSetupInfo.poolFee = poolFee;
87
+ poolSetupInfo.stakingFee = stakingFee;
88
+ poolSetupInfo.performanceFee = performanceFee;
89
+
90
+ instance.updatePoolSetup(poolNftId, poolSetupInfo, KEEP_STATE());
58
91
  }
59
92
 
60
93
  function createBundle(
61
94
  address owner,
62
- uint256 amount,
95
+ Fee memory fee,
96
+ uint256 stakingAmount,
63
97
  uint256 lifetime,
64
98
  bytes calldata filter
65
99
  )
@@ -68,31 +102,103 @@ contract PoolService is ComponentServiceBase, IPoolService {
68
102
  returns(NftId bundleNftId)
69
103
  {
70
104
  (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
71
-
72
- // register bundle with registry
105
+ InstanceReader instanceReader = instance.getInstanceReader();
73
106
  NftId poolNftId = info.nftId;
74
- bundleNftId = _registry.registerObjectForInstance(
75
- poolNftId,
76
- BUNDLE(),
77
- owner,
78
- "");
79
107
 
80
- // create bundle info in instance
81
- instance.createBundleInfo(
82
- bundleNftId,
108
+ IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
83
109
  poolNftId,
84
- amount,
110
+ fee,
111
+ filter,
112
+ stakingAmount,
113
+ 0,
114
+ stakingAmount,
85
115
  lifetime,
86
- filter);
116
+ zeroTimestamp(),
117
+ zeroTimestamp()
118
+ );
87
119
 
88
- // add bundle to pool in instance
89
- instance.addBundleToPool(
90
- bundleNftId,
91
- poolNftId,
92
- amount);
120
+ // register bundle with registry
121
+ bundleNftId = getRegistryService().registerBundle(
122
+ IRegistry.ObjectInfo(
123
+ zeroNftId(),
124
+ poolNftId,
125
+ BUNDLE(),
126
+ false, // intercepting property for bundles is defined on pool
127
+ address(0),
128
+ owner,
129
+ abi.encode(bundleInfo)
130
+ )
131
+ );
132
+
133
+ // create bundle info in instance
134
+ instance.createBundle(bundleNftId, bundleInfo);
93
135
 
94
- // TODO collect capital
136
+ // TODO add bundle to pool in instance
137
+
138
+ _processStakingByTreasury(
139
+ instanceReader,
140
+ poolNftId,
141
+ bundleNftId,
142
+ stakingAmount);
95
143
 
96
144
  // TODO add logging
97
145
  }
146
+
147
+ function setBundleFee(
148
+ NftId bundleNftId,
149
+ Fee memory fee
150
+ )
151
+ external
152
+ override
153
+ {
154
+ (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
155
+ InstanceReader instanceReader = instance.getInstanceReader();
156
+ NftId poolNftId = info.nftId;
157
+
158
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
159
+ require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
160
+ require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
161
+
162
+ bundleInfo.fee = fee;
163
+
164
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
165
+ }
166
+
167
+ function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
168
+ external
169
+ onlyService
170
+ {
171
+ IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
172
+ IInstance instance = IInstance(instanceInfo.objectAddress);
173
+ instance.updateBundle(bundleNftId, bundleInfo, state);
174
+ }
175
+
176
+ function _processStakingByTreasury(
177
+ InstanceReader instanceReader,
178
+ NftId poolNftId,
179
+ NftId bundleNftId,
180
+ uint256 stakingAmount
181
+ )
182
+ internal
183
+ {
184
+ // process token transfer(s)
185
+ if(stakingAmount > 0) {
186
+ ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
187
+ TokenHandler tokenHandler = poolInfo.tokenHandler;
188
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
189
+ Fee memory stakingFee = poolInfo.stakingFee;
190
+
191
+ tokenHandler.transfer(
192
+ bundleOwner,
193
+ poolInfo.wallet,
194
+ stakingAmount
195
+ );
196
+
197
+
198
+ if (! FeeLib.feeIsZero(stakingFee)) {
199
+ (uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
200
+ // TODO: track staking fees in pool's state (issue #177)
201
+ }
202
+ }
203
+ }
98
204
  }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {PoolService} from "./PoolService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {VersionLib} from "../../types/Version.sol";
10
+
11
+ contract PoolServiceManager is ProxyManager {
12
+
13
+ PoolService private _poolService;
14
+
15
+ /// @dev initializes proxy manager with pool service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager()
20
+ {
21
+ PoolService poolSrv = new PoolService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(poolSrv),
25
+ data);
26
+
27
+ _poolService = PoolService(address(versionable));
28
+
29
+ Registry registry = Registry(registryAddress);
30
+ address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_poolService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_poolService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getPoolService()
47
+ external
48
+ view
49
+ returns (PoolService poolService)
50
+ {
51
+ return _poolService;
52
+ }
53
+
54
+ }