@etherisc/gif-next 0.0.2-efdb520-159 → 0.0.2-f02157b-803

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 (361) hide show
  1. package/README.md +176 -11
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +168 -28
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +610 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +121 -28
  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 +447 -60
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +519 -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/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  45. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  46. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  47. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1119 -0
  48. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +240 -1911
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{service/ServiceBase.sol/ServiceBase.json → IInstanceService.sol/IInstanceService.json} +187 -66
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +2329 -1158
  56. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  58. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1257 -0
  60. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +703 -0
  62. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +424 -0
  64. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +481 -0
  66. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  68. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  70. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  72. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/{service → base}/IService.sol/IService.json +180 -59
  74. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  76. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  78. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{InstanceBase.sol/InstanceBase.json → base/ServiceBase.sol/ServiceBase.json} +225 -70
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  86. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  88. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IRisk.sol/IRisk.json} +2 -2
  90. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → ISetup.sol/ISetup.json} +2 -2
  92. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  94. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +393 -85
  96. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +182 -80
  98. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → IDistributionService.sol/IDistributionService.json} +209 -63
  100. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +240 -55
  102. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +330 -56
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +190 -51
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  109. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +872 -0
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  111. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  112. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/Registry.sol/Registry.json +380 -139
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1261 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +504 -0
  118. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  119. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  120. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  122. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  123. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  125. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  126. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +60 -19
  128. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  130. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  131. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  132. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  134. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  135. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  136. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  137. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  138. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  139. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +83 -19
  140. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  141. package/artifacts/contracts/test/TestFee.sol/TestFee.json +30 -6
  142. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  144. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
  146. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestService.sol/TestService.json +277 -84
  148. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  150. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +14 -18
  152. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +106 -50
  154. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  155. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  156. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  157. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  160. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  161. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  162. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  163. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  164. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  165. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  167. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  168. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  169. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  170. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  171. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  173. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  175. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  177. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  179. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  181. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  183. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  185. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  187. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Version.sol/VersionLib.json +101 -2
  189. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  191. package/contracts/components/BaseComponent.sol +20 -23
  192. package/contracts/components/Distribution.sol +166 -0
  193. package/contracts/components/IBaseComponent.sol +8 -3
  194. package/contracts/components/IDistributionComponent.sol +43 -0
  195. package/contracts/components/IPoolComponent.sol +14 -9
  196. package/contracts/components/IProductComponent.sol +25 -9
  197. package/contracts/components/Pool.sol +115 -30
  198. package/contracts/components/Product.sol +212 -32
  199. package/contracts/experiment/cloning/Cloner.sol +47 -0
  200. package/contracts/instance/AccessManagedSimple.sol +114 -0
  201. package/contracts/instance/AccessManagerSimple.sol +682 -0
  202. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  203. package/contracts/instance/IInstance.sol +17 -39
  204. package/contracts/instance/IInstanceService.sol +17 -0
  205. package/contracts/instance/Instance.sol +420 -46
  206. package/contracts/instance/InstanceAccessManager.sol +288 -0
  207. package/contracts/instance/InstanceReader.sol +280 -0
  208. package/contracts/instance/InstanceService.sol +102 -0
  209. package/contracts/instance/InstanceServiceManager.sol +56 -0
  210. package/contracts/instance/{service → base}/ComponentServiceBase.sol +13 -5
  211. package/contracts/instance/base/IInstanceBase.sol +23 -0
  212. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  213. package/contracts/instance/base/ILifecycle.sol +30 -0
  214. package/contracts/instance/base/KeyValueStore.sol +172 -0
  215. package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +51 -40
  216. package/contracts/instance/base/ServiceBase.sol +44 -0
  217. package/contracts/instance/module/IAccess.sol +38 -0
  218. package/contracts/instance/module/IBundle.sol +19 -0
  219. package/contracts/instance/module/IDistribution.sol +39 -0
  220. package/contracts/instance/module/IPolicy.sol +45 -0
  221. package/contracts/instance/module/IRisk.sol +11 -0
  222. package/contracts/instance/module/ISetup.sol +43 -0
  223. package/contracts/instance/module/ITreasury.sol +23 -0
  224. package/contracts/instance/service/ComponentOwnerService.sol +245 -102
  225. package/contracts/instance/service/IComponentOwnerService.sol +1 -3
  226. package/contracts/instance/service/IDistributionService.sol +12 -0
  227. package/contracts/instance/service/IPoolService.sol +8 -1
  228. package/contracts/instance/service/IProductService.sol +56 -7
  229. package/contracts/registry/ChainNft.sol +80 -37
  230. package/contracts/registry/IRegistry.sol +28 -28
  231. package/contracts/registry/IRegistryService.sol +35 -0
  232. package/contracts/registry/ITransferInterceptor.sol +6 -0
  233. package/contracts/registry/Registry.sol +315 -273
  234. package/contracts/registry/RegistryService.sol +439 -0
  235. package/contracts/registry/RegistryServiceManager.sol +64 -0
  236. package/contracts/shared/ContractDeployerLib.sol +72 -0
  237. package/contracts/shared/INftOwnable.sol +22 -0
  238. package/contracts/shared/IRegisterable.sol +8 -15
  239. package/contracts/shared/IVersionable.sol +56 -12
  240. package/contracts/shared/NftOwnable.sol +136 -0
  241. package/contracts/shared/ProxyManager.sol +94 -0
  242. package/contracts/shared/Registerable.sol +62 -59
  243. package/contracts/shared/TokenHandler.sol +27 -0
  244. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  245. package/contracts/shared/Versionable.sol +112 -57
  246. package/contracts/test/TestFee.sol +4 -4
  247. package/contracts/test/TestRegisterable.sol +5 -6
  248. package/contracts/test/TestRoleId.sol +2 -2
  249. package/contracts/test/TestService.sol +7 -16
  250. package/contracts/test/TestVersion.sol +4 -7
  251. package/contracts/test/TestVersionable.sol +2 -5
  252. package/contracts/test/Usdc.sol +26 -0
  253. package/contracts/types/DistributorType.sol +55 -0
  254. package/contracts/types/Fee.sol +44 -20
  255. package/contracts/types/Key32.sol +50 -0
  256. package/contracts/types/NftId.sol +16 -1
  257. package/contracts/types/NumberId.sol +52 -0
  258. package/contracts/types/ObjectType.sol +51 -14
  259. package/contracts/types/Referral.sol +85 -0
  260. package/contracts/types/RiskId.sol +43 -0
  261. package/contracts/types/RoleId.sol +57 -11
  262. package/contracts/types/StateId.sol +8 -2
  263. package/contracts/types/Timestamp.sol +7 -3
  264. package/contracts/types/UFixed.sol +144 -25
  265. package/contracts/types/Version.sol +38 -25
  266. package/package.json +4 -3
  267. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  268. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  269. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  270. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  271. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  272. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  273. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  274. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  275. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  276. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  277. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  278. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
  279. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  280. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  281. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
  282. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  283. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  284. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  285. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  286. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  287. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  288. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  289. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  290. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  291. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  292. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  293. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  294. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  295. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  296. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  297. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  298. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  299. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  300. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  301. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  302. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  303. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +0 -4
  304. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +0 -10
  305. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
  306. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.json +0 -10
  307. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  308. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  309. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -538
  310. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  311. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  312. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  313. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -538
  314. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  315. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  316. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  317. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -499
  318. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  319. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -685
  320. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  321. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  322. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  323. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  324. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  325. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  326. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  327. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  328. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  329. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  330. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  331. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  332. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  333. package/contracts/experiment/statemachine/README.md +0 -112
  334. package/contracts/instance/IInstanceLinked.sol +0 -8
  335. package/contracts/instance/IServiceLinked.sol +0 -12
  336. package/contracts/instance/InstanceBase.sol +0 -74
  337. package/contracts/instance/module/access/Access.sol +0 -149
  338. package/contracts/instance/module/access/IAccess.sol +0 -53
  339. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  340. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  341. package/contracts/instance/module/component/ComponentModule.sol +0 -104
  342. package/contracts/instance/module/component/IComponent.sol +0 -53
  343. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  344. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  345. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  346. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  347. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  348. package/contracts/instance/module/product/IProductModule.sol +0 -6
  349. package/contracts/instance/module/product/ProductModule.sol +0 -8
  350. package/contracts/instance/module/treasury/ITreasury.sol +0 -104
  351. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  352. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -148
  353. package/contracts/instance/service/PoolService.sol +0 -98
  354. package/contracts/instance/service/ProductService.sol +0 -358
  355. package/contracts/instance/service/ServiceBase.sol +0 -39
  356. package/contracts/registry/IChainNft.sol +0 -21
  357. package/contracts/registry/IRegistryLinked.sol +0 -8
  358. package/contracts/shared/IOwnable.sol +0 -6
  359. package/contracts/test/TestPool.sol +0 -22
  360. package/contracts/test/TestProduct.sol +0 -44
  361. /package/contracts/instance/{service → base}/IService.sol +0 -0
