@etherisc/gif-next 0.0.2-f79a517-071 → 0.0.2-f7a5beb-202

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 (368) hide show
  1. package/README.md +67 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +613 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +353 -104
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → components/IComponent.sol/IComponent.json} +185 -151
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +527 -9
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +611 -66
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +618 -30
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +492 -212
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +429 -137
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  37. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  39. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  40. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  41. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  43. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  44. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  45. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1035 -995
  47. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  48. package/artifacts/contracts/instance/{service/IComponentOwnerService.sol/IComponentOwnerService.json → IInstanceService.sol/IInstanceService.json} +155 -56
  49. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  50. package/artifacts/contracts/instance/Instance.sol/Instance.json +1821 -1096
  51. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  52. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1034 -0
  53. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  54. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1381 -0
  55. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  56. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +964 -0
  57. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  58. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +473 -0
  59. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  60. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  61. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +134 -75
  63. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  65. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  68. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  70. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  71. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  72. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  74. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  76. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  78. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  80. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  81. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  82. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  84. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1102 -0
  86. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +449 -0
  88. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +194 -52
  90. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +437 -0
  92. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +715 -0
  94. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -18
  96. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +766 -0
  98. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +15 -82
  100. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +25 -245
  102. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1227 -0
  104. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +505 -0
  106. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +181 -128
  108. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +437 -0
  110. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  111. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +174 -386
  112. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +437 -0
  114. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  116. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +339 -59
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +220 -111
  120. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  121. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/Registry.sol/Registry.json +301 -188
  123. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  125. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +83 -128
  127. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +53 -85
  129. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  131. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  132. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +394 -0
  133. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  134. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  135. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  136. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -5
  139. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +14 -19
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +19 -6
  144. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  145. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +19 -6
  146. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -11
  148. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  149. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +28 -33
  150. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  151. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  152. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  153. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  154. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +19 -11
  158. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  160. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestService.sol/TestService.json +58 -34
  162. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  165. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +18 -2
  167. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  168. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  169. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  172. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  173. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  176. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  178. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  180. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  182. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  184. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  186. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  188. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  190. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  192. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  194. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  198. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  200. package/contracts/components/Component.sol +247 -0
  201. package/contracts/components/Distribution.sol +37 -49
  202. package/contracts/components/IComponent.sol +50 -0
  203. package/contracts/components/IDistributionComponent.sol +6 -5
  204. package/contracts/components/IPoolComponent.sol +42 -29
  205. package/contracts/components/IProductComponent.sol +9 -7
  206. package/contracts/components/Pool.sol +137 -116
  207. package/contracts/components/Product.sol +78 -114
  208. package/contracts/instance/BundleManager.sol +125 -0
  209. package/contracts/instance/Cloneable.sol +46 -0
  210. package/contracts/instance/IInstance.sol +64 -44
  211. package/contracts/instance/IInstanceService.sol +40 -0
  212. package/contracts/instance/Instance.sol +251 -65
  213. package/contracts/instance/InstanceAccessManager.sol +298 -0
  214. package/contracts/instance/InstanceReader.sol +293 -0
  215. package/contracts/instance/InstanceService.sol +362 -0
  216. package/contracts/instance/InstanceServiceManager.sol +54 -0
  217. package/contracts/instance/ObjectManager.sol +84 -0
  218. package/contracts/instance/base/ComponentService.sol +134 -0
  219. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  220. package/contracts/instance/base/ILifecycle.sol +3 -3
  221. package/contracts/instance/base/KeyValueStore.sol +49 -38
  222. package/contracts/instance/base/Lifecycle.sol +1 -1
  223. package/contracts/instance/module/IAccess.sol +48 -0
  224. package/contracts/instance/module/IBundle.sol +20 -0
  225. package/contracts/instance/module/IDistribution.sol +39 -0
  226. package/contracts/instance/module/IPolicy.sol +45 -0
  227. package/contracts/instance/module/IRisk.sol +11 -0
  228. package/contracts/instance/module/ISetup.sol +46 -0
  229. package/contracts/instance/module/ITreasury.sol +23 -0
  230. package/contracts/instance/service/BundleService.sol +293 -0
  231. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  232. package/contracts/instance/service/DistributionService.sol +72 -20
  233. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  234. package/contracts/instance/service/IBundleService.sol +44 -0
  235. package/contracts/instance/service/IDistributionService.sol +1 -1
  236. package/contracts/instance/service/IPolicyService.sol +94 -0
  237. package/contracts/instance/service/IPoolService.sol +7 -24
  238. package/contracts/instance/service/IProductService.sol +9 -76
  239. package/contracts/instance/service/PolicyService.sol +538 -0
  240. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  241. package/contracts/instance/service/PoolService.sol +76 -116
  242. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  243. package/contracts/instance/service/ProductService.sol +154 -432
  244. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  245. package/contracts/registry/ChainNft.sol +1 -1
  246. package/contracts/registry/IRegistry.sol +47 -6
  247. package/contracts/registry/IRegistryService.sol +50 -20
  248. package/contracts/registry/Registry.sol +243 -214
  249. package/contracts/registry/RegistryAccessManager.sol +216 -0
  250. package/contracts/registry/RegistryService.sol +84 -263
  251. package/contracts/registry/RegistryServiceManager.sol +20 -22
  252. package/contracts/registry/ReleaseManager.sol +332 -0
  253. package/contracts/registry/TokenRegistry.sol +112 -0
  254. package/contracts/shared/ERC165.sol +6 -2
  255. package/contracts/shared/IRegisterable.sol +1 -3
  256. package/contracts/shared/IService.sol +16 -0
  257. package/contracts/shared/NftOwnable.sol +7 -4
  258. package/contracts/shared/ProxyManager.sol +1 -1
  259. package/contracts/shared/Registerable.sol +11 -14
  260. package/contracts/shared/Service.sol +60 -0
  261. package/contracts/shared/TokenHandler.sol +27 -0
  262. package/contracts/shared/Versionable.sol +2 -2
  263. package/contracts/test/TestRoleId.sol +1 -1
  264. package/contracts/test/TestService.sol +6 -7
  265. package/contracts/types/DistributorType.sol +55 -0
  266. package/contracts/types/Key32.sol +8 -3
  267. package/contracts/types/NftIdSet.sol +26 -24
  268. package/contracts/types/NumberId.sol +52 -0
  269. package/contracts/types/ObjectType.sol +35 -14
  270. package/contracts/types/Referral.sol +85 -0
  271. package/contracts/types/RoleId.sol +60 -15
  272. package/contracts/types/StateId.sol +5 -1
  273. package/contracts/types/Timestamp.sol +7 -3
  274. package/contracts/types/Version.sol +4 -1
  275. package/package.json +1 -1
  276. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  277. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -301
  278. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  279. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -254
  280. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  281. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  282. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  283. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  284. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  285. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  286. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  287. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  288. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  289. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  290. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  291. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  292. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  293. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  294. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  295. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  296. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  297. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  298. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  299. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  300. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  301. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  302. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  303. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  304. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  305. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  306. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  307. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  308. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  309. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  310. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  311. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  312. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  313. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  314. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  315. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  316. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  317. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  318. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  319. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  320. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  321. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  322. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  323. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  324. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  325. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  326. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  327. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  328. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  329. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  330. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  331. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  332. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  333. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  334. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  335. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  336. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  337. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  338. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  339. package/contracts/components/BaseComponent.sol +0 -79
  340. package/contracts/components/IBaseComponent.sol +0 -19
  341. package/contracts/instance/IInstanceLinked.sol +0 -8
  342. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  343. package/contracts/instance/base/IInstanceBase.sol +0 -23
  344. package/contracts/instance/base/IService.sol +0 -15
  345. package/contracts/instance/base/InstanceBase.sol +0 -89
  346. package/contracts/instance/base/ModuleBase.sol +0 -57
  347. package/contracts/instance/base/ServiceBase.sol +0 -44
  348. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  349. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  350. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  351. package/contracts/instance/module/component/IComponent.sol +0 -28
  352. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  353. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  354. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  355. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  356. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  357. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  358. package/contracts/instance/module/risk/IRisk.sol +0 -26
  359. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  360. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  361. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  362. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  363. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  364. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  365. package/contracts/test/TestDistribution.sol +0 -22
  366. package/contracts/test/TestPool.sol +0 -27
  367. package/contracts/test/TestProduct.sol +0 -74
  368. package/contracts/types/ReferralId.sol +0 -48
