@etherisc/gif-next 0.0.2-91f98cf-477 → 0.0.2-93de5de-423

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 (475) hide show
  1. package/README.md +283 -27
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +853 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1103 -119
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +284 -223
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +632 -29
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +519 -119
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +505 -69
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +993 -249
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +931 -129
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1509 -1032
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +498 -0
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +2216 -1213
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1386 -0
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +541 -0
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  51. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  53. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  57. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  58. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  63. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  65. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  67. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  69. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  71. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  73. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +644 -129
  75. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +677 -0
  77. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +462 -0
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  81. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +209 -175
  83. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +288 -133
  85. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  87. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +111 -215
  89. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +114 -371
  91. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  93. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  95. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +378 -205
  97. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
  99. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +346 -438
  101. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +466 -34
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +879 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +470 -103
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1166 -0
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  123. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  124. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  125. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  127. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  128. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +38 -74
  129. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  131. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +100 -33
  133. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  134. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  135. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  136. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +112 -154
  137. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  139. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  140. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  141. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  142. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  143. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  144. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  145. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +256 -25
  147. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  148. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  149. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  150. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +210 -172
  151. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  152. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  153. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  154. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  155. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  157. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  159. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +272 -26
  161. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  163. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestService.sol/TestService.json +270 -139
  165. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  167. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  169. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +38 -140
  171. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  172. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  173. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  174. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  177. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  178. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  180. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  182. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  184. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  186. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  187. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  188. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  190. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  192. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  194. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  196. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  198. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  200. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  202. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  204. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  205. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  206. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  208. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  210. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  212. package/contracts/components/Component.sol +241 -0
  213. package/contracts/components/Distribution.sol +220 -44
  214. package/contracts/components/IComponent.sol +54 -0
  215. package/contracts/components/IDistributionComponent.sol +59 -6
  216. package/contracts/components/IPoolComponent.sol +55 -39
  217. package/contracts/components/IProductComponent.sol +10 -9
  218. package/contracts/components/Pool.sol +170 -151
  219. package/contracts/components/Product.sol +128 -70
  220. package/contracts/instance/BundleManager.sol +125 -0
  221. package/contracts/instance/Cloneable.sol +46 -0
  222. package/contracts/instance/IInstance.sol +84 -45
  223. package/contracts/instance/IInstanceService.sol +59 -0
  224. package/contracts/instance/Instance.sol +276 -59
  225. package/contracts/instance/InstanceAccessManager.sol +297 -0
  226. package/contracts/instance/InstanceReader.sol +293 -0
  227. package/contracts/instance/InstanceService.sol +476 -0
  228. package/contracts/instance/InstanceServiceManager.sol +54 -0
  229. package/contracts/instance/ObjectManager.sol +84 -0
  230. package/contracts/instance/base/ComponentService.sol +134 -0
  231. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  232. package/contracts/instance/base/ILifecycle.sol +3 -3
  233. package/contracts/instance/base/KeyValueStore.sol +49 -38
  234. package/contracts/instance/base/Lifecycle.sol +1 -1
  235. package/contracts/instance/module/IAccess.sol +47 -0
  236. package/contracts/instance/module/IBundle.sol +20 -0
  237. package/contracts/instance/module/IDistribution.sol +39 -0
  238. package/contracts/instance/module/IPolicy.sol +47 -0
  239. package/contracts/instance/module/IRisk.sol +11 -0
  240. package/contracts/instance/module/ISetup.sol +47 -0
  241. package/contracts/instance/module/ITreasury.sol +23 -0
  242. package/contracts/instance/service/ApplicationService.sol +268 -0
  243. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  244. package/contracts/instance/service/BundleService.sol +298 -0
  245. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  246. package/contracts/instance/service/ClaimService.sol +151 -0
  247. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  248. package/contracts/instance/service/DistributionService.sol +243 -25
  249. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  250. package/contracts/instance/service/IApplicationService.sol +82 -0
  251. package/contracts/instance/service/IBundleService.sol +54 -0
  252. package/contracts/instance/service/IClaimService.sol +61 -0
  253. package/contracts/instance/service/IDistributionService.sol +54 -1
  254. package/contracts/instance/service/IPolicyService.sol +89 -0
  255. package/contracts/instance/service/IPoolService.sol +7 -24
  256. package/contracts/instance/service/IProductService.sol +9 -76
  257. package/contracts/instance/service/PolicyService.sol +474 -0
  258. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  259. package/contracts/instance/service/PoolService.sol +76 -116
  260. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  261. package/contracts/instance/service/ProductService.sol +158 -434
  262. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  263. package/contracts/registry/ChainNft.sol +79 -36
  264. package/contracts/registry/IRegistry.sol +66 -24
  265. package/contracts/registry/IRegistryService.sol +67 -0
  266. package/contracts/registry/ITransferInterceptor.sol +6 -0
  267. package/contracts/registry/Registry.sol +366 -283
  268. package/contracts/registry/RegistryAccessManager.sol +216 -0
  269. package/contracts/registry/RegistryService.sol +283 -0
  270. package/contracts/registry/RegistryServiceManager.sol +62 -0
  271. package/contracts/registry/ReleaseManager.sol +322 -0
  272. package/contracts/registry/TokenRegistry.sol +116 -0
  273. package/contracts/shared/ContractDeployerLib.sol +72 -0
  274. package/contracts/shared/ERC165.sol +14 -8
  275. package/contracts/shared/INftOwnable.sol +23 -0
  276. package/contracts/shared/IPolicyHolder.sol +26 -0
  277. package/contracts/shared/IRegisterable.sol +10 -19
  278. package/contracts/shared/IRegistryLinked.sol +12 -0
  279. package/contracts/shared/IService.sol +16 -0
  280. package/contracts/shared/IVersionable.sol +38 -37
  281. package/contracts/shared/NftOwnable.sol +120 -0
  282. package/contracts/shared/PolicyHolder.sol +81 -0
  283. package/contracts/shared/ProxyManager.sol +169 -0
  284. package/contracts/shared/Registerable.sol +54 -66
  285. package/contracts/shared/RegistryLinked.sol +48 -0
  286. package/contracts/shared/Service.sol +58 -0
  287. package/contracts/shared/TokenHandler.sol +27 -0
  288. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  289. package/contracts/shared/Versionable.sol +38 -68
  290. package/contracts/test/TestFee.sol +2 -2
  291. package/contracts/test/TestRegisterable.sol +5 -6
  292. package/contracts/test/TestRoleId.sol +1 -1
  293. package/contracts/test/TestService.sol +7 -14
  294. package/contracts/types/ClaimId.sol +52 -0
  295. package/contracts/types/DistributorType.sol +55 -0
  296. package/contracts/types/Fee.sol +3 -3
  297. package/contracts/types/Key32.sol +8 -3
  298. package/contracts/types/NftIdSet.sol +26 -24
  299. package/contracts/types/NumberId.sol +52 -0
  300. package/contracts/types/ObjectType.sol +39 -14
  301. package/contracts/types/PayoutId.sol +54 -0
  302. package/contracts/types/Referral.sol +85 -0
  303. package/contracts/types/RoleId.sol +61 -9
  304. package/contracts/types/StateId.sol +5 -1
  305. package/contracts/types/Timestamp.sol +7 -3
  306. package/contracts/types/UFixed.sol +128 -12
  307. package/contracts/types/Version.sol +13 -1
  308. package/package.json +6 -5
  309. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  310. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  311. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  312. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  314. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  316. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  317. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  318. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  320. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  322. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  324. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  326. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  328. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  331. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  333. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  335. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  337. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  339. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  341. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  343. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  344. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  345. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  346. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  347. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  348. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  349. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  350. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  351. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  352. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  353. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  354. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  355. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  356. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  357. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  358. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  359. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  360. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  361. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  362. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  363. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  364. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  365. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  366. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  367. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  368. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  369. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  370. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  371. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  373. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  376. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  378. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  379. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  380. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  381. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  383. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  385. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  387. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  390. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  392. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  395. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  397. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  398. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  399. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  400. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  401. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  402. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  403. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  404. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  405. package/artifacts/contracts/registry/RegistryUpgradeable.sol/Registry.dbg.json +0 -4
  406. package/artifacts/contracts/registry/RegistryUpgradeable.sol/Registry.json +0 -495
  407. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  408. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  409. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  410. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
  411. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  412. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  413. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -187
  414. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  415. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  416. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  417. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  418. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  419. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  420. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  421. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  422. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  423. package/contracts/components/BaseComponent.sol +0 -94
  424. package/contracts/components/IBaseComponent.sol +0 -19
  425. package/contracts/experiment/errors/Require.sol +0 -38
  426. package/contracts/experiment/errors/Revert.sol +0 -44
  427. package/contracts/experiment/inheritance/A.sol +0 -53
  428. package/contracts/experiment/inheritance/B.sol +0 -28
  429. package/contracts/experiment/inheritance/C.sol +0 -34
  430. package/contracts/experiment/inheritance/IA.sol +0 -13
  431. package/contracts/experiment/inheritance/IB.sol +0 -10
  432. package/contracts/experiment/inheritance/IC.sol +0 -12
  433. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  434. package/contracts/experiment/statemachine/ISM.sol +0 -25
  435. package/contracts/experiment/statemachine/README.md +0 -112
  436. package/contracts/experiment/statemachine/SM.sol +0 -57
  437. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  438. package/contracts/experiment/types/TypeA.sol +0 -47
  439. package/contracts/experiment/types/TypeB.sol +0 -29
  440. package/contracts/instance/IInstanceLinked.sol +0 -8
  441. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  442. package/contracts/instance/base/IInstanceBase.sol +0 -22
  443. package/contracts/instance/base/IService.sol +0 -15
  444. package/contracts/instance/base/InstanceBase.sol +0 -91
  445. package/contracts/instance/base/ModuleBase.sol +0 -57
  446. package/contracts/instance/base/ServiceBase.sol +0 -37
  447. package/contracts/instance/module/access/Access.sol +0 -149
  448. package/contracts/instance/module/access/IAccess.sol +0 -53
  449. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  450. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  451. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  452. package/contracts/instance/module/component/IComponent.sol +0 -28
  453. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  454. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  455. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  456. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  457. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  458. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  459. package/contracts/instance/module/risk/IRisk.sol +0 -26
  460. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  461. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  462. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  463. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  464. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  465. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  466. package/contracts/registry/IChainNft.sol +0 -21
  467. package/contracts/registry/IRegistryLinked.sol +0 -8
  468. package/contracts/registry/RegistryUpgradeable.sol +0 -415
  469. package/contracts/shared/IOwnable.sol +0 -6
  470. package/contracts/shared/Proxy.sol +0 -83
  471. package/contracts/shared/VersionableUpgradeable.sol +0 -108
  472. package/contracts/test/TestDistribution.sol +0 -21
  473. package/contracts/test/TestPool.sol +0 -25
  474. package/contracts/test/TestProduct.sol +0 -72
  475. package/contracts/types/ReferralId.sol +0 -48
