@etherisc/gif-next 0.0.2-fc8b370-882 → 0.0.2-fca9315-260

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 (407) hide show
  1. package/README.md +242 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +656 -0
  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 +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +485 -72
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +533 -64
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +659 -76
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +711 -67
  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/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  46. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  47. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  48. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1137 -1023
  50. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +586 -0
  52. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  53. package/artifacts/contracts/instance/Instance.sol/Instance.json +1987 -1124
  54. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1034 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1381 -0
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1024 -0
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +473 -0
  62. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  64. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +603 -0
  66. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +45 -127
  68. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +55 -245
  71. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
  73. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  75. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  76. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  77. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  78. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
  79. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  80. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  81. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  82. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  83. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  84. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  85. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  86. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  87. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1102 -0
  89. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +449 -0
  91. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +772 -0
  93. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  94. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +437 -0
  95. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +715 -0
  97. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  98. package/artifacts/contracts/instance/{base/IService.sol/IService.json → service/IDistributionService.sol/IDistributionService.json} +202 -61
  99. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  100. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +766 -0
  101. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +198 -80
  103. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +204 -150
  105. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1227 -0
  107. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +505 -0
  109. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  110. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +423 -88
  111. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  112. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +437 -0
  113. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  114. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +398 -215
  115. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +437 -0
  117. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  118. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +455 -36
  121. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +981 -0
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  125. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  126. package/artifacts/contracts/registry/Registry.sol/Registry.json +465 -111
  127. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  128. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  130. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1200 -0
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  132. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +464 -0
  133. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  135. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +394 -0
  137. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  138. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  140. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  141. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  143. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +112 -37
  145. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  146. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +169 -117
  147. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  149. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  150. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +171 -0
  151. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  152. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +362 -0
  153. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  154. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +193 -32
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  156. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +221 -71
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +207 -31
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  169. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestService.sol/TestService.json +292 -63
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  176. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
  177. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  178. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  179. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  184. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.json +52 -13
  186. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  188. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  190. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  192. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  194. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  196. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  198. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  200. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  202. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  204. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  206. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  208. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  210. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  212. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  214. package/contracts/components/Component.sol +216 -0
  215. package/contracts/components/Distribution.sol +150 -0
  216. package/contracts/components/IComponent.sol +43 -0
  217. package/contracts/components/IDistributionComponent.sol +47 -0
  218. package/contracts/components/IPoolComponent.sol +22 -19
  219. package/contracts/components/IProductComponent.sol +29 -9
  220. package/contracts/components/Pool.sol +124 -71
  221. package/contracts/components/Product.sol +188 -40
  222. package/contracts/experiment/cloning/Cloner.sol +47 -0
  223. package/contracts/instance/BundleManager.sol +125 -0
  224. package/contracts/instance/Cloneable.sol +46 -0
  225. package/contracts/instance/IInstance.sol +65 -45
  226. package/contracts/instance/IInstanceService.sol +41 -0
  227. package/contracts/instance/Instance.sol +254 -53
  228. package/contracts/instance/InstanceAccessManager.sol +298 -0
  229. package/contracts/instance/InstanceReader.sol +293 -0
  230. package/contracts/instance/InstanceService.sol +432 -0
  231. package/contracts/instance/InstanceServiceManager.sol +54 -0
  232. package/contracts/instance/ObjectManager.sol +84 -0
  233. package/contracts/instance/base/ComponentService.sol +134 -0
  234. package/contracts/instance/base/IKeyValueStore.sol +13 -13
  235. package/contracts/instance/base/ILifecycle.sol +3 -3
  236. package/contracts/instance/base/KeyValueStore.sol +53 -37
  237. package/contracts/instance/base/Lifecycle.sol +16 -11
  238. package/contracts/instance/module/IAccess.sol +48 -0
  239. package/contracts/instance/module/IBundle.sol +20 -0
  240. package/contracts/instance/module/IDistribution.sol +39 -0
  241. package/contracts/instance/module/IPolicy.sol +45 -0
  242. package/contracts/instance/module/IRisk.sol +11 -0
  243. package/contracts/instance/module/ISetup.sol +46 -0
  244. package/contracts/instance/module/ITreasury.sol +23 -0
  245. package/contracts/instance/service/BundleService.sol +293 -0
  246. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  247. package/contracts/instance/service/DistributionService.sol +106 -0
  248. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  249. package/contracts/instance/service/IBundleService.sol +44 -0
  250. package/contracts/instance/service/IDistributionService.sol +12 -0
  251. package/contracts/instance/service/IPolicyService.sol +94 -0
  252. package/contracts/instance/service/IPoolService.sol +8 -18
  253. package/contracts/instance/service/IProductService.sol +21 -39
  254. package/contracts/instance/service/PolicyService.sol +538 -0
  255. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  256. package/contracts/instance/service/PoolService.sol +78 -91
  257. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  258. package/contracts/instance/service/ProductService.sol +168 -288
  259. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  260. package/contracts/registry/ChainNft.sol +79 -36
  261. package/contracts/registry/IRegistry.sol +65 -24
  262. package/contracts/registry/IRegistryService.sol +65 -0
  263. package/contracts/registry/ITransferInterceptor.sol +6 -0
  264. package/contracts/registry/Registry.sol +358 -287
  265. package/contracts/registry/RegistryAccessManager.sol +216 -0
  266. package/contracts/registry/RegistryService.sol +262 -0
  267. package/contracts/registry/RegistryServiceManager.sol +62 -0
  268. package/contracts/registry/ReleaseManager.sol +332 -0
  269. package/contracts/registry/TokenRegistry.sol +112 -0
  270. package/contracts/shared/ContractDeployerLib.sol +72 -0
  271. package/contracts/shared/ERC165.sol +6 -2
  272. package/contracts/shared/INftOwnable.sol +22 -0
  273. package/contracts/shared/IRegisterable.sol +8 -17
  274. package/contracts/shared/IService.sol +16 -0
  275. package/contracts/shared/IVersionable.sol +55 -11
  276. package/contracts/shared/NftOwnable.sol +139 -0
  277. package/contracts/shared/ProxyManager.sol +94 -0
  278. package/contracts/shared/Registerable.sol +59 -59
  279. package/contracts/shared/Service.sol +60 -0
  280. package/contracts/shared/TokenHandler.sol +27 -0
  281. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  282. package/contracts/shared/Versionable.sol +113 -55
  283. package/contracts/test/TestFee.sol +2 -2
  284. package/contracts/test/TestRegisterable.sol +5 -6
  285. package/contracts/test/TestRoleId.sol +1 -1
  286. package/contracts/test/TestService.sol +7 -14
  287. package/contracts/types/DistributorType.sol +55 -0
  288. package/contracts/types/Fee.sol +10 -5
  289. package/contracts/types/Key32.sol +8 -3
  290. package/contracts/types/NftIdSet.sol +26 -24
  291. package/contracts/types/NumberId.sol +52 -0
  292. package/contracts/types/ObjectType.sol +51 -14
  293. package/contracts/types/Referral.sol +85 -0
  294. package/contracts/types/RiskId.sol +43 -0
  295. package/contracts/types/RoleId.sol +62 -10
  296. package/contracts/types/StateId.sol +5 -1
  297. package/contracts/types/Timestamp.sol +7 -3
  298. package/contracts/types/UFixed.sol +128 -12
  299. package/contracts/types/Version.sol +13 -1
  300. package/package.json +4 -3
  301. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  302. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  303. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  304. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
  305. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  306. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  307. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  308. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  309. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  310. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  311. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  312. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  313. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  314. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  315. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  316. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  317. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  318. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  319. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  320. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  321. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  322. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  323. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  324. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  325. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  326. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  327. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  328. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  329. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  330. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  331. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  332. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  333. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  334. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  335. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  336. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  337. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  338. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  339. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  340. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  341. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  342. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  343. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  344. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  345. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  346. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  347. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  348. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  349. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  350. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  351. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  352. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  353. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  354. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  355. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  356. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  357. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  358. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  359. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  360. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  361. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  362. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  363. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  364. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  365. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  366. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  367. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  368. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  369. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  370. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  371. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  372. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  373. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  374. package/contracts/components/BaseComponent.sol +0 -88
  375. package/contracts/components/IBaseComponent.sol +0 -19
  376. package/contracts/experiment/statemachine/README.md +0 -112
  377. package/contracts/instance/IInstanceLinked.sol +0 -8
  378. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  379. package/contracts/instance/base/IInstanceBase.sol +0 -14
  380. package/contracts/instance/base/IService.sol +0 -15
  381. package/contracts/instance/base/InstanceBase.sol +0 -80
  382. package/contracts/instance/base/ModuleBase.sol +0 -52
  383. package/contracts/instance/base/ServiceBase.sol +0 -37
  384. package/contracts/instance/module/access/Access.sol +0 -149
  385. package/contracts/instance/module/access/IAccess.sol +0 -53
  386. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  387. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  388. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  389. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  390. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  391. package/contracts/instance/module/component/IComponent.sol +0 -53
  392. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  393. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  394. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  395. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  396. package/contracts/instance/module/risk/IRisk.sol +0 -10
  397. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  398. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  399. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  400. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  401. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  402. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  403. package/contracts/registry/IChainNft.sol +0 -21
  404. package/contracts/registry/IRegistryLinked.sol +0 -8
  405. package/contracts/shared/IOwnable.sol +0 -6
  406. package/contracts/test/TestPool.sol +0 -22
  407. package/contracts/test/TestProduct.sol +0 -44
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRegisterable} from "../shared/IRegisterable.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {IInstanceService} from "../instance/IInstanceService.sol";
9
+ import {IProductService} from "../instance/service/IProductService.sol";
10
+ import {NftId} from "../types/NftId.sol";
11
+
12
+ interface IComponent is IRegisterable {
13
+
14
+ error ErrorComponentNotInstance(NftId instanceNftId, address instance);
15
+ error ErrorComponentProductNftAlreadySet();
16
+ error ErrorComponentWalletAddressZero();
17
+ error ErrorComponentWalletAddressIsSameAsCurrent(address newWallet);
18
+ error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
19
+ error ErrorComponentUnauthorized(address caller, uint64 requiredRoleIdNum);
20
+ error ErrorComponentNotProductService(address caller);
21
+
22
+ event LogComponentWalletAddressChanged(address newWallet);
23
+ event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
24
+
25
+ function getName() external view returns (string memory name);
26
+
27
+ // TODO remove and replace with accessmanaged target locking mechanism
28
+ function lock() external;
29
+ function unlock() external;
30
+
31
+ function getToken() external view returns (IERC20Metadata token);
32
+
33
+ function setWallet(address walletAddress) external;
34
+ function getWallet() external view returns (address walletAddress);
35
+
36
+ function getInstance() external view returns (IInstance instance);
37
+
38
+ function setProductNftId(NftId productNftId) external;
39
+ function getProductNftId() external view returns (NftId productNftId);
40
+
41
+ function getInstanceService() external view returns (IInstanceService);
42
+ function getProductService() external view returns (IProductService);
43
+ }
@@ -0,0 +1,47 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Fee} from "../types/Fee.sol";
5
+ import {IComponent} from "./IComponent.sol";
6
+ import {ISetup} from "../instance/module/ISetup.sol";
7
+ import {ReferralId} from "../types/Referral.sol";
8
+ import {NftId} from "../types/NftId.sol";
9
+
10
+ interface IDistributionComponent is IComponent {
11
+
12
+ function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
13
+
14
+ function setFees(
15
+ Fee memory distributionFee
16
+ ) external;
17
+
18
+ function calculateFeeAmount(
19
+ ReferralId referralId,
20
+ uint256 netPremiumAmount
21
+ ) external view returns (uint256 feeAmount);
22
+
23
+ function calculateRenewalFeeAmount(
24
+ ReferralId referralId,
25
+ uint256 netPremiumAmount
26
+ ) external view returns (uint256 feeAmount);
27
+
28
+ /// @dev callback from product service when selling a policy for a specific referralId
29
+ /// the used referral id and the collected fee are provided as parameters
30
+ /// the component implementation can then process this information accordingly
31
+ function processSale(
32
+ ReferralId referralId,
33
+ uint256 feeAmount
34
+ ) external;
35
+
36
+ /// @dev callback from product service when a policy is renews for a specific referralId
37
+ function processRenewal(
38
+ ReferralId referralId,
39
+ uint256 feeAmount
40
+ ) external;
41
+
42
+ /// @dev returns true iff the referral id is valid
43
+ function referralIsValid(ReferralId referralId) external view returns (bool isValid);
44
+
45
+ /// @dev returns true iff the component needs to be called when selling/renewing policis
46
+ function isVerifying() external view returns (bool verifying);
47
+ }
@@ -1,23 +1,28 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../types/NftId.sol";
5
4
  import {Fee} from "../types/Fee.sol";
