@etherisc/gif-next 0.0.2-cddad6b-504 → 0.0.2-ce8407f-016

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 (348) hide show
  1. package/README.md +40 -25
  2. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +115 -48
  4. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  5. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  6. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  7. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  8. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  9. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  10. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  11. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  12. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  13. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  14. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  16. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  20. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  22. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  24. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  25. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  26. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  27. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1119 -0
  28. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  29. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  30. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  31. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1 -1998
  32. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  33. package/artifacts/contracts/instance/Instance.sol/Instance.json +2378 -1243
  34. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  36. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +878 -0
  38. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +117 -0
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +32 -86
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/IService.sol/IService.json +174 -53
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +138 -112
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  49. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +220 -52
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  53. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  66. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +141 -12
  67. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  68. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
  69. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  70. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +298 -39
  71. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  72. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +745 -0
  73. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  74. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  75. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  76. package/artifacts/contracts/registry/Registry.sol/Registry.json +489 -120
  77. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  78. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1013 -0
  79. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +476 -0
  81. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  82. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  83. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  84. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  85. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  86. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
  87. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  88. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  89. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  90. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  91. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  92. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  93. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  94. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  95. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  96. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  97. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  98. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  99. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  100. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  101. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  102. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  103. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  104. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  105. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  106. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  107. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +5 -111
  108. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  109. package/artifacts/contracts/test/TestService.sol/TestService.json +283 -62
  110. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  111. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  112. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  113. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  114. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
  115. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  116. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  117. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  118. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  119. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  120. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  121. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  122. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  123. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  124. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  125. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  126. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  127. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  128. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  129. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  130. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  131. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  132. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  133. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  134. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  135. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  136. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  137. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  138. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  139. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  140. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  141. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  142. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  143. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  144. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  145. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  146. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  147. package/contracts/components/IBaseComponent.sol +4 -4
  148. package/contracts/instance/AccessManagedSimple.sol +114 -0
  149. package/contracts/instance/AccessManagerSimple.sol +682 -0
  150. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  151. package/contracts/instance/IInstance.sol +3 -50
  152. package/contracts/instance/Instance.sol +379 -61
  153. package/contracts/instance/InstanceAccessManager.sol +288 -0
  154. package/contracts/instance/InstanceReader.sol +235 -0
  155. package/contracts/instance/InstanceService.sol +45 -0
  156. package/contracts/instance/base/IKeyValueStore.sol +10 -12
  157. package/contracts/instance/base/ILifecycle.sol +3 -3
  158. package/contracts/instance/base/KeyValueStore.sol +46 -19
  159. package/contracts/instance/base/Lifecycle.sol +1 -1
  160. package/contracts/instance/base/ServiceBase.sol +20 -13
  161. package/contracts/instance/module/IAccess.sol +38 -0
  162. package/contracts/instance/module/IBundle.sol +19 -0
  163. package/contracts/instance/module/IDistribution.sol +39 -0
  164. package/contracts/instance/module/IPolicy.sol +45 -0
  165. package/contracts/instance/module/IRisk.sol +11 -0
  166. package/contracts/instance/module/ISetup.sol +41 -0
  167. package/contracts/instance/module/ITreasury.sol +23 -0
  168. package/contracts/registry/ChainNft.sol +43 -15
  169. package/contracts/registry/IChainNft.sol +3 -2
  170. package/contracts/registry/IRegistry.sol +42 -26
  171. package/contracts/registry/IRegistryService.sol +29 -0
  172. package/contracts/registry/ITransferInterceptor.sol +6 -0
  173. package/contracts/registry/Registry.sol +383 -273
  174. package/contracts/registry/RegistryService.sol +369 -0
  175. package/contracts/registry/RegistryServiceManager.sol +43 -0
  176. package/contracts/shared/ContractDeployerLib.sol +72 -0
  177. package/contracts/shared/ERC165.sol +1 -1
  178. package/contracts/shared/INftOwnable.sol +22 -0
  179. package/contracts/shared/IRegisterable.sol +9 -16
  180. package/contracts/shared/IVersionable.sol +55 -11
  181. package/contracts/shared/NftOwnable.sol +136 -0
  182. package/contracts/shared/ProxyManager.sol +94 -0
  183. package/contracts/shared/Registerable.sol +62 -59
  184. package/contracts/shared/TokenHandler.sol +27 -0
  185. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  186. package/contracts/shared/Versionable.sol +113 -55
  187. package/contracts/test/TestRegisterable.sol +5 -6
  188. package/contracts/test/TestRoleId.sol +6 -6
  189. package/contracts/test/TestService.sol +5 -11
  190. package/contracts/types/DistributorType.sol +55 -0
  191. package/contracts/types/Key32.sol +8 -3
  192. package/contracts/types/NumberId.sol +52 -0
  193. package/contracts/types/ObjectType.sol +35 -14
  194. package/contracts/types/Referral.sol +85 -0
  195. package/contracts/types/RoleId.sol +46 -9
  196. package/contracts/types/StateId.sol +1 -1
  197. package/contracts/types/Timestamp.sol +7 -3
  198. package/contracts/types/Version.sol +9 -0
  199. package/package.json +1 -1
  200. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  201. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  202. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  203. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -405
  204. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  205. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -340
  206. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  207. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -487
  208. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  209. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -370
  210. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  211. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -578
  212. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  213. package/artifacts/contracts/components/Product.sol/Product.json +0 -444
  214. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  215. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  216. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  217. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  218. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  219. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  220. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  221. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -376
  222. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  223. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  224. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  225. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  226. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  227. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  228. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  229. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  230. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  231. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  232. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  233. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  234. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  235. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  236. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  237. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  238. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  239. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  240. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  241. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  242. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  243. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  244. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  245. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  246. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  247. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  248. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  249. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  250. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  251. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  252. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  253. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  254. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  255. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  256. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  257. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  258. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  259. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  260. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  261. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  262. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  263. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  264. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  265. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  266. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  267. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  268. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  269. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  270. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -420
  271. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  272. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  273. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  274. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -325
  275. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  276. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -440
  277. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  278. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -630
  279. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  280. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -543
  281. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  282. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -858
  283. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  284. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  285. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  286. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -495
  287. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  288. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  289. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  290. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
  291. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  292. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  293. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -187
  294. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  295. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  296. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  297. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  298. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  299. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  300. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  301. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  302. package/contracts/components/BaseComponent.sol +0 -94
  303. package/contracts/components/Distribution.sol +0 -132
  304. package/contracts/components/IDistributionComponent.sol +0 -47
  305. package/contracts/components/IPoolComponent.sol +0 -71
  306. package/contracts/components/IProductComponent.sol +0 -38
  307. package/contracts/components/Pool.sol +0 -235
  308. package/contracts/components/Product.sol +0 -227
  309. package/contracts/experiment/statemachine/README.md +0 -112
  310. package/contracts/instance/IInstanceLinked.sol +0 -8
  311. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  312. package/contracts/instance/base/IInstanceBase.sol +0 -22
  313. package/contracts/instance/base/InstanceBase.sol +0 -91
  314. package/contracts/instance/base/ModuleBase.sol +0 -57
  315. package/contracts/instance/module/access/Access.sol +0 -149
  316. package/contracts/instance/module/access/IAccess.sol +0 -53
  317. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  318. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  319. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  320. package/contracts/instance/module/component/IComponent.sol +0 -28
  321. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  322. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  323. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  324. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  325. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  326. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  327. package/contracts/instance/module/risk/IRisk.sol +0 -26
  328. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  329. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  330. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  331. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  332. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  333. package/contracts/instance/service/DistributionService.sol +0 -59
  334. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  335. package/contracts/instance/service/IDistributionService.sol +0 -12
  336. package/contracts/instance/service/IPoolService.sol +0 -37
  337. package/contracts/instance/service/IProductService.sol +0 -107
  338. package/contracts/instance/service/PoolService.sol +0 -149
  339. package/contracts/instance/service/ProductService.sol +0 -509
  340. package/contracts/registry/IRegistryLinked.sol +0 -8
  341. package/contracts/registry/RegistryUpgradeable.sol +0 -416
  342. package/contracts/shared/IOwnable.sol +0 -6
  343. package/contracts/shared/Proxy.sol +0 -83
  344. package/contracts/shared/VersionableUpgradeable.sol +0 -108
  345. package/contracts/test/TestDistribution.sol +0 -21
  346. package/contracts/test/TestPool.sol +0 -25
  347. package/contracts/test/TestProduct.sol +0 -72
  348. package/contracts/types/ReferralId.sol +0 -48