@@ -1,48 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
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,131 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
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, UFixedLib} 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
- modifier onlyComponentOwnerService() virtual {
29
- require(
30
- msg.sender == address(this.getComponentOwnerService()),
31
- "ERROR:CMP-001:NOT_COPONENT_OWNER_SERVICE"
32
- );
33
- _;
34
- }
35
-
36
- function _initializeTreasuryModule(IKeyValueStore keyValueStore) internal {
37
- //_initializeModuleBase(keyValueStore);
38
- _initialize(keyValueStore);
39
- _zeroFee = FeeLib.zeroFee();
40
- }
41
-
42
- function registerProductSetup(
43
- NftId productNftId,
44
- TreasuryInfo memory setup
45
- )
46
- external
47
- onlyComponentOwnerService
48
- {
49
- NftId poolNftId = setup.poolNftId;
50
- NftId distributionNftId = setup.distributionNftId;
51
-
52
- require(address(_tokenHandler[productNftId]) == address(0), "ERROR:TRS-012:TOKEN_HANDLER_ALREADY_REGISTERED");
53
- require(_productNft[poolNftId].eqz(), "ERROR:TRS-013:POOL_ALREADY_LINKED");
54
- require(_productNft[distributionNftId].eqz(), "ERROR:TRS-014:COMPENSATION_ALREADY_LINKED");
55
-
56
- // TODO deploy TokenHandler with separate contract to save space
57
- // deploy product specific handler contract
58
- _tokenHandler[productNftId] = new TokenHandler(productNftId, address(setup.token));
59
- _productNft[distributionNftId] = productNftId;
60
- _productNft[poolNftId] = productNftId;
61
-
62
- _create(TREASURY(), productNftId, abi.encode(setup));
63
- }
64
-
65
- function setTreasuryInfo(
66
- NftId productNftId,
67
- TreasuryInfo memory info
68
- )
69
- external
70
- // TODO add authz (only component module)
71
- override
72
- {
73
- _updateData(TREASURY(), productNftId, abi.encode(info));
74
- }
75
-
76
- function getProductNftId(
77
- NftId componentNftId
78
- ) external view returns (NftId productNftId) {
79
- return _productNft[componentNftId];
80
- }
81
-
82
- function getTokenHandler(
83
- NftId componentNftId
84
- ) external view override returns (TokenHandler tokenHandler) {
85
- return _tokenHandler[componentNftId];
86
- }
87
-
88
- function hasTreasuryInfo(
89
- NftId productNftId
90
- ) public view override returns (bool hasInfo) {
91
- return _exists(TREASURY(), productNftId);
92
- }
93
-
94
- function getTreasuryInfo(
95
- NftId productNftId
96
- ) public view override returns (TreasuryInfo memory info) {
97
- return abi.decode(_getData(TREASURY(), productNftId), (TreasuryInfo));
98
- }
99
-
100
- function calculateFeeAmount(
101
- uint256 amount,
102
- Fee memory fee
103
- ) public pure override returns (uint256 feeAmount, uint256 netAmount) {
104
- return FeeLib.calculateFee(fee, amount);
105
- }
106
-
107
- function getFee(
108
- UFixed fractionalFee,
109
- uint256 fixedFee
110
- ) external pure override returns (Fee memory fee) {
111
- return FeeLib.toFee(fractionalFee, fixedFee);
112
- }
113
-
114
- function getZeroFee() external view override returns (Fee memory fee) {
115
- return _zeroFee;
116
- }
117
-
118
- function getUFixed(
119
- uint256 a
120
- ) external pure override returns (UFixed) {
121
- return UFixedLib.toUFixed(a);
122
- }
123
-
124
- function getUFixed(
125
- uint256 a,
126
- int8 exp
127
- ) external pure returns (UFixed)
128
- {
129
- return UFixedLib.toUFixed(a, exp);
130
- }
131
- }
@@ -1,315 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
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 {ITreasury, 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, TOKEN, 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
- import {UFixed, UFixedLib} from "../../types/UFixed.sol";
26
-
27
- import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
28
- import {IPoolComponent} from "../../components/IPoolComponent.sol";
29
- import {IProductComponent} from "../../components/IProductComponent.sol";
30
- import {IService} from "../base/IService.sol";
31
- import {IComponentOwnerService} from "./IComponentOwnerService.sol";
32
- import {ServiceBase} from "../base/ServiceBase.sol";
33
- import {IPool, IPoolModule} from "../module/pool/IPoolModule.sol";
34
-
35
- import {IRegistryService} from "../../registry/IRegistryService.sol";
36
-
37
- contract ComponentOwnerService is
38
- ServiceBase,
39
- IComponentOwnerService
40
- {
41
- using NftIdLib for NftId;
42
-
43
- error MissingTypeRole();
44
- error WalletIsZero();
45
- error InvalidToken();
46
- error InvalidPool();
47
- error InvalidDistribution();
48
- error InvalidPoolsInstance();
49
- error InvalidDistributionsInstance();
50
-
51
- error CollateralizationLevelIsZero();
52
-
53
- string public constant NAME = "ComponentOwnerService";
54
-
55
- modifier onlyRegisteredComponent(IBaseComponent component) {
56
- NftId nftId = getRegistry().getNftId(address(component));
57
- require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
58
- _;
59
- }
60
-
61
- constructor(
62
- address registry,
63
- NftId registryNftId,
64
- address initialOwner
65
- )
66
- {
67
- _initializeServiceBase(registry, registryNftId, initialOwner);
68
- _registerInterface(type(IComponentOwnerService).interfaceId);
69
- }
70
-
71
- function getName() public pure override(IService, ServiceBase) returns(string memory name) {
72
- return NAME;
73
- }
74
-
75
- function getRoleForType(
76
- ObjectType cType
77
- ) public pure override returns (RoleId role) {
78
- if (cType == PRODUCT()) {
79
- return PRODUCT_OWNER_ROLE();
80
- }
81
- if (cType == POOL()) {
82
- return POOL_OWNER_ROLE();
83
- }
84
- if (cType == DISTRIBUTION()) {
85
- return DISTRIBUTION_OWNER_ROLE();
86
- }
87
- if (cType == ORACLE()) {
88
- return ORACLE_OWNER_ROLE();
89
- }
90
- }
91
-
92
- function getRegistryService() public view virtual returns (IRegistryService) {
93
- address service = getRegistry().getServiceAddress("RegistryService", getMajorVersion());
94
- return IRegistryService(service);
95
- }
96
-
97
- function registerProduct(
98
- IBaseComponent product
99
- ) external returns (NftId nftId) {
100
-
101
- // TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
102
- (
103
- IRegistry.ObjectInfo memory info,
104
- bytes memory data
105
- ) = getRegistryService().registerProduct(
106
- product,
107
- msg.sender);
108
-
109
- NftId instanceNftId = info.parentNftId;
110
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
111
- IInstance instance = IInstance(instanceAddress);
112
-
113
- RoleId typeRole = getRoleForType(PRODUCT());
114
- // TODO refactor to use access manager infra
115
- // if(instance.hasRole(typeRole, msg.sender) == false) {
116
- // revert MissingTypeRole();
117
- // }
118
-
119
- _registerProduct(
120
- info.nftId,
121
- instanceNftId,
122
- instance,
123
- data
124
- );
125
- }
126
-
127
- function registerPool(
128
- IBaseComponent pool
129
- ) external returns (NftId nftId) {
130
-
131
- // TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
132
- (
133
- IRegistry.ObjectInfo memory info,
134
- bytes memory data
135
- ) = getRegistryService().registerPool(
136
- pool,
137
- msg.sender);
138
-
139
- NftId instanceNftId = info.parentNftId;
140
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
141
- IInstance instance = IInstance(instanceAddress);
142
-
143
- RoleId typeRole = getRoleForType(POOL());
144
- // TODO refactor to use access manager infra
145
- // if(instance.hasRole(typeRole, msg.sender) == false) {
146
- // revert MissingTypeRole();
147
- // }
148
-
149
- _registerPool(
150
- info.nftId,
151
- instanceNftId,
152
- instance,
153
- data
154
- );
155
- }
156
-
157
- function registerDistribution(
158
- IBaseComponent distribution
159
- ) external returns (NftId nftId) {
160
-
161
- // TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
162
- (
163
- IRegistry.ObjectInfo memory info,
164
- bytes memory data
165
- ) = getRegistryService().registerDistribution(
166
- distribution,
167
- msg.sender);
168
-
169
- NftId instanceNftId = info.parentNftId;
170
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
171
- IInstance instance = IInstance(instanceAddress);
172
-
173
- RoleId typeRole = getRoleForType(DISTRIBUTION());
174
- // TODO refactor to use access manager infra
175
- // if(instance.hasRole(typeRole, msg.sender) == false) {
176
- // revert MissingTypeRole();
177
- // }
178
- }
179
-
180
- function lock(
181
- IBaseComponent component
182
- ) external override onlyRegisteredComponent(component) {
183
- // TODO use msg.sender to get component and get instance via registered parent nft id
184
- IInstance instance = component.getInstance();
185
- NftId nftId = component.getNftId();
186
- Key32 key = nftId.toKey32(COMPONENT());
187
- instance.updateState(key, PAUSED());
188
- }
189
-
190
- function unlock(
191
- IBaseComponent component
192
- ) external override onlyRegisteredComponent(component) {
193
- // TODO use msg.sender to get component and get instance via registered parent nft id
194
- IInstance instance = component.getInstance();
195
- NftId nftId = component.getNftId();
196
- Key32 key = nftId.toKey32(COMPONENT());
197
- instance.updateState(key, ACTIVE());
198
- }
199
-
200
- // Internals
201
-
202
- function _registerProduct(
203
- NftId nftId,
204
- NftId instanceNftId,
205
- IInstance instance,
206
- bytes memory data
207
- )
208
- internal
209
- {
210
- (
211
- ITreasury.TreasuryInfo memory info,
212
- address wallet
213
- ) = abi.decode(data, (ITreasury.TreasuryInfo, address));
214
-
215
- IRegistry _registry = getRegistry();
216
-
217
- if(wallet == address(0)) {
218
- revert WalletIsZero();
219
- }
220
-
221
- IRegistry.ObjectInfo memory tokenInfo = _registry.getObjectInfo(address(info.token));
222
-
223
- if(tokenInfo.objectType != TOKEN()) {
224
- revert InvalidToken();
225
- }
226
-
227
- IRegistry.ObjectInfo memory poolInfo = _registry.getObjectInfo(info.poolNftId);
228
-
229
- if(poolInfo.objectType != POOL()) {
230
- revert InvalidPool();
231
- }
232
-
233
- if(poolInfo.parentNftId != instanceNftId) {
234
- revert InvalidPoolsInstance();
235
- }
236
- // TODO pool have the same token
237
- //ITreasury.PoolSetup memory poolSetup = instance.getPoolSetup(info.poolNftId);
238
- //require(tokenInfo.objectAddress == address(poolSetup.token), "ERROR:COS-018:PRODUCT_POOL_TOKEN_MISMATCH");
239
- // TODO pool is not linked
240
-
241
- IRegistry.ObjectInfo memory distributionInfo = _registry.getObjectInfo(info.distributionNftId);
242
-
243
- if(distributionInfo.objectType != DISTRIBUTION()) {
244
- revert InvalidDistribution();
245
- }
246
-
247
- if(distributionInfo.parentNftId != instanceNftId) {
248
- revert InvalidDistributionsInstance();
249
- }
250
- // TODO distribution have the same token
251
- // TODO distribution is not linked
252
-
253
- // component module
254
- instance.registerComponent(
255
- nftId,
256
- info.token,
257
- wallet // TODO move wallet into TreasuryInfo?
258
- );
259
-
260
- // treasury module
261
- instance.registerProductSetup(
262
- nftId,
263
- info
264
- );
265
- }
266
-
267
- function _registerPool(
268
- NftId nftId,
269
- NftId instanceNftId,
270
- IInstance instance,
271
- bytes memory data
272
- )
273
- internal
274
- {
275
- (
276
- IPool.PoolInfo memory info,
277
- address wallet,
278
- IERC20Metadata token,
279
- /*poolFee*/,
280
- /*stakingFee*/,
281
- /*performanceFee*/
282
- ) = abi.decode(data, (IPool.PoolInfo, address, IERC20Metadata, Fee, Fee, Fee));
283
-
284
- IRegistry _registry = getRegistry();
285
-
286
- if(wallet == address(0)) {
287
- revert WalletIsZero();
288
- }
289
-
290
- ObjectType tokenType = _registry.getObjectInfo(address(token)).objectType;
291
-
292
- if(tokenType != TOKEN()) {
293
- revert InvalidToken();
294
- }
295
-
296
- if(UFixedLib.eqz(info.collateralizationLevel)) {
297
- revert CollateralizationLevelIsZero();
298
- }
299
-
300
- // TODO add more validations
301
-
302
- // component module
303
- instance.registerComponent(
304
- nftId,
305
- token,
306
- wallet
307
- );
308
-
309
- // pool module
310
- instance.registerPool(
311
- nftId,
312
- info
313
- );
314
- }
315
- }
@@ -1,20 +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
- // TODO move to product/pool services
14
- function lock(IBaseComponent component) external;
15
-
16
- // TODO move to product/pool services
17
- function unlock(IBaseComponent component) external;
18
-
19
- function getRoleForType(ObjectType cType) external pure returns (RoleId role);
20
- }
@@ -1,22 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Fee} from "../../contracts/types/Fee.sol";
5
- import {NftId} from "../../contracts/types/NftId.sol";
6
- import {Distribution} from "../../contracts/components/Distribution.sol";
7
-
8
-
9
- contract TestDistribution is Distribution {
10
-
11
- constructor(
12
- address registry,
13
- NftId instanceNftid,
14
- address token,
15
- bool isVerifying,
16
- Fee memory distributionFee,
17
- address initialOwner
18
- )
19
- Distribution(registry, instanceNftid, token, isVerifying, distributionFee, initialOwner)
20
- // solhint-disable-next-line no-empty-blocks
21
- {}
22
- }
@@ -1,27 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId} from "../../contracts/types/NftId.sol";
5
- import {UFixed} from "../../contracts/types/UFixed.sol";
6
- import {Fee} from "../../contracts/types/Fee.sol";
7
- import {Pool} from "../../contracts/components/Pool.sol";
8
-
9
-
10
- contract TestPool is Pool {
11
-
12
- constructor(
13
- address registry,
14
- NftId instanceNftid,
15
- address token,
16
- bool isInterceptor,
17
- bool isVerifying,
18
- UFixed collateralizationLevel,
19
- Fee memory poolFee,
20
- Fee memory stakingFee,
21
- Fee memory performanceFee,
22
- address initialOwner
23
- )
24
- Pool(registry, instanceNftid, token, isInterceptor, isVerifying, collateralizationLevel, poolFee, stakingFee, performanceFee, initialOwner)
25
- // solhint-disable-next-line no-empty-blocks
26
- {}
27
- }
@@ -1,74 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Product} from "../../contracts/components/Product.sol";
5
- import {NftId, toNftId} from "../../contracts/types/NftId.sol";
6
- import {ReferralId} from "../types/ReferralId.sol";
7
- import {RiskId} from "../../contracts/types/RiskId.sol";
8
- import {Timestamp, blockTimestamp} from "../../contracts/types/Timestamp.sol";
9
- import {Fee} from "../../contracts/types/Fee.sol";
10
-
11
- contract TestProduct is Product {
12
-
13
- event LogTestProductSender(address sender);
14
-
15
- string public constant DEFAULT_RISK_NAME = "DEFAULT_RISK";
16
- bool private defaultRiskCreated;
17
-
18
- constructor(
19
- address registry,
20
- NftId instanceNftid,
21
- address token,
22
- bool isInterceptor,
23
- address pool,
24
- address distribution,
25
- Fee memory productFee,
26
- Fee memory processingFee,
27
- address initialOwner
28
- )
29
- Product(registry, instanceNftid, token, isInterceptor, pool, distribution, productFee, processingFee, initialOwner)
30
- // solhint-disable-next-line no-empty-blocks
31
- {
32
- }
33
-
34
- function getDefaultRiskId() public pure returns (RiskId) {
35
- return _toRiskId(DEFAULT_RISK_NAME);
36
- }
37
-
38
- function applyForPolicy(
39
- uint256 sumInsuredAmount,
40
- uint256 lifetime,
41
- NftId bundleNftId,
42
- ReferralId referralId
43
- )
44
- external
45
- returns(NftId nftId)
46
- {
47
- RiskId riskId = getDefaultRiskId();
48
- bytes memory applicationData = "";
49
-
50
- if (!defaultRiskCreated) {
51
- _createRisk(riskId, "");
52
- defaultRiskCreated = true;
53
- }
54
-
55
- nftId = _createApplication(
56
- msg.sender, // policy holder
57
- riskId,
58
- sumInsuredAmount,
59
- lifetime,
60
- applicationData,
61
- bundleNftId,
62
- referralId
63
- );
64
- }
65
-
66
- function underwrite(NftId nftId, bool requirePremiumPayment, Timestamp activateAt) external {
67
- emit LogTestProductSender(msg.sender);
68
- _underwrite(nftId, requirePremiumPayment, activateAt);
69
- }
70
-
71
- function collectPremium(NftId nftId, Timestamp activateAt) external {
72
- _collectPremium(nftId, activateAt);
73
- }
74
- }
@@ -1,48 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
- import {REFERRAL} from "./ObjectType.sol";
6
-
7
- type ReferralId is bytes8;
8
-
9
- // type bindings
10
- using {
11
- eqReferralId as ==,
12
- neReferralId as !=,
13
- ReferralIdLib.toKey32
14
- } for ReferralId global;
15
-
16
- // general pure free functions
17
-
18
- // @dev Returns true iff risk ids a and b are identical
19
- function eqReferralId(ReferralId a, ReferralId b) pure returns (bool isSame) {
20
- return ReferralId.unwrap(a) == ReferralId.unwrap(b);
21
- }
22
-
23
- // @dev Returns true iff risk ids a and b are different
24
- function neReferralId(ReferralId a, ReferralId b) pure returns (bool isDifferent) {
25
- return ReferralId.unwrap(a) != ReferralId.unwrap(b);
26
- }
27
-
28
- library ReferralIdLib {
29
-
30
- function zeroReferralId() public pure returns (ReferralId) {
31
- return ReferralId.wrap(bytes8(0));
32
- }
33
-
34
- // @dev Converts a role string into a role id.
35
- function toReferralId(string memory referral) public pure returns (ReferralId) {
36
- return ReferralId.wrap(bytes8(keccak256(abi.encode(referral))));
37
- }
38
-
39
- /// @dev Returns the key32 value for the specified id
40
- function toKey32(ReferralId id) public pure returns (Key32 key) {
41
- return Key32Lib.toKey32(REFERRAL(), toKeyId(id));
42
- }
43
-
44
- /// @dev Returns the key id value for the specified id
45
- function toKeyId(ReferralId id) public pure returns (KeyId keyId) {
46
- return KeyId.wrap(bytes31(ReferralId.unwrap(id)));
47
- }
48
- }