@etherisc/gif-next 0.0.2-d679de9-140 → 0.0.2-d6f24e1-490

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 (400) hide show
  1. package/README.md +255 -8
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +302 -23
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +744 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +217 -23
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +90 -171
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +615 -63
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +620 -70
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/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/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  51. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  52. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +775 -0
  54. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  55. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  56. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  57. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +923 -1091
  60. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  61. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  62. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  63. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +485 -0
  64. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  65. package/artifacts/contracts/instance/Instance.sol/Instance.json +2557 -1105
  66. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +940 -0
  68. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  70. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  71. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
  72. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +970 -0
  74. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +512 -0
  76. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +272 -0
  78. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +276 -36
  80. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  81. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +51 -1
  82. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  83. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +45 -127
  84. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  85. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +55 -245
  87. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +6 -6
  89. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  90. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  91. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  92. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  93. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  94. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
  95. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  96. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  97. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  98. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  99. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  100. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  101. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  102. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  103. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +401 -65
  105. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
  107. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
  109. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  110. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +177 -75
  111. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  112. package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IDistributionService.sol/IDistributionService.json} +204 -58
  113. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  114. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +401 -49
  115. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  116. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +334 -51
  117. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  118. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +629 -51
  119. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  120. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +464 -0
  121. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  122. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +552 -78
  123. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  124. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
  125. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  126. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  127. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  128. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +377 -37
  129. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  130. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +947 -0
  131. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  132. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  133. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  134. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -123
  135. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  136. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1293 -0
  137. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +517 -0
  139. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  140. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  141. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  142. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  143. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  144. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  145. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  146. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  149. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  150. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +175 -54
  151. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  153. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  154. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  155. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  156. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  157. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  159. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  160. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +199 -83
  161. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  162. package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
  163. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  164. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  165. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  166. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  167. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  168. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  169. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestFee.sol/TestFee.json +10 -10
  171. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  173. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
  175. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  176. package/artifacts/contracts/test/TestService.sol/TestService.json +283 -62
  177. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  178. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  179. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  180. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +12 -12
  181. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  182. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
  183. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  184. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  185. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  186. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +2 -2
  187. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  189. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  191. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  192. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  193. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Fee.sol/FeeLib.json +52 -13
  195. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  196. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  197. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +4 -4
  199. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  200. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  201. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  202. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  203. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  205. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  206. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  207. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  208. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  209. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  210. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  211. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  213. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  214. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  215. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  216. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  217. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  218. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  219. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  220. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  221. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  222. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  223. package/contracts/components/BaseComponent.sol +75 -31
  224. package/contracts/components/Distribution.sol +163 -0
  225. package/contracts/components/IBaseComponent.sol +15 -3
  226. package/contracts/components/IDistributionComponent.sol +44 -0
  227. package/contracts/components/IPoolComponent.sol +19 -10
  228. package/contracts/components/IProductComponent.sol +25 -9
  229. package/contracts/components/Pool.sol +126 -33
  230. package/contracts/components/Product.sol +204 -32
  231. package/contracts/experiment/cloning/Cloner.sol +47 -0
  232. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  233. package/contracts/instance/BundleManager.sol +129 -0
  234. package/contracts/instance/Cloneable.sol +46 -0
  235. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  236. package/contracts/instance/IInstance.sol +49 -45
  237. package/contracts/instance/IInstanceBase.sol +26 -0
  238. package/contracts/instance/IInstanceService.sol +32 -0
  239. package/contracts/instance/Instance.sol +441 -51
  240. package/contracts/instance/InstanceAccessManager.sol +288 -0
  241. package/contracts/instance/InstanceBase.sol +41 -0
  242. package/contracts/instance/InstanceReader.sol +315 -0
  243. package/contracts/instance/InstanceService.sol +233 -0
  244. package/contracts/instance/InstanceServiceManager.sol +57 -0
  245. package/contracts/instance/ObjectManager.sol +95 -0
  246. package/contracts/instance/base/ComponentServiceBase.sol +102 -10
  247. package/contracts/instance/base/IInstanceBase.sol +11 -2
  248. package/contracts/instance/base/IKeyValueStore.sol +13 -13
  249. package/contracts/instance/base/ILifecycle.sol +3 -3
  250. package/contracts/instance/base/KeyValueStore.sol +53 -37
  251. package/contracts/instance/base/Lifecycle.sol +16 -11
  252. package/contracts/instance/module/IAccess.sol +38 -0
  253. package/contracts/instance/module/IBundle.sol +20 -0
  254. package/contracts/instance/module/IDistribution.sol +39 -0
  255. package/contracts/instance/module/IPolicy.sol +45 -0
  256. package/contracts/instance/module/IRisk.sol +11 -0
  257. package/contracts/instance/module/ISetup.sol +46 -0
  258. package/contracts/instance/module/ITreasury.sol +23 -0
  259. package/contracts/instance/service/ComponentOwnerService.sol +244 -97
  260. package/contracts/instance/service/DistributionService.sol +88 -0
  261. package/contracts/instance/service/DistributionServiceManager.sol +54 -0
  262. package/contracts/instance/service/IComponentOwnerService.sol +1 -3
  263. package/contracts/instance/service/IDistributionService.sol +12 -0
  264. package/contracts/instance/service/IPoolService.sol +24 -3
  265. package/contracts/instance/service/IProductService.sol +59 -7
  266. package/contracts/instance/service/PoolService.sol +206 -42
  267. package/contracts/instance/service/PoolServiceManager.sol +54 -0
  268. package/contracts/instance/service/ProductService.sol +349 -133
  269. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  270. package/contracts/registry/ChainNft.sol +80 -37
  271. package/contracts/registry/IRegistry.sol +49 -25
  272. package/contracts/registry/IRegistryService.sol +50 -0
  273. package/contracts/registry/ITransferInterceptor.sol +6 -0
  274. package/contracts/registry/Registry.sol +337 -270
  275. package/contracts/registry/RegistryService.sol +358 -0
  276. package/contracts/registry/RegistryServiceManager.sol +80 -0
  277. package/contracts/registry/TokenRegistry.sol +111 -0
  278. package/contracts/shared/ContractDeployerLib.sol +72 -0
  279. package/contracts/shared/ERC165.sol +6 -2
  280. package/contracts/shared/INftOwnable.sol +22 -0
  281. package/contracts/shared/IRegisterable.sol +8 -15
  282. package/contracts/{instance/base → shared}/IService.sol +3 -3
  283. package/contracts/shared/IVersionable.sol +55 -11
  284. package/contracts/shared/NftOwnable.sol +134 -0
  285. package/contracts/shared/ProxyManager.sol +94 -0
  286. package/contracts/shared/Registerable.sol +63 -59
  287. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  288. package/contracts/shared/Service.sol +55 -0
  289. package/contracts/shared/TokenHandler.sol +27 -0
  290. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  291. package/contracts/shared/Versionable.sol +113 -55
  292. package/contracts/test/TestFee.sol +2 -2
  293. package/contracts/test/TestRegisterable.sol +5 -6
  294. package/contracts/test/TestRoleId.sol +2 -2
  295. package/contracts/test/TestService.sol +5 -13
  296. package/contracts/test/Usdc.sol +26 -0
  297. package/contracts/types/DistributorType.sol +55 -0
  298. package/contracts/types/Fee.sol +10 -5
  299. package/contracts/types/Key32.sol +8 -3
  300. package/contracts/types/NftIdSet.sol +26 -24
  301. package/contracts/types/NumberId.sol +52 -0
  302. package/contracts/types/ObjectType.sol +51 -14
  303. package/contracts/types/Referral.sol +85 -0
  304. package/contracts/types/RiskId.sol +43 -0
  305. package/contracts/types/RoleId.sol +65 -11
  306. package/contracts/types/StateId.sol +5 -1
  307. package/contracts/types/Timestamp.sol +7 -3
  308. package/contracts/types/UFixed.sol +139 -24
  309. package/contracts/types/Version.sol +13 -1
  310. package/package.json +7 -3
  311. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  312. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  313. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  314. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  315. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  316. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  317. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  318. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  319. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  320. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  321. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  322. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  323. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  324. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  325. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  326. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  327. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  328. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  329. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  330. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  331. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  332. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  333. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  334. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  335. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  336. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  337. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  338. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  339. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  340. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  341. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  342. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  343. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  344. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  345. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  346. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  347. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  348. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  349. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  350. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  351. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  352. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  353. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  354. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  355. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  356. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  357. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  358. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  359. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  360. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  361. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  362. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  363. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  364. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  365. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  366. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  367. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  368. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  369. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  370. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  371. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  372. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  373. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  374. package/contracts/experiment/statemachine/README.md +0 -112
  375. package/contracts/instance/IInstanceLinked.sol +0 -8
  376. package/contracts/instance/base/InstanceBase.sol +0 -80
  377. package/contracts/instance/base/ModuleBase.sol +0 -52
  378. package/contracts/instance/base/ServiceBase.sol +0 -37
  379. package/contracts/instance/module/access/Access.sol +0 -149
  380. package/contracts/instance/module/access/IAccess.sol +0 -53
  381. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  382. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  383. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  384. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  385. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  386. package/contracts/instance/module/component/IComponent.sol +0 -53
  387. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  388. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  389. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  390. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  391. package/contracts/instance/module/risk/IRisk.sol +0 -10
  392. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  393. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  394. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  395. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  396. package/contracts/registry/IChainNft.sol +0 -21
  397. package/contracts/registry/IRegistryLinked.sol +0 -8
  398. package/contracts/shared/IOwnable.sol +0 -6
  399. package/contracts/test/TestPool.sol +0 -22
  400. package/contracts/test/TestProduct.sol +0 -44
