@etherisc/gif-next 0.0.2-efef0ea-320 → 0.0.2-f034782-101

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 (485) 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 +832 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1046 -132
  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} +279 -226
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +584 -55
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +598 -131
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +430 -70
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1012 -234
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +830 -117
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1410 -1111
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +567 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2042 -1245
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1311 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1279 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1033 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +701 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +293 -204
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +968 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1093 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1527 -302
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +556 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +630 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +213 -209
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +793 -146
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +540 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +168 -221
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +96 -383
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1021 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +689 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +426 -232
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +657 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +320 -488
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +890 -0
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -101
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1177 -0
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  132. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +38 -74
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +100 -33
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  139. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +105 -177
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +256 -25
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  154. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +207 -169
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  158. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +4 -177
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +272 -26
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  167. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestService.sol/TestService.json +241 -186
  169. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +13 -202
  175. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  176. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  180. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  182. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  193. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  197. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  199. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  200. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  201. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  203. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  205. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  206. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  207. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  209. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  211. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  212. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  213. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  214. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  215. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  216. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  217. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  218. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  219. package/contracts/components/Component.sol +251 -0
  220. package/contracts/components/Distribution.sol +210 -62
  221. package/contracts/components/IComponent.sol +74 -0
  222. package/contracts/components/IDistributionComponent.sol +43 -19
  223. package/contracts/components/IPoolComponent.sol +89 -47
  224. package/contracts/components/IProductComponent.sol +13 -11
  225. package/contracts/components/Pool.sol +220 -156
  226. package/contracts/components/Product.sol +137 -71
  227. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  228. package/contracts/instance/BundleManager.sol +127 -0
  229. package/contracts/instance/Cloneable.sol +51 -0
  230. package/contracts/instance/IInstance.sol +87 -42
  231. package/contracts/instance/IInstanceService.sol +72 -0
  232. package/contracts/instance/Instance.sol +311 -58
  233. package/contracts/instance/InstanceAccessManager.sol +522 -0
  234. package/contracts/instance/InstanceReader.sol +290 -0
  235. package/contracts/instance/InstanceService.sol +495 -0
  236. package/contracts/instance/InstanceServiceManager.sol +54 -0
  237. package/contracts/instance/ObjectManager.sol +82 -0
  238. package/contracts/instance/base/ComponentService.sol +134 -0
  239. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  240. package/contracts/instance/base/ILifecycle.sol +3 -3
  241. package/contracts/instance/base/KeyValueStore.sol +52 -38
  242. package/contracts/instance/base/Lifecycle.sol +12 -3
  243. package/contracts/instance/module/IAccess.sol +54 -0
  244. package/contracts/instance/module/IBundle.sol +21 -0
  245. package/contracts/instance/module/IComponents.sol +35 -0
  246. package/contracts/instance/module/IDistribution.sol +41 -0
  247. package/contracts/instance/module/IPolicy.sol +72 -0
  248. package/contracts/instance/module/IRisk.sol +11 -0
  249. package/contracts/instance/module/ISetup.sol +33 -0
  250. package/contracts/instance/module/ITreasury.sol +23 -0
  251. package/contracts/instance/service/ApplicationService.sol +350 -0
  252. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  253. package/contracts/instance/service/BundleService.sol +336 -0
  254. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  255. package/contracts/instance/service/ClaimService.sol +151 -0
  256. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  257. package/contracts/instance/service/DistributionService.sol +434 -26
  258. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  259. package/contracts/instance/service/IApplicationService.sol +82 -0
  260. package/contracts/instance/service/IBundleService.sol +62 -0
  261. package/contracts/instance/service/IClaimService.sol +61 -0
  262. package/contracts/instance/service/IDistributionService.sol +87 -1
  263. package/contracts/instance/service/IPolicyService.sol +72 -0
  264. package/contracts/instance/service/IPoolService.sol +22 -24
  265. package/contracts/instance/service/IProductService.sol +9 -76
  266. package/contracts/instance/service/PolicyService.sol +403 -0
  267. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  268. package/contracts/instance/service/PoolService.sol +182 -111
  269. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  270. package/contracts/instance/service/ProductService.sol +166 -434
  271. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  272. package/contracts/registry/ChainNft.sol +87 -36
  273. package/contracts/registry/IRegistry.sol +68 -24
  274. package/contracts/registry/IRegistryService.sol +67 -0
  275. package/contracts/registry/ITransferInterceptor.sol +7 -0
  276. package/contracts/registry/Registry.sol +372 -286
  277. package/contracts/registry/RegistryAccessManager.sol +216 -0
  278. package/contracts/registry/RegistryService.sol +283 -0
  279. package/contracts/registry/RegistryServiceManager.sol +62 -0
  280. package/contracts/registry/ReleaseManager.sol +322 -0
  281. package/contracts/registry/TokenRegistry.sol +116 -0
  282. package/contracts/shared/ContractDeployerLib.sol +72 -0
  283. package/contracts/shared/ERC165.sol +14 -8
  284. package/contracts/shared/INftOwnable.sol +23 -0
  285. package/contracts/shared/IPolicyHolder.sol +26 -0
  286. package/contracts/shared/IRegisterable.sol +10 -19
  287. package/contracts/shared/IRegistryLinked.sol +12 -0
  288. package/contracts/shared/IService.sol +18 -0
  289. package/contracts/shared/IVersionable.sol +37 -49
  290. package/contracts/shared/NftOwnable.sol +120 -0
  291. package/contracts/shared/PolicyHolder.sol +81 -0
  292. package/contracts/shared/ProxyManager.sol +169 -0
  293. package/contracts/shared/Registerable.sol +54 -66
  294. package/contracts/shared/RegistryLinked.sol +48 -0
  295. package/contracts/shared/Service.sol +58 -0
  296. package/contracts/shared/TokenHandler.sol +33 -0
  297. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  298. package/contracts/shared/Versionable.sol +37 -77
  299. package/contracts/test/TestFee.sol +2 -2
  300. package/contracts/test/TestRegisterable.sol +5 -6
  301. package/contracts/test/TestRoleId.sol +1 -1
  302. package/contracts/test/TestService.sol +7 -14
  303. package/contracts/types/Blocknumber.sol +1 -0
  304. package/contracts/types/ClaimId.sol +52 -0
  305. package/contracts/types/DistributorType.sol +55 -0
  306. package/contracts/types/Fee.sol +4 -3
  307. package/contracts/types/Key32.sol +8 -3
  308. package/contracts/types/NftId.sol +8 -0
  309. package/contracts/types/NftIdSet.sol +26 -24
  310. package/contracts/types/NumberId.sol +52 -0
  311. package/contracts/types/ObjectType.sol +40 -14
  312. package/contracts/types/PayoutId.sol +54 -0
  313. package/contracts/types/Referral.sol +89 -0
  314. package/contracts/types/RoleId.sol +68 -9
  315. package/contracts/types/Seconds.sol +54 -0
  316. package/contracts/types/StateId.sol +6 -1
  317. package/contracts/types/Timestamp.sol +17 -13
  318. package/contracts/types/UFixed.sol +129 -12
  319. package/contracts/types/Version.sol +6 -1
  320. package/package.json +6 -5
  321. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  322. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  323. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  326. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  328. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  330. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  332. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  334. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  336. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  338. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  340. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  343. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  345. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  347. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  349. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  351. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  353. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  355. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  356. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  357. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  358. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  359. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -387
  360. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  361. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  362. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  363. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  364. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  365. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  366. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  367. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  368. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  369. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  370. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  371. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  373. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  376. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  378. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  380. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  383. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  386. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  389. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  391. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  393. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  395. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  397. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  398. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  400. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  402. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  405. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  406. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  407. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  409. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  410. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -618
  411. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  412. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  413. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  414. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  415. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  416. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -724
  417. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  418. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  419. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +0 -4
  420. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +0 -248
  421. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  422. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  423. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -228
  424. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  425. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  426. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  427. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  428. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  429. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  430. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  431. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  432. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  433. package/contracts/components/BaseComponent.sol +0 -94
  434. package/contracts/components/IBaseComponent.sol +0 -19
  435. package/contracts/experiment/errors/Require.sol +0 -38
  436. package/contracts/experiment/errors/Revert.sol +0 -44
  437. package/contracts/experiment/inheritance/A.sol +0 -53
  438. package/contracts/experiment/inheritance/B.sol +0 -28
  439. package/contracts/experiment/inheritance/C.sol +0 -34
  440. package/contracts/experiment/inheritance/IA.sol +0 -13
  441. package/contracts/experiment/inheritance/IB.sol +0 -10
  442. package/contracts/experiment/inheritance/IC.sol +0 -12
  443. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  444. package/contracts/experiment/statemachine/ISM.sol +0 -25
  445. package/contracts/experiment/statemachine/README.md +0 -112
  446. package/contracts/experiment/statemachine/SM.sol +0 -57
  447. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  448. package/contracts/experiment/types/TypeA.sol +0 -47
  449. package/contracts/experiment/types/TypeB.sol +0 -29
  450. package/contracts/instance/IInstanceLinked.sol +0 -8
  451. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  452. package/contracts/instance/base/IInstanceBase.sol +0 -22
  453. package/contracts/instance/base/IService.sol +0 -15
  454. package/contracts/instance/base/InstanceBase.sol +0 -91
  455. package/contracts/instance/base/ModuleBase.sol +0 -57
  456. package/contracts/instance/base/ServiceBase.sol +0 -37
  457. package/contracts/instance/module/access/Access.sol +0 -149
  458. package/contracts/instance/module/access/IAccess.sol +0 -53
  459. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  460. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  461. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  462. package/contracts/instance/module/component/IComponent.sol +0 -28
  463. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  464. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  465. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  466. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  467. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  468. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  469. package/contracts/instance/module/risk/IRisk.sol +0 -26
  470. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  471. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  472. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  473. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  474. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  475. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  476. package/contracts/registry/IChainNft.sol +0 -21
  477. package/contracts/registry/IRegistryLinked.sol +0 -8
  478. package/contracts/registry/RegistryUpgradeable.sol +0 -488
  479. package/contracts/shared/IOwnable.sol +0 -6
  480. package/contracts/shared/Proxy.sol +0 -94
  481. package/contracts/shared/VersionableUpgradeable.sol +0 -136
  482. package/contracts/test/TestDistribution.sol +0 -21
  483. package/contracts/test/TestPool.sol +0 -25
  484. package/contracts/test/TestProduct.sol +0 -72
  485. 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
- }