@etherisc/gif-next 0.0.2-b4a6c3e-033 → 0.0.2-b5e5146-738

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 (406) hide show
  1. package/README.md +331 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +491 -40
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +849 -0
  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} +244 -241
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +648 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +815 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +748 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +794 -106
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +738 -135
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  26. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  28. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  30. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  32. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  42. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  44. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  45. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  46. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  47. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  48. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  49. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  50. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  51. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  52. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  53. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1310 -809
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +565 -0
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +2242 -908
  60. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1034 -0
  62. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1381 -0
  64. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +949 -0
  66. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +473 -0
  68. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  70. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +603 -0
  72. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  74. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  75. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  76. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  78. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  83. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  85. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  86. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  87. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  88. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  90. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  92. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
  94. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1102 -0
  96. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +449 -0
  98. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +772 -0
  100. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +437 -0
  102. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +715 -0
  104. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +441 -0
  106. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +766 -0
  108. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +494 -0
  110. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +531 -0
  112. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1227 -0
  114. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +505 -0
  116. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +806 -0
  118. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +437 -0
  120. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +856 -0
  122. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +437 -0
  124. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  125. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
  126. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +567 -31
  128. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  129. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +981 -0
  130. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  131. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  132. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  133. package/artifacts/contracts/registry/Registry.sol/Registry.json +644 -74
  134. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  136. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  137. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1200 -0
  138. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +464 -0
  140. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  141. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  142. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  143. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +394 -0
  144. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  145. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  146. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  147. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  148. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  150. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +196 -0
  152. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IService.sol/IService.json +416 -0
  154. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  156. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +171 -0
  158. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +362 -0
  160. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +282 -0
  162. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  163. package/artifacts/contracts/shared/Service.sol/Service.json +476 -0
  164. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  165. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  166. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  167. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  168. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
  170. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  171. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  172. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  173. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +313 -0
  174. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  175. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  176. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  177. package/artifacts/contracts/test/TestService.sol/TestService.json +608 -0
  178. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  179. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  180. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  181. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  182. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  183. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +286 -0
  184. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  185. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  186. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  187. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  188. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  190. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  192. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  194. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  196. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  198. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  200. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  201. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  202. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  204. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  206. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  208. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  210. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  212. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  214. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +77 -2
  216. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  218. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  220. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  222. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  223. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  224. package/contracts/components/Component.sol +206 -46
  225. package/contracts/components/Distribution.sol +150 -0
  226. package/contracts/components/IComponent.sol +43 -0
  227. package/contracts/components/IDistributionComponent.sol +47 -0
  228. package/contracts/components/IPoolComponent.sol +70 -0
  229. package/contracts/components/IProductComponent.sol +39 -0
  230. package/contracts/components/Pool.sol +221 -25
  231. package/contracts/components/Product.sol +222 -46
  232. package/contracts/experiment/cloning/Cloner.sol +47 -0
  233. package/contracts/instance/BundleManager.sol +125 -0
  234. package/contracts/instance/Cloneable.sol +46 -0
  235. package/contracts/instance/IInstance.sol +71 -24
  236. package/contracts/instance/IInstanceService.sol +40 -0
  237. package/contracts/instance/Instance.sol +248 -51
  238. package/contracts/instance/InstanceAccessManager.sol +298 -0
  239. package/contracts/instance/InstanceReader.sol +293 -0
  240. package/contracts/instance/InstanceService.sol +372 -0
  241. package/contracts/instance/InstanceServiceManager.sol +54 -0
  242. package/contracts/instance/ObjectManager.sol +84 -0
  243. package/contracts/instance/base/ComponentService.sol +134 -0
  244. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  245. package/contracts/instance/base/ILifecycle.sol +30 -0
  246. package/contracts/instance/base/KeyValueStore.sol +172 -0
  247. package/contracts/instance/base/Lifecycle.sol +100 -0
  248. package/contracts/instance/module/IAccess.sol +48 -0
  249. package/contracts/instance/module/IBundle.sol +20 -0
  250. package/contracts/instance/module/IDistribution.sol +39 -0
  251. package/contracts/instance/module/IPolicy.sol +45 -0
  252. package/contracts/instance/module/IRisk.sol +11 -0
  253. package/contracts/instance/module/ISetup.sol +46 -0
  254. package/contracts/instance/module/ITreasury.sol +23 -0
  255. package/contracts/instance/service/BundleService.sol +293 -0
  256. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  257. package/contracts/instance/service/DistributionService.sol +105 -0
  258. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  259. package/contracts/instance/service/IBundleService.sol +44 -0
  260. package/contracts/instance/service/IDistributionService.sol +12 -0
  261. package/contracts/instance/service/IPolicyService.sol +94 -0
  262. package/contracts/instance/service/IPoolService.sol +20 -0
  263. package/contracts/instance/service/IProductService.sol +40 -0
  264. package/contracts/instance/service/PolicyService.sol +538 -0
  265. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  266. package/contracts/instance/service/PoolService.sol +109 -0
  267. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  268. package/contracts/instance/service/ProductService.sol +232 -0
  269. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  270. package/contracts/registry/ChainNft.sol +129 -62
  271. package/contracts/registry/IRegistry.sol +72 -41
  272. package/contracts/registry/IRegistryService.sol +65 -0
  273. package/contracts/registry/ITransferInterceptor.sol +6 -0
  274. package/contracts/registry/Registry.sol +401 -131
  275. package/contracts/registry/RegistryAccessManager.sol +216 -0
  276. package/contracts/registry/RegistryService.sol +262 -0
  277. package/contracts/registry/RegistryServiceManager.sol +62 -0
  278. package/contracts/registry/ReleaseManager.sol +332 -0
  279. package/contracts/registry/TokenRegistry.sol +112 -0
  280. package/contracts/shared/ContractDeployerLib.sol +72 -0
  281. package/contracts/shared/ERC165.sol +25 -0
  282. package/contracts/shared/INftOwnable.sol +22 -0
  283. package/contracts/shared/IRegisterable.sol +15 -0
  284. package/contracts/shared/IService.sol +16 -0
  285. package/contracts/shared/IVersionable.sol +96 -0
  286. package/contracts/shared/NftOwnable.sol +139 -0
  287. package/contracts/shared/ProxyManager.sol +94 -0
  288. package/contracts/shared/Registerable.sol +86 -0
  289. package/contracts/shared/Service.sol +60 -0
  290. package/contracts/shared/TokenHandler.sol +27 -0
  291. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  292. package/contracts/shared/Versionable.sol +147 -0
  293. package/contracts/test/TestFee.sol +25 -0
  294. package/contracts/test/TestRegisterable.sol +18 -0
  295. package/contracts/test/TestRoleId.sol +14 -0
  296. package/contracts/test/TestService.sol +25 -0
  297. package/contracts/test/TestToken.sol +26 -0
  298. package/contracts/test/TestVersion.sol +44 -0
  299. package/contracts/test/TestVersionable.sol +17 -0
  300. package/contracts/test/Usdc.sol +26 -0
  301. package/contracts/types/AddressSet.sol +58 -0
  302. package/contracts/types/DistributorType.sol +55 -0
  303. package/contracts/types/Fee.sol +44 -20
  304. package/contracts/types/Key32.sol +50 -0
  305. package/contracts/types/NftId.sol +22 -1
  306. package/contracts/types/NftIdSet.sol +62 -0
  307. package/contracts/types/NumberId.sol +52 -0
  308. package/contracts/types/ObjectType.sol +60 -15
  309. package/contracts/types/Referral.sol +85 -0
  310. package/contracts/types/RiskId.sol +43 -0
  311. package/contracts/types/RoleId.sol +90 -0
  312. package/contracts/types/StateId.sol +18 -4
  313. package/contracts/types/Timestamp.sol +29 -4
  314. package/contracts/types/UFixed.sol +150 -31
  315. package/contracts/types/Version.sol +107 -0
  316. package/package.json +14 -5
  317. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  318. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  319. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  320. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  321. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  322. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  323. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  324. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  325. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  326. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  327. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  328. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  329. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  330. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  331. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  332. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  333. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  334. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  335. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  336. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  337. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  338. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  339. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  340. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  341. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  342. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  343. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  344. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  345. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  346. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  347. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  348. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  349. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  350. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  351. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  352. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  353. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  354. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  355. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  356. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  357. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  358. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  359. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  360. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  361. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  362. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  363. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  364. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  365. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  366. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  367. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  368. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  369. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  370. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  371. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  372. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  373. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  374. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  375. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  376. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  377. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  378. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  379. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  380. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  381. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  382. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  383. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  384. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  385. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  386. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  387. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  388. package/contracts/components/IPool.sol +0 -15
  389. package/contracts/components/IProduct.sol +0 -16
  390. package/contracts/experiment/statemachine/README.md +0 -112
  391. package/contracts/instance/access/Access.sol +0 -165
  392. package/contracts/instance/access/IAccess.sol +0 -63
  393. package/contracts/instance/component/ComponentModule.sol +0 -274
  394. package/contracts/instance/component/IComponent.sol +0 -74
  395. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  396. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  397. package/contracts/instance/policy/IPolicy.sol +0 -50
  398. package/contracts/instance/policy/PolicyModule.sol +0 -114
  399. package/contracts/instance/pool/IPoolModule.sol +0 -23
  400. package/contracts/instance/pool/PoolModule.sol +0 -81
  401. package/contracts/instance/product/IProductService.sol +0 -36
  402. package/contracts/instance/product/ProductService.sol +0 -136
  403. package/contracts/instance/treasury/ITreasury.sol +0 -91
  404. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  405. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  406. package/contracts/registry/IChainNft.sol +0 -21