@@ -1,20 +1,39 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {ObjectType, POOL} from "../types/ObjectType.sol";
5
5
  import {IProductService} from "../instance/service/IProductService.sol";
6
6
  import {IPoolService} from "../instance/service/IPoolService.sol";
7
- import {NftId} from "../types/NftId.sol";
7
+ import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
8
8
  import {Fee} from "../types/Fee.sol";
9
9
  import {UFixed} from "../types/UFixed.sol";
10
10
  import {IPoolComponent} from "./IPoolComponent.sol";
11
11
  import {BaseComponent} from "./BaseComponent.sol";
12
+ import {TokenHandler} from "../shared/TokenHandler.sol";
13
+ import {ISetup} from "../instance/module/ISetup.sol";
14
+
15
+ import {IRegistry} from "../registry/IRegistry.sol";
16
+
17
+ // import {IPool} from "../instance/module/pool/IPoolModule.sol";
18
+ import {ITreasury} from "../instance/module/ITreasury.sol";
19
+ import {ISetup} from "../instance/module/ISetup.sol";
20
+ import {InstanceReader} from "../instance/InstanceReader.sol";
21
+
22
+ import {IRegisterable} from "../shared/IRegisterable.sol";
23
+ import {Registerable} from "../shared/Registerable.sol";
12
24
 