5
+ import {IComponent} from "./IComponent.sol";
6
+ import {ISetup} from "../instance/module/ISetup.sol";
7
+ import {NftId} from "../types/NftId.sol";
6
8
  import {UFixed} from "../types/UFixed.sol";
7
- import {IBaseComponent} from "./IBaseComponent.sol";
8
9
 
9
- interface IPoolComponent is IBaseComponent {
10
+ interface IPoolComponent is IComponent {
10
11
 
11
12
  event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
12
13
 
13
- /**
14
- * @dev creates a new bundle for this pool.
15
- */
16
- function createBundle(
17
- uint256 initialAmount,
18
- uint256 lifetime,
19
- bytes memory filter
20
- ) external returns(NftId bundleNftId);
14
+ function getSetupInfo() external view returns (ISetup.PoolSetupInfo memory setupInfo);
15
+
16
+ function setFees(
17
+ Fee memory poolFee,
18
+ Fee memory stakingFee,
19
+ Fee memory performanceFee
20
+ ) external;
21
+
22
+ function setBundleFee(
23
+ NftId policyNftId,
24
+ Fee memory fee
25
+ ) external;
21
26
 
22
27
  /**
23
28
  * @dev this is a callback function that is called by the product service when underwriting a policy.
@@ -32,6 +37,10 @@ interface IPoolComponent is IBaseComponent {
32
37
  uint256 collateralizationAmount
33
38
  ) external;
34
39
 
40
+ function lockBundle(NftId bundleNftId) external;
41
+
42
+ function unlockBundle(NftId bundleNftId) external;
43
+
35
44
  /**
36
45
  * @dev returns true iff the policy application data in policyData matches
37
46
  * with the bundle filter criteria encoded in bundleFilter.
@@ -44,14 +53,8 @@ interface IPoolComponent is IBaseComponent {
44
53
  view
45
54
  returns (bool isMatching);
46
55
 
47
- function isVerifying() external view returns (bool verifying);
56
+ function isConfirmingApplication() external view returns (bool isConfirmingApplication);
48
57
 
49
58
  function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
50
59
 
51
- function getStakingFee() external view returns (Fee memory stakingFee);
52
-
53
- function getPerformanceFee()
54
- external
55
- view
56
- returns (Fee memory performanceFee);
57
60
  }
@@ -1,19 +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
- import {NftId} from "../types/NftId.sol";
5
4
  import {Fee} from "../types/Fee.sol";
6
- import {IBaseComponent} from "./IBaseComponent.sol";
5
+ import {IComponent} from "./IComponent.sol";
6
+ import {ISetup} from "../instance/module/ISetup.sol";
7
+ import {NftId} from "../types/NftId.sol";
8
+ import {ReferralId} from "../types/Referral.sol";
9
+ import {RiskId} from "../types/RiskId.sol";
10
+
11
+ interface IProductComponent is IComponent {
12
+
13
+ function getSetupInfo() external view returns (ISetup.ProductSetupInfo memory setupInfo);
7
14
 
8
- interface IProductComponent is IBaseComponent {
9
15
  function setFees(
10
- Fee memory policyFee,
16
+ Fee memory productFee,
11
17
  Fee memory processingFee
12
18
  ) external;
13
19
 
14
- function getPoolNftId() external view returns (NftId poolNftId);
15
-
16
- function getPolicyFee() external view returns (Fee memory policyFee);
20
+ function calculatePremium(
21
+ uint256 sumInsuredAmount,
22
+ RiskId riskId,
23
+ uint256 lifetime,
24
+ bytes memory applicationData,
25
+ NftId bundleNftId,
26
+ ReferralId referralId
27
+ ) external view returns (uint256 premiumAmount);
28
+
29
+ function calculateNetPremium(
30
+ uint256 sumInsuredAmount,
31
+ RiskId riskId,
32
+ uint256 lifetime,
33
+ bytes memory applicationData
34
+ ) external view returns (uint256 netPremiumAmount);
17
35
 
18
- function getProcessingFee() external view returns (Fee memory processingFee);
36
+
37
+ function getPoolNftId() external view returns (NftId poolNftId);
38
+ function getDistributionNftId() external view returns (NftId distributionNftId);
19
39
  }
@@ -1,25 +1,36 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {ObjectType, POOL} from "../types/ObjectType.sol";
5
- import {IProductService} from "../instance/service/IProductService.sol";
4
+ import {POOL} from "../types/ObjectType.sol";
6
5
  import {IPoolService} from "../instance/service/IPoolService.sol";
7
- import {NftId} from "../types/NftId.sol";
6
+ import {IBundleService} from "../instance/service/IBundleService.sol";
7
+ import {NftId, 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
- import {BaseComponent} from "./BaseComponent.sol";
11
+ import {Component} from "./Component.sol";
12
+ import {TokenHandler} from "../shared/TokenHandler.sol";
13
+ import {ISetup} from "../instance/module/ISetup.sol";
12
14
 
13
- contract Pool is BaseComponent, IPoolComponent {
15
+ import {ISetup} from "../instance/module/ISetup.sol";
16
+ import {InstanceReader} from "../instance/InstanceReader.sol";
14
17
 
15
- bool internal _isVerifying;
18
+
19
+ abstract contract Pool is Component, IPoolComponent {
20
+ using NftIdLib for NftId;
21
+
22
+ bool internal _isConfirmingApplication;
16
23
  UFixed internal _collateralizationLevel;
17
24
 
25
+ Fee internal _initialPoolFee;
26
+ Fee internal _initialStakingFee;
27
+ Fee internal _initialPerformanceFee;
28
+
29
+ TokenHandler internal _tokenHandler;
30
+
18
31
  // may be used to interact with instance by derived contracts
19
32
  IPoolService internal _poolService;
20
-
21
- // only relevant to protect callback functions for "active" pools
22
- IProductService private _productService;
33
+ IBundleService private _bundleService;
23
34
 
24
35
  modifier onlyPoolService() {
25
36
  require(
@@ -28,55 +39,50 @@ contract Pool is BaseComponent, IPoolComponent {
28
39
  _;
29
40
  }
30
41
 
31
- modifier onlyProductService() {
32
- require(
33
- msg.sender == address(_productService),
34
- "ERROR:POL-002:NOT_PRODUCT_SERVICE");
35
- _;
36
- }
37
-
38
42
  constructor(
39
43
  address registry,
40
44
  NftId instanceNftId,
45
+ string memory name,
41
46
  // TODO refactor into tokenNftId
42
47
  address token,
43
- bool verifying,
44
- UFixed collateralizationLevel
45
- )
46
- BaseComponent(registry, instanceNftId, token)
47
- {
48
- _isVerifying = verifying;
48
+ bool isInterceptor,
49
+ bool isConfirmingApplication,
50
+ UFixed collateralizationLevel,
51
+ Fee memory poolFee,
52
+ Fee memory stakingFee,
53
+ Fee memory performanceFee,
54
+ address initialOwner,
55
+ bytes memory data
56
+ ) Component(
57
+ registry,
58
+ instanceNftId,
59
+ name,
60
+ token,
61
+ POOL(),
62
+ isInterceptor,
63
+ initialOwner,
64
+ data
65
+ ) {
66
+ _isConfirmingApplication = isConfirmingApplication;
49
67
  // TODO add validation
50
68
  _collateralizationLevel = collateralizationLevel;
69
+ _initialPoolFee = poolFee;
70
+ _initialStakingFee = stakingFee;
71
+ _initialPerformanceFee = performanceFee;
51
72
 
52
- _poolService = _instance.getPoolService();
53
- _productService = _instance.getProductService();
54
- }
73
+ _tokenHandler = new TokenHandler(token);
55
74
 
56
- function createBundle(
57
- uint256 initialAmount,
58
- uint256 lifetime,
59
- bytes memory filter
60
- )
61
- external
62
- virtual override
63
- returns(NftId bundleNftId)
64
- {
65
- address owner = msg.sender;
66
- bundleNftId = _poolService.createBundle(
67
- owner,
68
- initialAmount,
69
- lifetime,
70
- filter
71
- );
75
+ _poolService = getInstance().getPoolService();
76
+ _bundleService = getInstance().getBundleService();
72
77
 
73
- // TODO add logging
78
+ _registerInterface(type(IPoolComponent).interfaceId);
74
79
  }
75
80
 
76
81
  /**
77
82
  * @dev see {IPool.underwrite}.
78
83
  * Default implementation that only writes a {LogUnderwrittenByPool} entry.
79
84
  */
85
+ // FIXME: remove this function .. only _internal
80
86
  function underwrite(
81
87
  NftId policyNftId,
82
88
  bytes memory policyData,
@@ -84,7 +90,7 @@ contract Pool is BaseComponent, IPoolComponent {
84
90
  uint256 collateralizationAmount
85
91
  )
86
92
  external
87
- onlyProductService
93
+ restricted()
88
94
  virtual override
89
95
  {
90
96
  _underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
@@ -107,14 +113,83 @@ contract Pool is BaseComponent, IPoolComponent {
107
113
  }
108
114
 
109
115
 
110
- function isVerifying() external view override returns (bool verifying) {
111
- return _isVerifying;
116
+ function isConfirmingApplication() external view override returns (bool isConfirmingApplication) {
117
+ return _isConfirmingApplication;
112
118
  }
113
119
 
114
120
  function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
115
121
  return _collateralizationLevel;
116
122
  }
117
123
 
124
+ function setFees(
125
+ Fee memory poolFee,
126
+ Fee memory stakingFee,
127
+ Fee memory performanceFee
128
+ )
129
+ external
130
+ restricted()
131
+ override
132
+ {
133
+ _poolService.setFees(poolFee, stakingFee, performanceFee);
134
+ }
135
+
136
+ function setBundleFee(
137
+ NftId bundleNftId,
138
+ Fee memory fee
139
+ )
140
+ external
141
+ override
142
+ // TODO add onlyBundleOwner
143
+ {
144
+ _bundleService.setBundleFee(bundleNftId, fee);
145
+ }
146
+
147
+ function lockBundle(
148
+ NftId bundleNftId
149
+ )
150
+ external
151
+ override
152
+ // TODO add onlyBundleOwner
153
+ {
154
+ _bundleService.lockBundle(bundleNftId);
155
+ }
156
+
157
+ function unlockBundle(
158
+ NftId bundleNftId
159
+ )
160
+ external
161
+ override
162
+ // TODO add onlyBundleOwner
163
+ {
164
+ _bundleService.unlockBundle(bundleNftId);
165
+ }
166
+
167
+ function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
168
+ InstanceReader reader = getInstance().getInstanceReader();
169
+ setupInfo = reader.getPoolSetupInfo(getNftId());
170
+
171
+ // fallback to initial setup info (wallet is always != address(0))
172
+ if(setupInfo.wallet == address(0)) {
173
+ setupInfo = _getInitialSetupInfo();
174
+ }
175
+ }
176
+
177
+ function _getInitialSetupInfo() internal view returns (ISetup.PoolSetupInfo memory) {
178
+ return ISetup.PoolSetupInfo(
179
+ getProductNftId(),
180
+ _tokenHandler,
181
+ _collateralizationLevel,
182
+ _initialPoolFee,
183
+ _initialStakingFee,
184
+ _initialPerformanceFee,
185
+ false,
186
+ _isConfirmingApplication,
187
+ getWallet()
188
+ );
189
+ }
190
+
191
+ // Internals
192
+
118
193
  function _underwrite(
119
194
  NftId policyNftId,
120
195
  bytes memory policyData,
@@ -133,6 +208,7 @@ contract Pool is BaseComponent, IPoolComponent {
133
208
 
134
209
  function _createBundle(
135
210
  address bundleOwner,
211
+ Fee memory fee,
136
212
  uint256 amount,
137
213
  uint256 lifetime,
138
214
  bytes calldata filter
@@ -140,35 +216,12 @@ contract Pool is BaseComponent, IPoolComponent {
140
216
  internal
141
217
  returns(NftId bundleNftId)
142
218
  {
143
- bundleNftId = _poolService.createBundle(
219
+ bundleNftId = _bundleService.createBundle(
144
220
  bundleOwner,
221
+ fee,
145
222
  amount,
146
223
  lifetime,
147
224
  filter
148
225
  );
149
226
  }
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
227
  }