@@ -1,82 +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
- import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
6
- import {IPoolComponent} from "../../../components/IPoolComponent.sol";
7
- import {IProductComponent} from "../../../components/IProductComponent.sol";
8
-
9
- import {NftId} from "../../../types/NftId.sol";
10
- import {UFixed} from "../../../types/UFixed.sol";
11
- import {Fee} from "../../../types/Fee.sol";
12
-
13
- import {TokenHandler} from "./TokenHandler.sol";
14
-
15
- interface ITreasury {
16
- // TODO add events
17
- // TODO add errors
18
-
19
- // treasury info is linked to product nft id
20
- struct TreasuryInfo {
21
- NftId poolNftId;
22
- NftId distributionNftId;
23
- IERC20Metadata token;
24
- Fee productFee; // product fee on net premium
25
- Fee processingFee; // product fee on payout amounts
26
- Fee poolFee; // pool fee on net premium
27
- Fee stakingFee; // pool fee on staked capital from investor
28
- Fee performanceFee; // pool fee on profits from capital investors
29
- Fee distributionFee; // default distribution fee (no referral id)
30
- }
31
- }
32
-
33
- interface ITreasuryModule is ITreasury {
34
-
35
- function registerProductSetup(
36
- IProductComponent product,
37
- IPoolComponent pool,
38
- IDistributionComponent distribution
39
- ) external;
40
-
41
- function setTreasuryInfo(
42
- NftId productNftId,
43
- TreasuryInfo memory info
44
- ) external;
45
-
46
- function hasTreasuryInfo(
47
- NftId productNftId
48
- ) external view returns (bool hasInfo);
49
-
50
- function getTreasuryInfo(
51
- NftId productNftId
52
- ) external view returns (TreasuryInfo memory info);
53
-
54
- function getProductNftId(
55
- NftId componentNftId
56
- ) external view returns (NftId productNftId);
57
-
58
- function getTokenHandler(
59
- NftId componentNftId
60
- ) external view returns (TokenHandler tokenHandler);
61
-
62
- function calculateFeeAmount(
63
- uint256 amount,
64
- Fee memory fee
65
- ) external pure returns (uint256 feeAmount, uint256 netAmount);
66
-
67
- function getFee(
68
- UFixed fractionalFee,
69
- uint256 fixedFee
70
- ) external pure returns (Fee memory fee);
71
-
72
- function getZeroFee() external view returns (Fee memory fee);
73
-
74
- function getUFixed(
75
- uint256 a
76
- ) external pure returns (UFixed);
77
-
78
- function getUFixed(
79
- uint256 a,
80
- int8 exp
81
- ) external pure returns (UFixed);
82
- }
@@ -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,138 +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
- import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
6
- import {IPoolComponent} from "../../../components/IPoolComponent.sol";
7
- import {IProductComponent} from "../../../components/IProductComponent.sol";
8
-
9
- import {NftId} from "../../../types/NftId.sol";
10
- import {TREASURY} from "../../../types/ObjectType.sol";
11
- import {Fee, FeeLib} from "../../../types/Fee.sol";
12
- import {UFixed, UFixedMathLib} from "../../../types/UFixed.sol";
13
- import {TokenHandler} from "./TokenHandler.sol";
14
- import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
15
- import {ITreasuryModule} from "./ITreasury.sol";
16
- import {ModuleBase} from "../../base/ModuleBase.sol";
17
-
18
- abstract contract TreasuryModule is
19
- ModuleBase,
20
- ITreasuryModule
21
- {
22
- // relation of distributor and pool nft map to product nft
23
- mapping(NftId componentNftId => NftId productNftId) internal _productNft;
24
- // relation of component nft to token hanlder
25
- mapping(NftId componentNftId => TokenHandler tokenHandler) internal _tokenHandler;
26
- Fee internal _zeroFee;
27
-
28
-
29
- function initializeTreasuryModule(IKeyValueStore keyValueStore) internal {
30
- _initialize(keyValueStore);
31
- _zeroFee = FeeLib.zeroFee();
32
- }
33
-
34
- function registerProductSetup(
35
- IProductComponent product,
36
- IPoolComponent pool,
37
- IDistributionComponent distribution
38
- ) external override // TODO add authz (only component module)
39
- {
40
- NftId productNftId = product.getNftId();
41
- NftId poolNftId = pool.getNftId();
42
- NftId distributionNftId = distribution.getNftId();
43
-
44
- require(productNftId.gtz(), "ERROR:TRS-010:PRODUCT_UNDEFINED");
45
- require(poolNftId.gtz(), "ERROR:TRS-011:POOL_UNDEFINED");
46
-
47
- require(address(_tokenHandler[productNftId]) == address(0), "ERROR:TRS-012:TOKEN_HANDLER_ALREADY_REGISTERED");
48
- require(_productNft[poolNftId].eqz(), "ERROR:TRS-013:POOL_ALREADY_LINKED");
49
- require(_productNft[distributionNftId].eqz(), "ERROR:TRS-014:COMPENSATION_ALREADY_LINKED");
50
-
51
- // deploy product specific handler contract
52
- IERC20Metadata token = product.getToken();
53
- _tokenHandler[productNftId] = new TokenHandler(productNftId, address(token));
54
- _productNft[distributionNftId] = productNftId;
55
- _productNft[poolNftId] = productNftId;
56
-
57
- TreasuryInfo memory info = TreasuryInfo(
58
- poolNftId,
59
- distributionNftId,
60
- token,
61
- product.getProductFee(),
62
- product.getProcessingFee(),
63
- pool.getPoolFee(),
64
- pool.getStakingFee(),
65
- pool.getPerformanceFee(),
66
- distribution.getDistributionFee()
67
- );
68
-
69
- _create(TREASURY(), productNftId, abi.encode(info));
70
- }
71
-
72
- function setTreasuryInfo(
73
- NftId productNftId,
74
- TreasuryInfo memory info
75
- )
76
- external
77
- // TODO add authz (only component module)
78
- override
79
- {
80
- _updateData(TREASURY(), productNftId, abi.encode(info));
81
- }
82
-
83
- function getProductNftId(
84
- NftId componentNftId
85
- ) external view returns (NftId productNftId) {
86
- return _productNft[componentNftId];
87
- }
88
-
89
- function getTokenHandler(
90
- NftId componentNftId
91
- ) external view override returns (TokenHandler tokenHandler) {
92
- return _tokenHandler[componentNftId];
93
- }
94
-
95
- function hasTreasuryInfo(
96
- NftId productNftId
97
- ) public view override returns (bool hasInfo) {
98
- return _exists(TREASURY(), productNftId);
99
- }
100
-
101
- function getTreasuryInfo(
102
- NftId productNftId
103
- ) public view override returns (TreasuryInfo memory info) {
104
- return abi.decode(_getData(TREASURY(), productNftId), (TreasuryInfo));
105
- }
106
-
107
- function calculateFeeAmount(
108
- uint256 amount,
109
- Fee memory fee
110
- ) public pure override returns (uint256 feeAmount, uint256 netAmount) {
111
- return FeeLib.calculateFee(fee, amount);
112
- }
113
-
114
- function getFee(
115
- UFixed fractionalFee,
116
- uint256 fixedFee
117
- ) external pure override returns (Fee memory fee) {
118
- return FeeLib.toFee(fractionalFee, fixedFee);
119
- }
120
-
121
- function getZeroFee() external view override returns (Fee memory fee) {
122
- return _zeroFee;
123
- }
124
-
125
- function getUFixed(
126
- uint256 a
127
- ) external pure override returns (UFixed) {
128
- return UFixedMathLib.toUFixed(a);
129
- }
130
-
131
- function getUFixed(
132
- uint256 a,
133
- int8 exp
134
- ) external pure returns (UFixed)
135
- {
136
- return UFixedMathLib.toUFixed(a, exp);
137
- }
138
- }
@@ -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,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,21 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
5
-
6
- interface IChainNft is IERC721Enumerable {
7
- function mint(
8
- address to,
9
- string memory uri
10
- ) external returns (uint256 tokenId);
11
-
12
- function burn(uint256 tokenId) external;
13
-
14
- function setURI(uint256 tokenId, string memory uri) external;
15
-
16
- function exists(uint256 tokenId) external view returns (bool);
17
-
18
- function totalMinted() external view returns (uint256);
19
-
20
- function getRegistryAddress() external view returns (address registry);
21
- }
@@ -1,8 +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
- interface IRegistryLinked {
7
- function getRegistry() external view returns (IRegistry registry);
8
- }