@@ -1,60 +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 "../../IInstance.sol";
6
- import {IProductService} from "../../service/IProductService.sol";
7
- import {NftId} from "../../../types/NftId.sol";
8
- import {StateId} from "../../../types/StateId.sol";
9
- import {Timestamp} from "../../../types/Timestamp.sol";
10
- import {Blocknumber} from "../../../types/Blocknumber.sol";
11
-
12
- // TODO check if there is value to introuce IContract and let IPolicy derive from IContract
13
- interface IPolicy {
14
- struct PolicyInfo {
15
- NftId nftId;
16
- NftId productNftId;
17
- NftId bundleNftId;
18
- address beneficiary;
19
- StateId state; // applied, withdrawn, rejected, active, closed
20
- uint256 sumInsuredAmount;
21
- uint256 premiumAmount;
22
- uint256 premiumPaidAmount;
23
- uint256 lifetime;
24
- bytes data;
25
- Timestamp createdAt;
26
- Timestamp activatedAt; // time of underwriting
27
- Timestamp expiredAt; // no new claims (activatedAt + lifetime)
28
- Timestamp closedAt; // no locked capital
29
- Blocknumber updatedIn; // write log entries in a way to support backtracking of all state changes
30
- }
31
- }
32
-
33
- interface IPolicyModule is IPolicy {
34
- function createApplication(
35
- NftId productNftId,
36
- NftId policyNftId,
37
- uint256 sumInsuredAmount,
38
- uint256 premiumAmount,
39
- uint256 lifetime,
40
- NftId bundleNftId
41
- ) external;
42
-
43
- function setPolicyInfo(PolicyInfo memory policyInfo) external;
44
-
45
- // function underwrite(NftId nftId) external;
46
-
47
- // function processPremium(NftId nftId, uint256 amount) external;
48
-
49
- // function activate(NftId nftId, Timestamp activateAt) external;
50
-
51
- function getPolicyInfo(
52
- NftId nftId
53
- ) external view returns (PolicyInfo memory info);
54
-
55
- // repeat registry linked signature
56
- function getRegistry() external view returns (IRegistry registry);
57
-
58
- // repeat service linked signature to avoid linearization issues
59
- function getProductService() external returns(IProductService);
60
- }
@@ -1,84 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../../../registry/IRegistry.sol";
5
-
6
- import {LifecycleModule} from "../../module/lifecycle/LifecycleModule.sol";
7
- import {IProductService} from "../../service/IProductService.sol";
8
- import {IPolicy, IPolicyModule} from "./IPolicy.sol";
9
- import {ObjectType, POLICY} from "../../../types/ObjectType.sol";
10
- import {APPLIED, ACTIVE, UNDERWRITTEN} from "../../../types/StateId.sol";
11
- import {NftId, NftIdLib} from "../../../types/NftId.sol";
12
- import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
13
- import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
14
-
15
- import {LifecycleModule} from "../../module/lifecycle/LifecycleModule.sol";
16
-
17
- abstract contract PolicyModule is IPolicyModule {
18
- using NftIdLib for NftId;
19
-
20
- mapping(NftId nftId => PolicyInfo info) private _policyInfo;
21
-
22
- LifecycleModule private _lifecycleModule;
23
-
24
- // TODO find a better place to avoid dupliation
25
- modifier onlyProductService2() {
26
- require(
27
- msg.sender == address(this.getProductService()),
28
- "ERROR:POL-001:NOT_PRODUCT_SERVICE"
29
- );
30
- _;
31
- }
32
-
33
- constructor() {
34
- _lifecycleModule = LifecycleModule(address(this));
35
- }
36
-
37
- function createApplication(
38
- NftId productNftId,
39
- NftId policyNftId,
40
- uint256 sumInsuredAmount,
41
- uint256 premiumAmount,
42
- uint256 lifetime,
43
- NftId bundleNftId
44
- )
45
- external
46
- onlyProductService2
47
- override
48
- {
49
- _policyInfo[policyNftId] = PolicyInfo(
50
- policyNftId,
51
- productNftId,
52
- bundleNftId,
53
- address(0), // beneficiary = policy nft holder
54
- _lifecycleModule.getInitialState(POLICY()),
55
- sumInsuredAmount,
56
- premiumAmount,
57
- 0, // premium paid amount
58
- lifetime,
59
- "", // data
60
- blockTimestamp(), // createdAt
61
- zeroTimestamp(), // activatedAt
62
- zeroTimestamp(), // expiredAt
63
- zeroTimestamp(), // closedAt
64
- blockNumber() // updatedIn
65
- );
66
-
67
- // TODO add logging
68
- }
69
-
70
- function setPolicyInfo(PolicyInfo memory policyInfo)
71
- external
72
- override
73
- onlyProductService2
74
- {
75
- _policyInfo[policyInfo.nftId] = policyInfo;
76
- }
77
-
78
- function getPolicyInfo(
79
- NftId nftId
80
- ) external view returns (PolicyInfo memory info) {
81
- return _policyInfo[nftId];
82
- }
83
-
84
- }
@@ -1,41 +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 {NftId} from "../../../types/NftId.sol";
6
- import {UFixed} from "../../../types/UFixed.sol";
7
- import {IProductService} from "../../service/IProductService.sol";
8
- import {IPoolService} from "../../service/IPoolService.sol";
9
-
10
- interface IPool {
11
- struct PoolInfo {
12
- NftId nftId;
13
- bool isVerifying;
14
- UFixed collateralizationLevel;
15
- }
16
- }
17
-
18
- interface IPoolModule is IPool {
19
-
20
- function registerPool(
21
- NftId poolNftId,
22
- bool isVerifying,
23
- UFixed collateralizationLevel
24
- ) external;
25
-
26
- function addBundleToPool(
27
- NftId bundleNftId,
28
- NftId poolNftId,
29
- uint256 amount
30
- ) external;
31
-
32
- function getPoolInfo(
33
- NftId nftId
34
- ) external view returns (PoolInfo memory info);
35
-
36
- function getBundleCount(NftId poolNftId) external view returns (uint256 bundleCount);
37
- function getBundleNftId(NftId poolNftId, uint256 index) external view returns (NftId bundleNftId);
38
-
39
- // repeat service linked signatures to avoid linearization issues
40
- function getPoolService() external returns(IPoolService);
41
- }
@@ -1,87 +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 {IProductService} from "../../service/IProductService.sol";
6
- import {IPoolService} from "../../service/IPoolService.sol";
7
- import {IPolicy, IPolicyModule} from "../../module/policy/IPolicy.sol";
8
- import {ITreasuryModule} from "../../module/treasury/ITreasury.sol";
9
-
10
- import {NftId} from "../../../types/NftId.sol";
11
- import {LibNftIdSet} from "../../../types/NftIdSet.sol";
12
- import {StateId, APPLIED} from "../../../types/StateId.sol";
13
- import {UFixed} from "../../../types/UFixed.sol";
14
-
15
- import {IPoolModule} from "./IPoolModule.sol";
16
-
17
- abstract contract PoolModule is
18
- IPoolModule
19
- {
20
- using LibNftIdSet for LibNftIdSet.Set;
21
-
22
- mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
23
- mapping(NftId poolNftId => LibNftIdSet.Set bundles) private _bundlesForPool;
24
-
25
- modifier poolServiceCallingPool() {
26
- require(
27
- msg.sender == address(this.getPoolService()),
28
- "ERROR:PL-001:NOT_POOL_SERVICE"
29
- );
30
- _;
31
- }
32
-
33
- function registerPool(
34
- NftId nftId,
35
- bool isVerifying,
36
- UFixed collateralizationRate
37
- )
38
- public
39
- override
40
- {
41
- require(
42
- _poolInfo[nftId].nftId.eqz(),
43
- "ERROR:PL-010:ALREADY_CREATED");
44
-
45
- _poolInfo[nftId] = PoolInfo(
46
- nftId,
47
- isVerifying,
48
- collateralizationRate
49
- );
50
-
51
- // TODO add logging
52
- }
53
-
54
- function addBundleToPool(
55
- NftId bundleNftId,
56
- NftId poolNftId,
57
- uint256 // amount
58
- )
59
- external
60
- override
61
- {
62
- LibNftIdSet.Set storage bundleSet = _bundlesForPool[poolNftId];
63
- require(
64
- !bundleSet.contains(bundleNftId),
65
- "ERROR:PL-020:BUNDLE_ALREADY_ADDED");
66
-
67
- bundleSet.add(bundleNftId);
68
- }
69
-
70
-
71
- function getPoolInfo(
72
- NftId nftId
73
- ) external view override returns (PoolInfo memory info) {
74
- info = _poolInfo[nftId];
75
- }
76
-
77
-
78
- function getBundleCount(NftId poolNftId) external view override returns (uint256 bundleCount) {
79
- return _bundlesForPool[poolNftId].getLength();
80
- }
81
-
82
-
83
- function getBundleNftId(NftId poolNftId, uint256 index) external view override returns (NftId bundleNftId) {
84
- return _bundlesForPool[poolNftId].getElementAt(index);
85
- }
86
-
87
- }
@@ -1,6 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- interface IProductModule
5
- {
6
- }
@@ -1,8 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IProductService} from "../../service/IProductService.sol";
5
- import {IProductModule} from "./IProductModule.sol";
6
-
7
- abstract contract ProductModule is IProductModule {
8
- }
@@ -1,104 +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 {NftId} from "../../../types/NftId.sol";
7
- import {UFixed} from "../../../types/UFixed.sol";
8
- import {Fee} from "../../../types/Fee.sol";
9
-
10
- import {TokenHandler} from "./TokenHandler.sol";
11
-
12
- interface ITreasury {
13
- // TODO add events
14
- // TODO add errors
15
-
16
- struct ProductSetup {
17
- NftId productNftId;
18
- NftId distributorNftId;
19
- NftId poolNftId;
20
- IERC20Metadata token;
21
- TokenHandler tokenHandler;
22
- address wallet;
23
- Fee policyFee;
24
- Fee processingFee;
25
- }
26
-
27
- struct DistributorSetup {
28
- NftId distributorNftId;
29
- address wallet;
30
- Fee commissionFees;
31
- }
32
-
33
- struct PoolSetup {
34
- NftId poolNftId;
35
- address wallet;
36
- Fee stakingFee;
37
- Fee performanceFee;
38
- }
39
- }
40
-
41
- interface ITreasuryModule is ITreasury {
42
-
43
- function registerProduct(
44
- NftId productNftId,
45
- NftId distributorNftId,
46
- NftId poolNftId,
47
- IERC20Metadata token,
48
- address wallet,
49
- Fee memory policyFee,
50
- Fee memory processingFee
51
- ) external;
52
-
53
- function setProductFees(
54
- NftId productNftId,
55
- Fee memory policyFee,
56
- Fee memory processingFee
57
- ) external;
58
-
59
- function registerPool(
60
- NftId poolNftId,
61
- address wallet,
62
- Fee memory stakingFee,
63
- Fee memory performanceFee
64
- ) external;
65
-
66
- function setPoolFees(
67
- NftId poolNftId,
68
- Fee memory stakingFee,
69
- Fee memory performanceFee
70
- ) external;
71
-
72
- function getTokenHandler(
73
- NftId productNftId
74
- ) external view returns (TokenHandler tokenHandler);
75
-
76
- function getProductSetup(
77
- NftId productNftId
78
- ) external view returns (ProductSetup memory setup);
79
-
80
- function getPoolSetup(
81
- NftId poolNftId
82
- ) external view returns (PoolSetup memory setup);
83
-
84
- function calculateFeeAmount(
85
- uint256 amount,
86
- Fee memory fee
87
- ) external pure returns (uint256 feeAmount, uint256 netAmount);
88
-
89
- function getFee(
90
- UFixed fractionalFee,
91
- uint256 fixedFee
92
- ) external pure returns (Fee memory fee);
93
-
94
- function getZeroFee() external pure returns (Fee memory fee);
95
-
96
- function getUFixed(
97
- uint256 a
98
- ) external pure returns (UFixed);
99
-
100
- function getUFixed(
101
- uint256 a,
102
- int8 exp
103
- ) external pure returns (UFixed);
104
- }
@@ -1,48 +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 {NftId} from "../../../types/NftId.sol";
7
-
8
- contract TokenHandler {
9
- NftId private _productNftId;
10
- IERC20Metadata private _token;
11
-
12
- constructor(
13
- NftId productNftId,
14
- address token
15
- )
16
- {
17
- _productNftId = productNftId;
18
- _token = IERC20Metadata(token);
19
- }
20
-
21
- // TODO add logging
22
- function transfer(
23
- address from,
24
- address to,
25
- uint256 amount
26
- )
27
- external // TODO add authz (only treasury/instance/product/pool/ service)
28
- {
29
- // TODO switch to oz safeTransferFrom
30
- _token.transferFrom(from, to, amount);
31
- }
32
-
33
- function getProductNftId()
34
- external
35
- view
36
- returns(NftId)
37
- {
38
- return _productNftId;
39
- }
40
-
41
- function getToken()
42
- external
43
- view
44
- returns(IERC20Metadata)
45
- {
46
- return _token;
47
- }
48
- }
@@ -1,148 +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 {NftId} from "../../../types/NftId.sol";
7
- import {Fee, feeIsZero, toFee, zeroFee} from "../../../types/Fee.sol";
8
- import {UFixed, UFixedMathLib} from "../../../types/UFixed.sol";
9
- import {TokenHandler} from "./TokenHandler.sol";
10
- import {ITreasuryModule} from "./ITreasury.sol";
11
-
12
- abstract contract TreasuryModule is ITreasuryModule {
13
- mapping(NftId productNftId => ProductSetup setup) private _productSetup;
14
- mapping(NftId distributorNftId => DistributorSetup setup)
15
- private _distributorSetup;
16
- mapping(NftId poolNftId => PoolSetup setup) private _poolSetup;
17
-
18
- function registerProduct(
19
- NftId productNftId,
20
- NftId distributorNftId,
21
- NftId poolNftId,
22
- IERC20Metadata token,
23
- address wallet,
24
- Fee memory policyFee,
25
- Fee memory processingFee
26
- ) external override // TODO add authz (only component module)
27
- {
28
- // TODO add validation
29
-
30
- // deploy product specific handler contract
31
- TokenHandler tokenHandler = new TokenHandler(productNftId, address(token));
32
-
33
- _productSetup[productNftId] = ProductSetup(
34
- productNftId,
35
- distributorNftId,
36
- poolNftId,
37
- token,
38
- tokenHandler,
39
- wallet,
40
- policyFee,
41
- processingFee
42
- );
43
-
44
- // TODO add logging
45
- }
46
-
47
- function setProductFees(
48
- NftId productNftId,
49
- Fee memory policyFee,
50
- Fee memory processingFee
51
- ) external override // TODO add authz (only component owner service)
52
- {
53
- // TODO add validation
54
-
55
- ProductSetup storage setup = _productSetup[productNftId];
56
- setup.policyFee = policyFee;
57
- setup.processingFee = processingFee;
58
-
59
- // TODO add logging
60
- }
61
-
62
- function registerPool(
63
- NftId poolNftId,
64
- address wallet,
65
- Fee memory stakingFee,
66
- Fee memory performanceFee
67
- ) external override // TODO add authz (only component module)
68
- {
69
- // TODO add validation
70
-
71
- _poolSetup[poolNftId] = PoolSetup(
72
- poolNftId,
73
- wallet,
74
- stakingFee,
75
- performanceFee
76
- );
77
-
78
- // TODO add logging
79
- }
80
-
81
- function setPoolFees(
82
- NftId poolNftId,
83
- Fee memory stakingFee,
84
- Fee memory performanceFee
85
- ) external override // TODO add authz (only component owner service)
86
- {
87
- // TODO add validation
88
-
89
- PoolSetup storage setup = _poolSetup[poolNftId];
90
- setup.stakingFee = stakingFee;
91
- setup.performanceFee = performanceFee;
92
-
93
- // TODO add logging
94
- }
95
-
96
- function getTokenHandler(
97
- NftId productNftId
98
- ) external view override returns (TokenHandler tokenHandler) {
99
- return _productSetup[productNftId].tokenHandler;
100
- }
101
-
102
- function getProductSetup(
103
- NftId productNftId
104
- ) external view override returns (ProductSetup memory setup) {
105
- return _productSetup[productNftId];
106
- }
107
-
108
- function getPoolSetup(
109
- NftId poolNftId
110
- ) external view override returns (PoolSetup memory setup) {
111
- return _poolSetup[poolNftId];
112
- }
113
-
114
- function calculateFeeAmount(
115
- uint256 amount,
116
- Fee memory fee
117
- ) public pure override returns (uint256 feeAmount, uint256 netAmount) {
118
- UFixed fractionalAmount = UFixedMathLib.toUFixed(amount) *
119
- fee.fractionalFee;
120
- feeAmount = fractionalAmount.toInt() + fee.fixedFee;
121
- netAmount = amount - feeAmount;
122
- }
123
-
124
- function getFee(
125
- UFixed fractionalFee,
126
- uint256 fixedFee
127
- ) external pure override returns (Fee memory fee) {
128
- return toFee(fractionalFee, fixedFee);
129
- }
130
-
131
- function getZeroFee() external pure override returns (Fee memory fee) {
132
- return zeroFee();
133
- }
134
-
135
- function getUFixed(
136
- uint256 a
137
- ) external pure override returns (UFixed) {
138
- return UFixedMathLib.toUFixed(a);
139
- }
140
-
141
- function getUFixed(
142
- uint256 a,
143
- int8 exp
144
- ) external pure returns (UFixed)
145
- {
146
- return UFixedMathLib.toUFixed(a, exp);
147
- }
148
- }
@@ -1,98 +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, ITreasuryModule, TokenHandler} from "../../instance/module/treasury/ITreasury.sol";
7
-
8
- import {IVersionable} from "../../shared/IVersionable.sol";
9
- import {Versionable} from "../../shared/Versionable.sol";
10
-
11
- import {NftId, NftIdLib} from "../../types/NftId.sol";
12
- 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 {IPoolService} from "./IPoolService.sol";
18
-
19
-
20
- contract PoolService is ComponentServiceBase, IPoolService {
21
- using NftIdLib for NftId;
22
-
23
- string public constant NAME = "PoolService";
24
-
25
- constructor(
26
- address registry,
27
- NftId registryNftId
28
- ) ComponentServiceBase(registry, registryNftId) // solhint-disable-next-line no-empty-blocks
29
- {
30
- _registerInterface(type(IPoolService).interfaceId);
31
- }
32
-
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));
43
- }
44
-
45
- function getName() external pure override returns(string memory name) {
46
- return NAME;
47
- }
48
-
49
- function setFees(
50
- Fee memory stakingFee,
51
- Fee memory performanceFee
52
- )
53
- external
54
- override
55
- {
56
- (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
57
- instance.setPoolFees(info.nftId, stakingFee, performanceFee);
58
- }
59
-
60
- function createBundle(
61
- address owner,
62
- uint256 amount,
63
- uint256 lifetime,
64
- bytes calldata filter
65
- )
66
- external
67
- override
68
- returns(NftId bundleNftId)
69
- {
70
- (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
71
-
72
- // register bundle with registry
73
- NftId poolNftId = info.nftId;
74
- bundleNftId = _registry.registerObjectForInstance(
75
- poolNftId,
76
- BUNDLE(),
77
- owner,
78
- "");
79
-
80
- // create bundle info in instance
81
- instance.createBundleInfo(
82
- bundleNftId,
83
- poolNftId,
84
- amount,
85
- lifetime,
86
- filter);
87
-
88
- // add bundle to pool in instance
89
- instance.addBundleToPool(
90
- bundleNftId,
91
- poolNftId,
92
- amount);
93
-
94
- // TODO collect capital
95
-
96
- // TODO add logging
97
- }
98
- }