@@ -0,0 +1,109 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Pool} from "../../components/Pool.sol";
5
+ import {IRegistry} from "../../registry/IRegistry.sol";
6
+ import {IInstance} from "../../instance/IInstance.sol";
7
+ import {IBundle} from "../../instance/module/IBundle.sol";
8
+ import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
+ import {ISetup} from "../module/ISetup.sol";
10
+ import {IPolicy} from "../module/IPolicy.sol";
11
+
12
+ import {IVersionable} from "../../shared/IVersionable.sol";
13
+ import {Versionable} from "../../shared/Versionable.sol";
14
+ import {INftOwnable} from "../../shared/INftOwnable.sol";
15
+
16
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
17
+ import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
18
+ import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
19
+ import {Fee, FeeLib} from "../../types/Fee.sol";
20
+ import {Version, VersionLib} from "../../types/Version.sol";
21
+ import {KEEP_STATE, StateId} from "../../types/StateId.sol";
22
+ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
23
+
24
+ import {IService} from "../../shared/IService.sol";
25
+ import {Service} from "../../shared/Service.sol";
26
+ import {BundleManager} from "../BundleManager.sol";
27
+ import {ComponentService} from "../base/ComponentService.sol";
28
+ import {IPoolService} from "./IPoolService.sol";
29
+ import {IRegistryService} from "../../registry/IRegistryService.sol";
30
+ import {InstanceService} from "../InstanceService.sol";
31
+ import {InstanceReader} from "../InstanceReader.sol";
32
+ import {IComponent} from "../../components/IComponent.sol";
33
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
34
+
35
+ string constant POOL_SERVICE_NAME = "PoolService";
36
+
37
+ contract PoolService is
38
+ ComponentService,
39
+ IPoolService
40
+ {
41
+ using NftIdLib for NftId;
42
+
43
+ address internal _registryAddress;
44
+
45
+ function _initialize(
46
+ address owner,
47
+ bytes memory data
48
+ )
49
+ internal
50
+ initializer
51
+ virtual override
52
+ {
53
+ address registryAddress;
54
+ address initialOwner;
55
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
56
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
57
+ // owner is PoolServiceManager deployer
58
+ _initializeService(registryAddress, owner);
59
+
60
+ _registerInterface(type(IPoolService).interfaceId);
61
+ }
62
+
63
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
64
+ return POOL();
65
+ }
66
+
67
+ function register(address poolAddress)
68
+ external
69
+ returns(NftId poolNftId)
70
+ {
71
+ (
72
+ IComponent component,
73
+ address owner,
74
+ IInstance instance,
75
+ NftId instanceNftId
76
+ ) = _checkComponentForRegistration(
77
+ poolAddress,
78
+ POOL(),
79
+ POOL_OWNER_ROLE());
80
+
81
+ IPoolComponent pool = IPoolComponent(poolAddress);
82
+ IRegistry.ObjectInfo memory poolInfo = getRegistryService().registerPool(pool, owner);
83
+ pool.linkToRegisteredNftId();
84
+ poolNftId = poolInfo.nftId;
85
+
86
+ instance.createPoolSetup(poolNftId, pool.getSetupInfo());
87
+ getInstanceService().createGifTarget(instanceNftId, poolAddress, pool.getName());
88
+ }
89
+
90
+ function setFees(
91
+ Fee memory poolFee,
92
+ Fee memory stakingFee,
93
+ Fee memory performanceFee
94
+ )
95
+ external
96
+ override
97
+ {
98
+ (IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
99
+ InstanceReader instanceReader = instance.getInstanceReader();
100
+ NftId poolNftId = poolInfo.nftId;
101
+
102
+ ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
103
+ poolSetupInfo.poolFee = poolFee;
104
+ poolSetupInfo.stakingFee = stakingFee;
105
+ poolSetupInfo.performanceFee = performanceFee;
106
+
107
+ instance.updatePoolSetup(poolNftId, poolSetupInfo, KEEP_STATE());
108
+ }
109
+ }
@@ -0,0 +1,51 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {PoolService} from "./PoolService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {REGISTRY} from "../../types/ObjectType.sol";
10
+
11
+ contract PoolServiceManager is ProxyManager {
12
+
13
+ PoolService private _poolService;
14
+
15
+ /// @dev initializes proxy manager with pool service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager()
20
+ {
21
+ PoolService poolSrv = new PoolService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(poolSrv),
25
+ data);
26
+
27
+ _poolService = PoolService(address(versionable));
28
+
29
+ // TODO `this` must have a role or own nft to register service
30
+ //Registry registry = Registry(registryAddress);
31
+ //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _poolService.getMajorVersion());
32
+ //RegistryService registryService = RegistryService(registryServiceAddress);
33
+ //registryService.registerService(_poolService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_poolService));
40
+ }
41
+
42
+ //--- view functions ----------------------------------------------------//
43
+ function getPoolService()
44
+ external
45
+ view
46
+ returns (PoolService poolService)
47
+ {
48
+ return _poolService;
49
+ }
50
+
51
+ }
@@ -0,0 +1,232 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRegistry} from "../../registry/IRegistry.sol";
5
+ import {IProductComponent} from "../../components/IProductComponent.sol";
6
+ import {Product} from "../../components/Product.sol";
7
+ import {IComponent} from "../../components/IComponent.sol";
8
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
9
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
10
+ import {IInstance} from "../IInstance.sol";
11
+ import {IPolicy} from "../module/IPolicy.sol";
12
+ import {IRisk} from "../module/IRisk.sol";
13
+ import {IBundle} from "../module/IBundle.sol";
14
+ import {IProductService} from "./IProductService.sol";
15
+ import {ITreasury} from "../module/ITreasury.sol";
16
+ import {ISetup} from "../module/ISetup.sol";
17
+
18
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
19
+
20
+ import {IVersionable} from "../../shared/IVersionable.sol";
21
+ import {Versionable} from "../../shared/Versionable.sol";
22
+
23
+ import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
24
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
25
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
26
+ import {ObjectType, PRODUCT, POOL, POLICY} from "../../types/ObjectType.sol";
27
+ import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
28
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
29
+ import {Fee, FeeLib} from "../../types/Fee.sol";
30
+ import {ReferralId} from "../../types/Referral.sol";
31
+ import {RiskId} from "../../types/RiskId.sol";
32
+ import {StateId} from "../../types/StateId.sol";
33
+ import {Version, VersionLib} from "../../types/Version.sol";
34
+ import {RoleId, PRODUCT_OWNER_ROLE} from "../../types/RoleId.sol";
35
+
36
+ import {IService} from "../../shared/IService.sol";
37
+ import {Service} from "../../shared/Service.sol";
38
+ import {ComponentService} from "../base/ComponentService.sol";
39
+ import {IProductService} from "./IProductService.sol";
40
+ import {InstanceReader} from "../InstanceReader.sol";
41
+ import {IPoolService} from "./PoolService.sol";
42
+
43
+ // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
44
+ contract ProductService is ComponentService, IProductService {
45
+ using NftIdLib for NftId;
46
+
47
+ IPoolService internal _poolService;
48
+
49
+ event LogProductServiceSender(address sender);
50
+
51
+ function _initialize(
52
+ address owner,
53
+ bytes memory data
54
+ )
55
+ internal
56
+ initializer
57
+ virtual override
58
+ {
59
+ address registryAddress;
60
+ address initialOwner;
61
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
62
+
63
+ _initializeService(registryAddress, owner);
64
+
65
+ _poolService = IPoolService(_registry.getServiceAddress(POOL(), getMajorVersion()));
66
+
67
+ _registerInterface(type(IProductService).interfaceId);
68
+ }
69
+
70
+
71
+ function register(address productAddress)
72
+ external
73
+ returns(NftId productNftId)
74
+ {
75
+ (
76
+ IComponent component,
77
+ address owner,
78
+ IInstance instance,
79
+ NftId instanceNftId
80
+ ) = _checkComponentForRegistration(
81
+ productAddress,
82
+ PRODUCT(),
83
+ PRODUCT_OWNER_ROLE());
84
+
85
+ IProductComponent product = IProductComponent(productAddress);
86
+ IRegistry.ObjectInfo memory productInfo = getRegistryService().registerProduct(product, owner);
87
+ productNftId = productInfo.nftId;
88
+ _createProductSetup(
89
+ instance,
90
+ product,
91
+ productNftId);
92
+ }
93
+
94
+
95
+ function _createProductSetup(
96
+ IInstance instance,
97
+ IProductComponent product,
98
+ NftId productNftId
99
+ )
100
+ internal
101
+ returns (string memory name)
102
+ {
103
+ // wire distribution and pool components to product component
104
+ ISetup.ProductSetupInfo memory setup = product.getSetupInfo();
105
+ IComponent distribution = IComponent(_registry.getObjectInfo(setup.distributionNftId).objectAddress);
106
+ IComponent pool = IComponent(_registry.getObjectInfo(setup.poolNftId).objectAddress);
107
+
108
+ distribution.setProductNftId(productNftId);
109
+ pool.setProductNftId(productNftId);
110
+ product.setProductNftId(productNftId);
111
+ product.linkToRegisteredNftId();
112
+
113
+ // create product setup in instance
114
+ instance.createProductSetup(productNftId, product.getSetupInfo());
115
+
116
+ // create target for instane access manager
117
+ getInstanceService().createGifTarget(
118
+ _registry.getNftId(address(instance)),
119
+ address(product),
120
+ product.getName());
121
+ }
122
+
123
+ function getDomain() public pure override(IService, Service) returns(ObjectType) {
124
+ return PRODUCT();
125
+ }
126
+
127
+
128
+ function _decodeAndVerifyProductData(bytes memory data)
129
+ internal
130
+ returns(string memory name, ISetup.ProductSetupInfo memory setup)
131
+ {
132
+ (name, setup) = abi.decode(
133
+ data,
134
+ (string, ISetup.ProductSetupInfo)
135
+ );
136
+
137
+ // TODO add checks
138
+ // if(wallet == address(0)) {
139
+ // revert WalletIsZero();
140
+ // }
141
+
142
+ // IRegistry.ObjectInfo memory tokenInfo = _registry.getObjectInfo(address(info.token));
143
+
144
+ // if(tokenInfo.objectType != TOKEN()) {
145
+ // revert InvalidToken();
146
+ // }
147
+
148
+ // IRegistry.ObjectInfo memory poolInfo = _registry.getObjectInfo(info.poolNftId);
149
+
150
+ // if(poolInfo.objectType != POOL()) {
151
+ // revert InvalidPool();
152
+ // }
153
+
154
+ // if(poolInfo.parentNftId != instanceNftId) {
155
+ // revert InvalidPoolsInstance();
156
+ // }
157
+ // // TODO pool have the same token
158
+ // //ITreasury.PoolSetup memory poolSetup = instance.getPoolSetup(info.poolNftId);
159
+ // //require(tokenInfo.objectAddress == address(poolSetup.token), "ERROR:COS-018:PRODUCT_POOL_TOKEN_MISMATCH");
160
+ // // TODO pool is not linked
161
+
162
+ // IRegistry.ObjectInfo memory distributionInfo = _registry.getObjectInfo(info.distributionNftId);
163
+
164
+ // if(distributionInfo.objectType != DISTRIBUTION()) {
165
+ // revert InvalidDistribution();
166
+ // }
167
+
168
+ // if(distributionInfo.parentNftId != instanceNftId) {
169
+ // revert InvalidDistributionsInstance();
170
+ // }
171
+ // // TODO distribution have the same token
172
+ // // TODO distribution is not linked
173
+ }
174
+
175
+ function setFees(
176
+ Fee memory productFee,
177
+ Fee memory processingFee
178
+ )
179
+ external
180
+ {
181
+ // TODO check args
182
+
183
+ (
184
+ IRegistry.ObjectInfo memory productInfo,
185
+ IInstance instance
186
+ ) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
187
+
188
+ InstanceReader instanceReader = instance.getInstanceReader();
189
+ NftId productNftId = productInfo.nftId;
190
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
191
+
192
+ productSetupInfo.productFee = productFee;
193
+ productSetupInfo.processingFee = processingFee;
194
+
195
+ instance.updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
196
+ }
197
+
198
+ function createRisk(
199
+ RiskId riskId,
200
+ bytes memory data
201
+ ) external override {
202
+ (
203
+ IRegistry.ObjectInfo memory productInfo,
204
+ IInstance instance
205
+ ) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
206
+ NftId productNftId = productInfo.nftId;
207
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
208
+ instance.createRisk(
209
+ riskId,
210
+ riskInfo
211
+ );
212
+ }
213
+
214
+ function updateRisk(
215
+ RiskId riskId,
216
+ bytes memory data
217
+ ) external {
218
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
219
+ InstanceReader instanceReader = instance.getInstanceReader();
220
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
221
+ riskInfo.data = data;
222
+ instance.updateRisk(riskId, riskInfo, KEEP_STATE());
223
+ }
224
+
225
+ function updateRiskState(
226
+ RiskId riskId,
227
+ StateId state
228
+ ) external {
229
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
230
+ instance.updateRiskState(riskId, state);
231
+ }
232
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {ProductService} from "./ProductService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {VersionLib} from "../../types/Version.sol";
10
+
11
+ contract ProductServiceManager is ProxyManager {
12
+
13
+ ProductService private _productService;
14
+
15
+ /// @dev initializes proxy manager with product service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager()
20
+ {
21
+ ProductService svc = new ProductService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(svc),
25
+ data);
26
+
27
+ _productService = ProductService(address(versionable));
28
+
29
+ // Registry registry = Registry(registryAddress);
30
+ // address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ // RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_productService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_productService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getProductService()
47
+ external
48
+ view
49
+ returns (ProductService productService)
50
+ {
51
+ return _productService;
52
+ }
53
+
54
+ }