13
25
  contract Pool is BaseComponent, IPoolComponent {
26
+ using NftIdLib for NftId;
14
27
 
15
- bool internal _isVerifying;
28
+ bool internal _isConfirmingApplication;
16
29
  UFixed internal _collateralizationLevel;
17
30
 
31
+ Fee internal _initialPoolFee;
32
+ Fee internal _initialStakingFee;
33
+ Fee internal _initialPerformanceFee;
34
+
35
+ TokenHandler internal _tokenHandler;
36
+
18
37
  // may be used to interact with instance by derived contracts
19
38
  IPoolService internal _poolService;
20
39
 
@@ -40,20 +59,33 @@ contract Pool is BaseComponent, IPoolComponent {
40
59
  NftId instanceNftId,
41
60
  // TODO refactor into tokenNftId
42
61
  address token,
43
- bool verifying,
44
- UFixed collateralizationLevel
62
+ bool isInterceptor,
63
+ bool isConfirmingApplication,
64
+ UFixed collateralizationLevel,
65
+ Fee memory poolFee,
66
+ Fee memory stakingFee,
67
+ Fee memory performanceFee,
68
+ address initialOwner
45
69
  )
46
- BaseComponent(registry, instanceNftId, token)
70
+ BaseComponent(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
47
71
  {
48
- _isVerifying = verifying;
72
+ _isConfirmingApplication = isConfirmingApplication;
49
73
  // TODO add validation
50
74
  _collateralizationLevel = collateralizationLevel;
75
+ _initialPoolFee = poolFee;
76
+ _initialStakingFee = stakingFee;
77
+ _initialPerformanceFee = performanceFee;
78
+
79
+ _tokenHandler = new TokenHandler(token);
51
80
 
52
81
  _poolService = _instance.getPoolService();
53
82
  _productService = _instance.getProductService();
83
+
84
+ _registerInterface(type(IPoolComponent).interfaceId);
54
85
  }
55
86
 
56
87
  function createBundle(
88
+ Fee memory fee,
57
89
  uint256 initialAmount,
58
90
  uint256 lifetime,
59
91
  bytes memory filter
@@ -65,6 +97,7 @@ contract Pool is BaseComponent, IPoolComponent {
65
97
  address owner = msg.sender;
66
98
  bundleNftId = _poolService.createBundle(
67
99
  owner,
100
+ fee,
68
101
  initialAmount,
69
102
  lifetime,
70
103
  filter
@@ -107,14 +140,96 @@ contract Pool is BaseComponent, IPoolComponent {
107
140
  }
108
141
 
109
142
 
110
- function isVerifying() external view override returns (bool verifying) {
111
- return _isVerifying;
143
+ function isConfirmingApplication() external view override returns (bool isConfirmingApplication) {
144
+ return _isConfirmingApplication;
112
145
  }
113
146
 
114
147
  function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
115
148
  return _collateralizationLevel;
116
149
  }
117
150
 
151
+ function setFees(
152
+ Fee memory poolFee,
153
+ Fee memory stakingFee,
154
+ Fee memory performanceFee
155
+ )
156
+ external
157
+ onlyOwner
158
+ override
159
+ {
160
+ _poolService.setFees(poolFee, stakingFee, performanceFee);
161
+ }
162
+
163
+ function setBundleFee(
164
+ NftId bundleNftId,
165
+ Fee memory fee
166
+ )
167
+ external
168
+ override
169
+ // TODO add onlyBundleOwner
170
+ {
171
+ _poolService.setBundleFee(bundleNftId, fee);
172
+ }
173
+
174
+ function lockBundle(
175
+ NftId bundleNftId
176
+ )
177
+ external
178
+ override
179
+ // TODO add onlyBundleOwner
180
+ {
181
+ _poolService.lockBundle(bundleNftId);
182
+ }
183
+
184
+ function unlockBundle(
185
+ NftId bundleNftId
186
+ )
187
+ external
188
+ override
189
+ // TODO add onlyBundleOwner
190
+ {
191
+ _poolService.unlockBundle(bundleNftId);
192
+ }
193
+
194
+ function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
195
+ InstanceReader reader = _instance.getInstanceReader();
196
+ return reader.getPoolSetupInfo(getNftId());
197
+ }
198
+
199
+ // from IRegisterable
200
+
201
+ // TODO used only once, occupies space
202
+ // TODO do not use super
203
+ function getInitialInfo()
204
+ public
205
+ view
206
+ override (IRegisterable, Registerable)
207
+ returns (IRegistry.ObjectInfo memory, bytes memory)
208
+ {
209
+ (
210
+ IRegistry.ObjectInfo memory info,
211
+ ) = super.getInitialInfo();
212
+
213
+ return (
214
+ info,
215
+ abi.encode(
216
+ ISetup.PoolSetupInfo(
217
+ _productNftId,
218
+ _tokenHandler,
219
+ _collateralizationLevel,
220
+ _initialPoolFee,
221
+ _initialStakingFee,
222
+ _initialPerformanceFee,
223
+ false,
224
+ _isConfirmingApplication,
225
+ _wallet
226
+ )
227
+ )
228
+ );
229
+ }
230
+
231
+ // Internals
232
+
118
233
  function _underwrite(
119
234
  NftId policyNftId,
120
235
  bytes memory policyData,
@@ -133,6 +248,7 @@ contract Pool is BaseComponent, IPoolComponent {
133
248
 
134
249
  function _createBundle(
135
250
  address bundleOwner,
251
+ Fee memory fee,
136
252
  uint256 amount,
137
253
  uint256 lifetime,
138
254
  bytes calldata filter
@@ -142,33 +258,10 @@ contract Pool is BaseComponent, IPoolComponent {
142
258
  {
143
259
  bundleNftId = _poolService.createBundle(
144
260
  bundleOwner,
261
+ fee,
145
262
  amount,
146
263
  lifetime,
147
264
  filter
148
265
  );
149
266
  }
150
-
151
- // from pool component
152
- function getStakingFee()
153
- external
154
- view
155
- override
156
- returns (Fee memory stakingFee)
157
- {
158
- return _instance.getPoolSetup(getNftId()).stakingFee;
159
- }
160
-
161
- function getPerformanceFee()
162
- external
163
- view
164
- override
165
- returns (Fee memory performanceFee)
166
- {
167
- return _instance.getPoolSetup(getNftId()).performanceFee;
168
- }
169
-
170
- // from registerable
171
- function getType() public pure override returns (ObjectType) {
172
- return POOL();
173
- }
174
267
  }
@@ -1,42 +1,167 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRisk} from "../instance/module/IRisk.sol";
7
+ import {ITreasury} from "../instance/module/ITreasury.sol";
4
8
  import {IProductService} from "../instance/service/IProductService.sol";
5
9
  import {IProductComponent} from "./IProductComponent.sol";
6
- import {NftId} from "../types/NftId.sol";
10
+ import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
7
11
  import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
12
+ import {ReferralId} from "../types/Referral.sol";
13
+ import {RiskId, RiskIdLib} from "../types/RiskId.sol";
14
+ import {StateId} from "../types/StateId.sol";
8
15
  import {Timestamp} from "../types/Timestamp.sol";
9
- import {Fee} from "../types/Fee.sol";
16
+ import {Fee, FeeLib} from "../types/Fee.sol";
10
17
  import {BaseComponent} from "./BaseComponent.sol";
11
18
 
19
+ import {IRegistry} from "../registry/IRegistry.sol";
20
+ import {IRegisterable} from "../shared/IRegisterable.sol";
21
+ import {Registerable} from "../shared/Registerable.sol";
22
+ import {TokenHandler} from "../shared/TokenHandler.sol";
23
+
24
+ import {InstanceReader} from "../instance/InstanceReader.sol";
25
+ import {ISetup} from "../instance/module/ISetup.sol";
26
+ import {Pool} from "../components/Pool.sol";
27
+ import {Distribution} from "../components/Distribution.sol";
28
+
29
+ import {zeroNftId} from "../types/NftId.sol";
30
+
12
31
  contract Product is BaseComponent, IProductComponent {
13
- IProductService private _productService;
14
- address private _pool;
32
+ using NftIdLib for NftId;
33
+
34
+ IProductService internal _productService;
35
+ Pool internal _pool;
36
+ Distribution internal _distribution;
37
+ Fee internal _initialProductFee;
38
+ Fee internal _initialProcessingFee;
39
+ TokenHandler internal _tokenHandler;
40
+
41
+ NftId internal _poolNftId;
42
+ NftId internal _distributionNftId;
15
43
 
16
44
  constructor(
17
45
  address registry,
18
46
  NftId instanceNftid,
19
47
  address token,
20
- address pool
21
- ) BaseComponent(registry, instanceNftid, token) {
48
+ bool isInterceptor,
49
+ address pool,
50
+ address distribution,
51
+ Fee memory productFee,
52
+ Fee memory processingFee,
53
+ address initialOwner
54
+ ) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
22
55
  // TODO add validation
23
56
  _productService = _instance.getProductService();
24
- _pool = pool;
57
+ _pool = Pool(pool);
58
+ _distribution = Distribution(distribution);
59
+ _initialProductFee = productFee;
60
+ _initialProcessingFee = processingFee;
61
+
62
+ _tokenHandler = new TokenHandler(token);
63
+
64
+ _poolNftId = getRegistry().getNftId(address(_pool));
65
+ _distributionNftId = getRegistry().getNftId(address(_distribution));
66
+
67
+ _registerInterface(type(IProductComponent).interfaceId);
68
+ }
69
+
70
+
71
+ function calculatePremium(
72
+ uint256 sumInsuredAmount,
73
+ RiskId riskId,
74
+ uint256 lifetime,
75
+ bytes memory applicationData,
76
+ ReferralId referralId,
77
+ NftId bundleNftId
78
+ )
79
+ external
80
+ view
81
+ override
82
+ returns (uint256 premiumAmount)
83
+ {
84
+ (premiumAmount,,,,) = _productService.calculatePremium(
85
+ riskId,
86
+ sumInsuredAmount,
87
+ lifetime,
88
+ applicationData,
89
+ bundleNftId,
90
+ referralId
91
+ );
92
+ }
93
+
94
+
95
+ function calculateNetPremium(
96
+ uint256 sumInsuredAmount,
97
+ RiskId riskId,
98
+ uint256 lifetime,
99
+ bytes memory applicationData
100
+ )
101
+ external
102
+ view
103
+ virtual override
104
+ returns (uint256 netPremiumAmount)
105
+ {
106
+ // default 10% of sum insured
107
+ return sumInsuredAmount / 10;
108
+ }
109
+
110
+ function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
111
+ return RiskIdLib.toRiskId(riskName);
112
+ }
113
+
114
+ function _createRisk(
115
+ RiskId id,
116
+ bytes memory data
117
+ ) internal {
118
+ _productService.createRisk(
119
+ id,
120
+ data
121
+ );
122
+ }
123
+
124
+ function _updateRisk(
125
+ RiskId id,
126
+ bytes memory data
127
+ ) internal {
128
+ _productService.updateRisk(
129
+ id,
130
+ data
131
+ );
132
+ }
133
+
134
+ function _updateRiskState(
135
+ RiskId id,
136
+ StateId state
137
+ ) internal {
138
+ _productService.updateRiskState(
139
+ id,
140
+ state
141
+ );
142
+ }
143
+
144
+ function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
145
+ return _instance.getInstanceReader().getRiskInfo(id);
25
146
  }
26
147
 
27
148
  function _createApplication(
28
149
  address applicationOwner,
150
+ RiskId riskId,
29
151
  uint256 sumInsuredAmount,
30
- uint256 premiumAmount,
31
152
  uint256 lifetime,
32
- NftId bundleNftId
153
+ bytes memory applicationData,
154
+ NftId bundleNftId,
155
+ ReferralId referralId
33
156
  ) internal returns (NftId nftId) {
34
157
  nftId = _productService.createApplication(
35
158
  applicationOwner,
159
+ riskId,
36
160
  sumInsuredAmount,
37
- premiumAmount,
38
161
  lifetime,
39
- bundleNftId
162
+ applicationData,
163
+ bundleNftId,
164
+ referralId
40
165
  );
41
166
  }
42
167
 
@@ -76,42 +201,89 @@ contract Product is BaseComponent, IProductComponent {
76
201
  }
77
202
 
78
203
  function getPoolNftId() external view override returns (NftId poolNftId) {
79
- return _registry.getNftId(_pool);
204
+ return getRegistry().getNftId(address(_pool));
205
+ }
206
+
207
+ function getDistributionNftId() external view override returns (NftId distributionNftId) {
208
+ return getRegistry().getNftId(address(_distribution));
80
209
  }
81
210
 
82
211
  // from product component
83
212
  function setFees(
84
- Fee memory policyFee,
213
+ Fee memory productFee,
85
214
  Fee memory processingFee
86
215
  )
87
216
  external
88
217
  onlyOwner
89
218
  override
90
219
  {
91
- _productService.setFees(policyFee, processingFee);
220
+ _productService.setFees(productFee, processingFee);
92
221
  }
93
222
 
94
-
95
- function getPolicyFee()
96
- external
97
- view
98
- override
99
- returns (Fee memory policyFee)
100
- {
101
- return _instance.getProductSetup(getNftId()).policyFee;
223
+ function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
224
+ InstanceReader reader = _instance.getInstanceReader();
225
+ return reader.getProductSetupInfo(getNftId());
102
226
  }
103
227
 
104
- function getProcessingFee()
105
- external
106
- view
107
- override
108
- returns (Fee memory processingFee)
228
+ // from IRegisterable
229
+
230
+ function getInitialInfo()
231
+ public
232
+ view
233
+ override (IRegisterable, Registerable)
234
+ returns (IRegistry.ObjectInfo memory, bytes memory)
109
235
  {
110
- return _instance.getProductSetup(getNftId()).processingFee;
111
- }
236
+ // from Registerable
237
+ (
238
+ IRegistry.ObjectInfo memory productInfo,
239
+ bytes memory data
240
+ ) = super.getInitialInfo();
241
+
242
+ // TODO read pool & distribution fees
243
+ // 1) from pool -> the only option -> pool must be registered first?
244
+ // 2) from instance -> all fees are set into instance at product registration which is ongoing here
245
+ // checks are done in registryProduct() where THIS function is called
246
+ //require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
247
+ //require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
248
+
249
+ // from PoolComponent
250
+ (
251
+ ,
252
+ bytes memory poolData
253
+ ) = _pool.getInitialInfo();
254
+
255
+ (
256
+ ISetup.PoolSetupInfo memory poolSetupInfo
257
+ ) = abi.decode(poolData, (ISetup.PoolSetupInfo));
112
258
 
113
- // from registerable
114
- function getType() public pure override returns (ObjectType) {
115
- return PRODUCT();
259
+ // from DistributionComponent
260
+ (
261
+ ,
262
+ bytes memory distributionData
263
+ ) = _distribution.getInitialInfo();
264
+
265
+ (
266
+ ISetup.DistributionSetupInfo memory distributionSetupInfo
267
+ ) = abi.decode(distributionData, (ISetup.DistributionSetupInfo));
268
+
269
+ return (
270
+ productInfo,
271
+ abi.encode(
272
+ ISetup.ProductSetupInfo(
273
+ _token,
274
+ _tokenHandler,
275
+ _distributionNftId,
276
+ _poolNftId,
277
+ distributionSetupInfo.distributionFee,
278
+ _initialProductFee,
279
+ _initialProcessingFee,
280
+ poolSetupInfo.poolFee,
281
+ poolSetupInfo.stakingFee,
282
+ poolSetupInfo.performanceFee,
283
+ false,
284
+ _wallet
285
+ )
286
+ )
287
+ );
116
288
  }
117
289
  }
@@ -0,0 +1,47 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+
6
+
7
+ contract Cloner {
8
+
9
+ Mock1 public mock1;
10
+ Mock2 public mock2;
11
+
12
+ constructor() {
13
+ mock1 = new Mock1();
14
+ mock2 = new Mock2();
15
+ }
16
+
17
+ function createClone(address master)
18
+ external
19
+ returns (address cloned)
20
+ {
21
+ cloned = Clones.clone(master);
22
+ }
23
+ }
24
+
25
+
26
+ contract Mock1 {
27
+ function getValue() external virtual view returns (uint256) {
28
+ return 42;
29
+ }
30
+ }
31
+
32
+ contract Mock2 is Mock1 {
33
+ uint256 internal _value;
34
+
35
+ constructor() {
36
+ _value = 42;
37
+ }
38
+
39
+ function setValue(uint256 value) external virtual {
40
+ _value = value;
41
+ }
42
+
43
+ function getValue() external virtual override view returns (uint256) {
44
+ return _value;
45
+ }
46
+ }
47
+
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
5
+
6
+
7
+ contract AccessManagerUpgradeableInitializeable is AccessManagerUpgradeable {
8
+
9
+ bool private _initialized;
10
+
11
+ function __AccessManagerUpgradeableInitializeable_init(address initialAdmin) public {
12
+ require(!_initialized, "AccessManager: already initialized");
13
+
14
+ if (initialAdmin == address(0)) {
15
+ revert AccessManagerInvalidInitialAdmin(address(0));
16
+ }
17
+
18
+ // admin is active immediately and without any execution delay.
19
+ _grantRole(ADMIN_ROLE, initialAdmin, 0, 0);
20
+ _initialized = true;
21
+ }
22
+
23
+ }