@@ -1,157 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
- import {IRegistry} from "../../registry/IRegistry.sol";
7
- import {IInstance} from "../IInstance.sol";
8
-
9
- import {ITreasuryModule} from "../module/treasury/ITreasury.sol";
10
- import {TreasuryModule} from "../module/treasury/TreasuryModule.sol";
11
- import {IComponent, IComponentModule} from "../module/component/IComponent.sol";
12
- import {IBaseComponent} from "../../components/IBaseComponent.sol";
13
- import {IPoolComponent} from "../../components/IPoolComponent.sol";
14
- import {IKeyValueStore} from "../../instance/base/IKeyValueStore.sol";
15
- import {IVersionable} from "../../shared/IVersionable.sol";
16
- import {Versionable} from "../../shared/Versionable.sol";
17
-
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";
20
- import {StateId, ACTIVE, PAUSED} from "../../types/StateId.sol";
21
- import {Key32} from "../../types/Key32.sol";
22
- import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
23
- import {Fee} from "../../types/Fee.sol";
24
- import {Version, VersionLib} from "../../types/Version.sol";
25
-
26
- import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
27
- import {IPoolComponent} from "../../components/IPoolComponent.sol";
28
- import {IProductComponent} from "../../components/IProductComponent.sol";
29
- import {ServiceBase} from "../base/ServiceBase.sol";
30
- import {IComponentOwnerService} from "./IComponentOwnerService.sol";
31
-
32
- contract ComponentOwnerService is
33
- ServiceBase,
34
- IComponentOwnerService
35
- {
36
- using NftIdLib for NftId;
37
-
38
- string public constant NAME = "ComponentOwnerService";
39
-
40
- modifier onlyRegisteredComponent(IBaseComponent component) {
41
- NftId nftId = _registry.getNftId(address(component));
42
- require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
43
- _;
44
- }
45
-
46
- constructor(
47
- address registry,
48
- NftId registryNftId
49
- ) ServiceBase(registry, registryNftId) // solhint-disable-next-line no-empty-blocks
50
- {
51
-
52
- }
53
-
54
- function getVersion()
55
- public
56
- pure
57
- virtual override (IVersionable, Versionable)
58
- returns(Version)
59
- {
60
- return VersionLib.toVersion(3,0,0);
61
- }
62
-
63
- function getName() external pure override returns(string memory name) {
64
- return NAME;
65
- }
66
-
67
- function getRoleForType(
68
- ObjectType cType
69
- ) public pure override returns (RoleId role) {
70
- if (cType == PRODUCT()) {
71
- return PRODUCT_OWNER_ROLE();
72
- }
73
- if (cType == POOL()) {
74
- return POOL_OWNER_ROLE();
75
- }
76
- if (cType == DISTRIBUTION()) {
77
- return DISTRIBUTION_OWNER_ROLE();
78
- }
79
- if (cType == ORACLE()) {
80
- return ORACLE_OWNER_ROLE();
81
- }
82
- }
83
-
84
- function register(
85
- IBaseComponent component
86
- ) external override returns (NftId nftId) {
87
- address initialOwner = component.getOwner();
88
- require(
89
- msg.sender == address(component),
90
- "ERROR:COS-003:NOT_COMPONENT"
91
- );
92
-
93
- IInstance instance = component.getInstance();
94
- ObjectType objectType = component.getType();
95
- RoleId typeRole = getRoleForType(objectType);
96
- require(
97
- instance.hasRole(typeRole, initialOwner),
98
- "ERROR:CMP-004:TYPE_ROLE_MISSING"
99
- );
100
-
101
- nftId = _registry.register(address(component));
102
- IERC20Metadata token = component.getToken();
103
-
104
- instance.registerComponent(
105
- nftId,
106
- token,
107
- component.getWallet());
108
-
109
- // component type specific registration actions
110
- if (component.getType() == PRODUCT()) {
111
- IProductComponent product = IProductComponent(address(component));
112
-
113
- NftId poolNftId = product.getPoolNftId();
114
- require(poolNftId.gtz(), "ERROR:CMP-005:POOL_UNKNOWN");
115
- IPoolComponent pool = IPoolComponent(_registry.getObjectInfo(poolNftId).objectAddress);
116
-
117
- NftId distributionNftId = product.getDistributionNftId();
118
- IDistributionComponent distribution = IDistributionComponent(_registry.getObjectInfo(distributionNftId).objectAddress);
119
-
120
- // register with tresury
121
- instance.registerProductSetup(
122
- product,
123
- pool,
124
- distribution
125
- );
126
- } else if (component.getType() == POOL()) {
127
- IPoolComponent pool = IPoolComponent(address(component));
128
-
129
- // register with pool
130
- instance.registerPool(
131
- nftId,
132
- pool.isVerifying(),
133
- pool.getCollateralizationLevel());
134
- }
135
- // TODO add compensation
136
- }
137
-
138
- function lock(
139
- IBaseComponent component
140
- ) external override onlyRegisteredComponent(component) {
141
- // TODO use msg.sender to get component and get instance via registered parent nft id
142
- IInstance instance = component.getInstance();
143
- NftId nftId = component.getNftId();
144
- Key32 key = nftId.toKey32(COMPONENT());
145
- instance.updateState(key, PAUSED());
146
- }
147
-
148
- function unlock(
149
- IBaseComponent component
150
- ) external override onlyRegisteredComponent(component) {
151
- // TODO use msg.sender to get component and get instance via registered parent nft id
152
- IInstance instance = component.getInstance();
153
- NftId nftId = component.getNftId();
154
- Key32 key = nftId.toKey32(COMPONENT());
155
- instance.updateState(key, ACTIVE());
156
- }
157
- }
@@ -1,59 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../../registry/IRegistry.sol";
5
- import {IInstance} from "../../instance/IInstance.sol";
6
- import {ITreasury} from "../../instance/module/treasury/ITreasury.sol";
7
-
8
- import {NftId} from "../../types/NftId.sol";
9
- import {Fee} from "../../types/Fee.sol";
10
- import {DISTRIBUTION} from "../../types/ObjectType.sol";
11
- import {Version, VersionLib} from "../../types/Version.sol";
12
-
13
- import {IVersionable} from "../../shared/IVersionable.sol";
14
- import {Versionable} from "../../shared/Versionable.sol";
15
-
16
- import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
17
- import {IDistributionService} from "./IDistributionService.sol";
18
-
19
- contract DistributionService is
20
- ComponentServiceBase,
21
- IDistributionService
22
- {
23
- string public constant NAME = "DistributionService";
24
-
25
- constructor(
26
- address registry,
27
- NftId registryNftId
28
- ) ComponentServiceBase(registry, registryNftId) // solhint-disable-next-line no-empty-blocks
29
- {
30
- _registerInterface(type(IDistributionService).interfaceId);
31
- }
32
-
33
- function getVersion()
34
- public
35
- pure
36
- virtual override (IVersionable, Versionable)
37
- returns(Version)
38
- {
39
- return VersionLib.toVersion(3,0,0);
40
- }
41
-
42
- function getName() external pure override returns(string memory name) {
43
- return NAME;
44
- }
45
-
46
- function setFees(
47
- Fee memory distributionFee
48
- )
49
- external
50
- override
51
- {
52
- (IRegistry.ObjectInfo memory distributionInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
53
-
54
- NftId productNftId = instance.getProductNftId(distributionInfo.nftId);
55
- ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productNftId);
56
- treasuryInfo.distributionFee = distributionFee;
57
- instance.setTreasuryInfo(productNftId, treasuryInfo);
58
- }
59
- }
@@ -1,22 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType} from "../../types/ObjectType.sol";
6
- import {RoleId} from "../../types/RoleId.sol";
7
- import {IBaseComponent} from "../../components/IBaseComponent.sol";
8
- import {IService} from "../base/IService.sol";
9
-
10
- // TODO rename to registry service
11
- interface IComponentOwnerService is IService {
12
-
13
- function register(IBaseComponent component) external returns(NftId componentNftId);
14
-
15
- // TODO move to product/pool services
16
- function lock(IBaseComponent component) external;
17
-
18
- // TODO move to product/pool services
19
- function unlock(IBaseComponent component) external;
20
-
21
- function getRoleForType(ObjectType cType) external pure returns (RoleId role);
22
- }
@@ -1,12 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId} from "../../types/NftId.sol";
5
- import {Fee} from "../../types/Fee.sol";
6
- import {IService} from "../base/IService.sol";
7
-
8
- interface IDistributionService is IService {
9
- function setFees(
10
- Fee memory distributionFee
11
- ) external;
12
- }
@@ -1,37 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId} from "../../types/NftId.sol";
5
- import {Fee} from "../../types/Fee.sol";
6
- import {IService} from "../base/IService.sol";
7
-
8
- interface IPoolService is IService {
9
- function setFees(
10
- Fee memory poolFee,
11
- Fee memory stakingFee,
12
- Fee memory performanceFee
13
- ) external;
14
-
15
- function createBundle(
16
- address owner,
17
- Fee memory fee,
18
- uint256 amount,
19
- uint256 lifetime,
20
- bytes calldata filter
21
- ) external returns(NftId bundleNftId);
22
-
23
- function setBundleFee(
24
- NftId bundleNftId,
25
- Fee memory fee
26
- ) external;
27
-
28
- // function fundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
29
-
30
- // function defundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
31
-
32
- // function lockBundle(NftId bundleNftId) external;
33
-
34
- // function unlockBundle(NftId bundleNftId) external;
35
-
36
- // function closeBundle(NftId bundleNftId) external;
37
- }
@@ -1,107 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRisk} from "../module/risk/IRisk.sol";
5
- import {IService} from "../base/IService.sol";
6
-
7
- import {NftId} from "../../types/NftId.sol";
8
- import {ReferralId} from "../../types/ReferralId.sol";
9
- import {RiskId} from "../../types/RiskId.sol";
10
- import {StateId} from "../../types/StateId.sol";
11
- import {Timestamp} from "../../types/Timestamp.sol";
12
- import {UFixed} from "../../types/UFixed.sol";
13
- import {Fee} from "../../types/Fee.sol";
14
-
15
- interface IProductService is IService {
16
- function setFees(
17
- Fee memory productFee,
18
- Fee memory processingFee
19
- ) external;
20
-
21
- function createRisk(
22
- RiskId riskId,
23
- bytes memory data
24
- ) external;
25
-
26
-
27
- function setRiskInfo(
28
- RiskId riskId,
29
- IRisk.RiskInfo memory data
30
- ) external;
31
-
32
-
33
- function updateRiskState(
34
- RiskId riskId,
35
- StateId state
36
- ) external;
37
-
38
-
39
- function calculatePremium(
40
- RiskId riskId,
41
- uint256 sumInsuredAmount,
42
- uint256 lifetime,
43
- bytes memory applicationData,
44
- NftId bundleNftId,
45
- ReferralId referralId
46
- )
47
- external
48
- view
49
- returns (
50
- uint256 premiumAmount,
51
- uint256 productFeeAmount,
52
- uint256 poolFeeAmount,
53
- uint256 bundleFeeAmount,
54
- uint256 distributionFeeAmount
55
- );
56
-
57
-
58
- function createApplication(
59
- address applicationOwner,
60
- RiskId riskId,
61
- uint256 sumInsuredAmount,
62
- uint256 lifetime,
63
- bytes memory applicationData,
64
- NftId bundleNftId,
65
- ReferralId referralId
66
- ) external returns (NftId nftId);
67
-
68
- /**
69
- * @dev revokes the application represented by {policyNftId}.
70
- * an application can only be revoked in applied state.
71
- * only the application holder may revoke an application.
72
- */
73
- function revoke(NftId policyNftId) external;
74
-
75
- /**
76
- * @dev underwrites the policy represented by {policyNftId}.
77
- * optionally collects premiums and activates the policy.
78
- * - premium payment is only attempted if requirePremiumPayment is set to true
79
- * - activation is only done if activateAt is a non-zero timestamp
80
- */
81
- function underwrite(
82
- NftId policyNftId,
83
- bool requirePremiumPayment,
84
- Timestamp activateAt
85
- ) external;
86
-
87
- // function decline(uint256 nftId) external;
88
- // function expire(uint256 nftId) external;
89
-
90
- function collectPremium(NftId policyNftId, Timestamp activateAt) external;
91
-
92
- function activate(NftId policyNftId, Timestamp activateAt) external;
93
-
94
-
95
- function close(NftId nftId) external;
96
-
97
- // function createClaim(uint256 nftId, uint256 claimAmount) external;
98
- // function confirmClaim(uint256 nftId, uint256 claimId, uint256 claimAmount) external;
99
- // function declineClaim(uint256 nftId, uint256 claimId) external;
100
- // function closeClaim(uint256 nftId, uint256 claimId) external;
101
-
102
- function calculateRequiredCollateral(
103
- UFixed collateralizationLevel,
104
- uint256 sumInsuredAmount
105
- ) external pure returns(uint256 collateralAmount);
106
-
107
- }
@@ -1,149 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../../registry/IRegistry.sol";
5
- import {IInstance} from "../../instance/IInstance.sol";
6
- import {IBundle} from "../../instance/module/bundle/IBundle.sol";
7
- import {ITreasury, ITreasuryModule, TokenHandler} from "../../instance/module/treasury/ITreasury.sol";
8
-
9
- import {IVersionable} from "../../shared/IVersionable.sol";
10
- import {Versionable} from "../../shared/Versionable.sol";
11
-
12
- import {NftId, NftIdLib} from "../../types/NftId.sol";
13
- import {POOL, BUNDLE} from "../../types/ObjectType.sol";
14
- import {Fee} from "../../types/Fee.sol";
15
- import {Version, VersionLib} from "../../types/Version.sol";
16
-
17
- import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
18
- import {IPoolService} from "./IPoolService.sol";
19
-
20
-
21
- contract PoolService is ComponentServiceBase, IPoolService {
22
- using NftIdLib for NftId;
23
-
24
- string public constant NAME = "PoolService";
25
-
26
- constructor(
27
- address registry,
28
- NftId registryNftId
29
- ) ComponentServiceBase(registry, registryNftId) // solhint-disable-next-line no-empty-blocks
30
- {
31
- _registerInterface(type(IPoolService).interfaceId);
32
- }
33
-
34
- function getVersion()
35
- public
36
- pure
37
- virtual override (IVersionable, Versionable)
38
- returns(Version)
39
- {
40
- return VersionLib.toVersion(3,0,0);
41
- }
42
-
43
- function getName() external pure override returns(string memory name) {
44
- return NAME;
45
- }
46
-
47
- function setFees(
48
- Fee memory poolFee,
49
- Fee memory stakingFee,
50
- Fee memory performanceFee
51
- )
52
- external
53
- override
54
- {
55
- (IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
56
-
57
- NftId productNftId = instance.getProductNftId(poolInfo.nftId);
58
- ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productNftId);
59
- treasuryInfo.poolFee = poolFee;
60
- treasuryInfo.stakingFee = stakingFee;
61
- treasuryInfo.performanceFee = performanceFee;
62
- instance.setTreasuryInfo(productNftId, treasuryInfo);
63
- }
64
-
65
- function createBundle(
66
- address owner,
67
- Fee memory fee,
68
- uint256 stakingAmount,
69
- uint256 lifetime,
70
- bytes calldata filter
71
- )
72
- external
73
- override
74
- returns(NftId bundleNftId)
75
- {
76
- (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
77
-
78
- // register bundle with registry
79
- NftId poolNftId = info.nftId;
80
- bundleNftId = _registry.registerObjectForInstance(
81
- poolNftId,
82
- BUNDLE(),
83
- owner,
84
- "");
85
-
86
- // create bundle info in instance
87
- instance.createBundleInfo(
88
- bundleNftId,
89
- poolNftId,
90
- fee,
91
- stakingAmount,
92
- lifetime,
93
- filter);
94
-
95
- // add bundle to pool in instance
96
- instance.addBundleToPool(
97
- bundleNftId,
98
- poolNftId,
99
- stakingAmount);
100
-
101
- // collect capital
102
- _processStakingByTreasury(
103
- instance,
104
- poolNftId,
105
- bundleNftId,
106
- stakingAmount);
107
-
108
- // TODO add logging
109
- }
110
-
111
- function setBundleFee(
112
- NftId bundleNftId,
113
- Fee memory fee
114
- )
115
- external
116
- override
117
- {
118
- (IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
119
- IBundle.BundleInfo memory bundleInfo = instance.getBundleInfo(bundleNftId);
120
- require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
121
- require(poolInfo.nftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
122
- bundleInfo.fee = fee;
123
- instance.setBundleInfo(bundleNftId, bundleInfo);
124
- }
125
-
126
-
127
- function _processStakingByTreasury(
128
- IInstance instance,
129
- NftId poolNftId,
130
- NftId bundleNftId,
131
- uint256 stakingAmount
132
- )
133
- internal
134
- {
135
- // process token transfer(s)
136
- if(stakingAmount > 0) {
137
- NftId productNftId = instance.getProductNftId(poolNftId);
138
- TokenHandler tokenHandler = instance.getTokenHandler(productNftId);
139
- address bundleOwner = _registry.getOwner(bundleNftId);
140
- address poolWallet = instance.getComponentWallet(poolNftId);
141
-
142
- tokenHandler.transfer(
143
- bundleOwner,
144
- poolWallet,
145
- stakingAmount
146
- );
147
- }
148
- }
149
- }