@etherisc/gif-next 0.0.2-a9ccad5-356 → 0.0.2-a9f5983-610

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 (347) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +774 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +758 -192
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +103 -109
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +725 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +814 -60
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +592 -9
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +833 -321
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +461 -149
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -49
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  21. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +911 -115
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +178 -165
  25. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  26. package/artifacts/contracts/instance/Instance.sol/Instance.json +797 -1007
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
  29. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +70 -101
  31. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +395 -330
  33. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +297 -116
  35. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -19
  37. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  38. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +181 -180
  39. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  43. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  45. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  47. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  54. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  55. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  57. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  58. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  59. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  60. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  61. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  63. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  65. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +434 -215
  67. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +316 -83
  69. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  71. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  73. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +154 -124
  75. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  77. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  79. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +24 -416
  81. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +30 -417
  83. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  85. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  87. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +178 -511
  89. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +293 -108
  91. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +190 -571
  93. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +286 -125
  95. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  96. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  97. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  98. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
  99. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  100. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -217
  101. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  102. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/Registry.sol/Registry.json +238 -235
  104. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  105. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  106. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +195 -322
  108. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
  110. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  111. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  112. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  114. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  115. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  116. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  117. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  118. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  119. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  120. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  121. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  123. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  124. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  125. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IService.sol/IService.json +23 -186
  127. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  131. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  132. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  137. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Service.sol/Service.json +120 -174
  141. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  142. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  144. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  146. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  149. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  151. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestService.sol/TestService.json +141 -231
  153. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  157. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  158. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  159. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  162. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  163. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  165. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  168. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  170. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  171. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  172. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  175. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  177. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  179. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  181. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  183. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  185. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  188. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  192. package/contracts/components/Component.sol +221 -0
  193. package/contracts/components/Distribution.sol +209 -64
  194. package/contracts/components/IComponent.sol +68 -0
  195. package/contracts/components/IDistributionComponent.sol +59 -3
  196. package/contracts/components/IPoolComponent.sol +124 -39
  197. package/contracts/components/IProductComponent.sol +10 -5
  198. package/contracts/components/Pool.sol +283 -172
  199. package/contracts/components/Product.sol +125 -121
  200. package/contracts/instance/BundleManager.sol +8 -12
  201. package/contracts/instance/IInstance.sol +46 -10
  202. package/contracts/instance/IInstanceService.sol +30 -3
  203. package/contracts/instance/Instance.sol +99 -262
  204. package/contracts/instance/InstanceAccessManager.sol +87 -78
  205. package/contracts/instance/InstanceReader.sol +3 -25
  206. package/contracts/instance/InstanceService.sol +381 -123
  207. package/contracts/instance/InstanceServiceManager.sol +6 -9
  208. package/contracts/instance/ObjectManager.sol +8 -19
  209. package/contracts/instance/base/ComponentService.sol +134 -0
  210. package/contracts/instance/module/IAccess.sol +27 -18
  211. package/contracts/instance/module/IBundle.sol +2 -1
  212. package/contracts/instance/module/IPolicy.sol +6 -3
  213. package/contracts/instance/module/ISetup.sol +6 -4
  214. package/contracts/instance/service/ApplicationService.sol +269 -0
  215. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  216. package/contracts/instance/service/BundleService.sol +299 -0
  217. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  218. package/contracts/instance/service/ClaimService.sol +151 -0
  219. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  220. package/contracts/instance/service/DistributionService.sol +216 -27
  221. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  222. package/contracts/instance/service/IApplicationService.sol +83 -0
  223. package/contracts/instance/service/IBundleService.sol +55 -0
  224. package/contracts/instance/service/IClaimService.sol +61 -0
  225. package/contracts/instance/service/IDistributionService.sol +53 -0
  226. package/contracts/instance/service/IPolicyService.sol +90 -0
  227. package/contracts/instance/service/IPoolService.sol +2 -33
  228. package/contracts/instance/service/IProductService.sol +2 -72
  229. package/contracts/instance/service/PolicyService.sol +476 -0
  230. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  231. package/contracts/instance/service/PoolService.sol +34 -212
  232. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  233. package/contracts/instance/service/ProductService.sol +123 -460
  234. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  235. package/contracts/registry/ChainNft.sol +1 -1
  236. package/contracts/registry/IRegistry.sol +37 -19
  237. package/contracts/registry/IRegistryService.sol +30 -13
  238. package/contracts/registry/Registry.sol +233 -217
  239. package/contracts/registry/RegistryAccessManager.sol +216 -0
  240. package/contracts/registry/RegistryService.sol +96 -171
  241. package/contracts/registry/RegistryServiceManager.sol +21 -39
  242. package/contracts/registry/ReleaseManager.sol +322 -0
  243. package/contracts/registry/TokenRegistry.sol +22 -17
  244. package/contracts/shared/ERC165.sol +14 -12
  245. package/contracts/shared/INftOwnable.sol +11 -10
  246. package/contracts/shared/IPolicyHolder.sol +26 -0
  247. package/contracts/shared/IRegisterable.sol +4 -6
  248. package/contracts/shared/IRegistryLinked.sol +12 -0
  249. package/contracts/shared/IService.sol +2 -1
  250. package/contracts/shared/IVersionable.sol +4 -47
  251. package/contracts/shared/NftOwnable.sol +66 -80
  252. package/contracts/shared/PolicyHolder.sol +81 -0
  253. package/contracts/shared/ProxyManager.sol +100 -25
  254. package/contracts/shared/Registerable.sol +16 -32
  255. package/contracts/shared/RegistryLinked.sol +48 -0
  256. package/contracts/shared/Service.sol +25 -22
  257. package/contracts/shared/Versionable.sol +4 -92
  258. package/contracts/test/TestRegisterable.sol +1 -1
  259. package/contracts/test/TestService.sol +4 -3
  260. package/contracts/types/ClaimId.sol +52 -0
  261. package/contracts/types/DistributorType.sol +2 -2
  262. package/contracts/types/ObjectType.sol +9 -5
  263. package/contracts/types/PayoutId.sol +54 -0
  264. package/contracts/types/RoleId.sol +19 -14
  265. package/contracts/types/Seconds.sol +54 -0
  266. package/contracts/types/Timestamp.sol +12 -13
  267. package/package.json +3 -3
  268. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  269. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  270. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  271. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  272. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  273. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  274. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  275. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  276. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  277. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  278. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  279. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  280. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  281. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  282. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  283. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  284. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  285. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  286. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  287. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  288. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  289. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  290. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  291. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  292. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  293. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  294. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  295. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  296. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  297. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  298. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  299. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  300. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  301. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  302. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  303. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  304. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  305. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  306. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  307. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  308. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  309. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  310. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  311. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  312. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  313. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  314. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  315. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  316. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  317. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  318. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  319. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  320. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  321. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  322. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  323. package/contracts/components/BaseComponent.sol +0 -129
  324. package/contracts/components/IBaseComponent.sol +0 -31
  325. package/contracts/experiment/cloning/Cloner.sol +0 -47
  326. package/contracts/experiment/errors/Require.sol +0 -38
  327. package/contracts/experiment/errors/Revert.sol +0 -44
  328. package/contracts/experiment/inheritance/A.sol +0 -53
  329. package/contracts/experiment/inheritance/B.sol +0 -28
  330. package/contracts/experiment/inheritance/C.sol +0 -34
  331. package/contracts/experiment/inheritance/IA.sol +0 -13
  332. package/contracts/experiment/inheritance/IB.sol +0 -10
  333. package/contracts/experiment/inheritance/IC.sol +0 -12
  334. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  335. package/contracts/experiment/statemachine/ISM.sol +0 -25
  336. package/contracts/experiment/statemachine/SM.sol +0 -57
  337. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  338. package/contracts/experiment/types/TypeA.sol +0 -47
  339. package/contracts/experiment/types/TypeB.sol +0 -29
  340. package/contracts/instance/AccessManagedSimple.sol +0 -115
  341. package/contracts/instance/AccessManagerSimple.sol +0 -692
  342. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  343. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  344. package/contracts/instance/base/IInstanceBase.sol +0 -23
  345. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  346. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  347. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -1,267 +1,378 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {ObjectType, POOL} from "../types/ObjectType.sol";
5
- import {IProductService} from "../instance/service/IProductService.sol";
6
- import {IPoolService} from "../instance/service/IPoolService.sol";
7
- import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
8
- import {Fee} from "../types/Fee.sol";
9
- import {UFixed} from "../types/UFixed.sol";
4
+ import {Component} from "./Component.sol";
5
+ import {Fee, FeeLib} from "../types/Fee.sol";
6
+ import {IBundleService} from "../instance/service/IBundleService.sol";
7
+ import {InstanceReader} from "../instance/InstanceReader.sol";
10
8
  import {IPoolComponent} from "./IPoolComponent.sol";
11
- import {BaseComponent} from "./BaseComponent.sol";
12
- import {TokenHandler} from "../shared/TokenHandler.sol";
9
+ import {IPoolService} from "../instance/service/IPoolService.sol";
13
10
  import {ISetup} from "../instance/module/ISetup.sol";
11
+ import {NftId, NftIdLib} from "../types/NftId.sol";
12
+ import {POOL} from "../types/ObjectType.sol";
13
+ import {RoleId, PUBLIC_ROLE} from "../types/RoleId.sol";
14
+ import {Seconds} from "../types/Seconds.sol";
15
+ import {TokenHandler} from "../shared/TokenHandler.sol";
16
+ import {UFixed} from "../types/UFixed.sol";
14
17
 
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
18
 
22
- import {IRegisterable} from "../shared/IRegisterable.sol";
23
- import {Registerable} from "../shared/Registerable.sol";
19
+ abstract contract Pool is
20
+ Component,
21
+ IPoolComponent
22
+ {
23
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Pool")) - 1)) & ~bytes32(uint256(0xff));
24
+ bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
24
25
 
25
- contract Pool is BaseComponent, IPoolComponent {
26
- using NftIdLib for NftId;
26
+ struct PoolStorage {
27
+ UFixed _collateralizationLevel;
28
+ UFixed _retentionLevel;
29
+ uint256 _maxCapitalAmount;
30
+
31
+ bool _isExternallyManaged;
32
+ bool _isVerifyingApplications;
27
33
 
28
- bool internal _isConfirmingApplication;
29
- UFixed internal _collateralizationLevel;
34
+ RoleId _bundleOwnerRole;
35
+ bool _isInterceptingBundleTransfers;
30
36
 
31
- Fee internal _initialPoolFee;
32
- Fee internal _initialStakingFee;
33
- Fee internal _initialPerformanceFee;
37
+ Fee _initialPoolFee;
38
+ Fee _initialStakingFee;
39
+ Fee _initialPerformanceFee;
34
40
 
35
- TokenHandler internal _tokenHandler;
41
+ TokenHandler _tokenHandler;
36
42
 
37
- // may be used to interact with instance by derived contracts
38
- IPoolService internal _poolService;
43
+ // may be used to interact with instance by derived contracts
44
+ IPoolService _poolService;
45
+ IBundleService _bundleService;
46
+ }
39
47
 
40
- // only relevant to protect callback functions for "active" pools
41
- IProductService private _productService;
42
48
 
43
- modifier onlyPoolService() {
44
- require(
45
- msg.sender == address(_poolService),
46
- "ERROR:POL-001:NOT_POOL_SERVICE");
49
+ modifier onlyBundleOwner(NftId bundleNftId) {
50
+ if(msg.sender != getRegistry().ownerOf(bundleNftId)) {
51
+ revert ErrorPoolNotBundleOwner(bundleNftId, msg.sender);
52
+ }
47
53
  _;
48
54
  }
49
55
 
50
- modifier onlyProductService() {
51
- require(
52
- msg.sender == address(_productService),
53
- "ERROR:POL-002:NOT_PRODUCT_SERVICE");
56
+
57
+ modifier onlyPoolService() {
58
+ if(msg.sender != address(_getPoolStorage()._poolService)) {
59
+ revert ErrorPoolNotPoolService(msg.sender);
60
+ }
54
61
  _;
55
62
  }
56
63
 
57
- constructor(
64
+
65
+ function initializePool(
58
66
  address registry,
59
67
  NftId instanceNftId,
60
- // TODO refactor into tokenNftId
68
+ string memory name,
61
69
  address token,
62
- bool isInterceptor,
63
- bool isConfirmingApplication,
70
+ bool isInterceptingNftTransfers,
71
+ bool isExternallyManaging,
72
+ bool isVerifying,
64
73
  UFixed collateralizationLevel,
65
- Fee memory poolFee,
66
- Fee memory stakingFee,
67
- Fee memory performanceFee,
68
- address initialOwner
74
+ UFixed retentionLevel,
75
+ address initialOwner,
76
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
69
77
  )
70
- BaseComponent(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
78
+ public
79
+ virtual
80
+ onlyInitializing()
71
81
  {
72
- _isConfirmingApplication = isConfirmingApplication;
82
+ initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, registryData);
83
+
84
+ PoolStorage storage $ = _getPoolStorage();
73
85
  // TODO add validation
74
- _collateralizationLevel = collateralizationLevel;
75
- _initialPoolFee = poolFee;
76
- _initialStakingFee = stakingFee;
77
- _initialPerformanceFee = performanceFee;
86
+ $._tokenHandler = new TokenHandler(token);
87
+ $._maxCapitalAmount = type(uint256).max;
88
+ $._isExternallyManaged = isExternallyManaging;
89
+ $._isVerifyingApplications = isVerifying;
90
+ $._bundleOwnerRole = PUBLIC_ROLE();
91
+ $._collateralizationLevel = collateralizationLevel;
92
+ $._retentionLevel = retentionLevel;
93
+ $._initialPoolFee = FeeLib.zeroFee();
94
+ $._initialStakingFee = FeeLib.zeroFee();
95
+ $._initialPerformanceFee = FeeLib.zeroFee();
96
+ $._poolService = getInstance().getPoolService();
97
+ $._bundleService = getInstance().getBundleService();
98
+
99
+ registerInterface(type(IPoolComponent).interfaceId);
100
+ }
78
101
 
79
- _tokenHandler = new TokenHandler(token);
80
102
 
81
- _poolService = _instance.getPoolService();
82
- _productService = _instance.getProductService();
103
+ function stake(
104
+ NftId bundleNftId,
105
+ uint256 amount
106
+ )
107
+ public
108
+ virtual
109
+ restricted()
110
+ onlyBundleOwner(bundleNftId)
111
+ {
112
+ // TODO add implementation
113
+ }
114
+
83
115
 
84
- _registerInterface(type(IPoolComponent).interfaceId);
116
+ function unstake(
117
+ NftId bundleNftId,
118
+ uint256 amount
119
+ )
120
+ public
121
+ virtual
122
+ restricted()
123
+ onlyBundleOwner(bundleNftId)
124
+ {
125
+ // TODO add implementation
85
126
  }
86
127
 
87
- function createBundle(
88
- Fee memory fee,
89
- uint256 initialAmount,
90
- uint256 lifetime,
91
- bytes memory filter
128
+
129
+ function extend(
130
+ NftId bundleNftId,
131
+ Seconds lifetimeExtension
92
132
  )
93
- external
94
- virtual override
95
- returns(NftId bundleNftId)
133
+ public
134
+ virtual
135
+ restricted()
136
+ onlyBundleOwner(bundleNftId)
96
137
  {
97
- address owner = msg.sender;
98
- bundleNftId = _poolService.createBundle(
99
- owner,
100
- fee,
101
- initialAmount,
102
- lifetime,
103
- filter
104
- );
138
+ // TODO add implementation
139
+ }
105
140
 
106
- // TODO add logging
141
+
142
+ function lockBundle(NftId bundleNftId)
143
+ public
144
+ virtual
145
+ restricted()
146
+ onlyBundleOwner(bundleNftId)
147
+ {
148
+ _getPoolStorage()._bundleService.lockBundle(bundleNftId);
107
149
  }
108
150
 
109
- /**
110
- * @dev see {IPool.underwrite}.
111
- * Default implementation that only writes a {LogUnderwrittenByPool} entry.
112
- */
113
- function underwrite(
114
- NftId policyNftId,
115
- bytes memory policyData,
116
- bytes memory bundleFilter,
117
- uint256 collateralizationAmount
118
- )
119
- external
120
- onlyProductService
121
- virtual override
151
+
152
+ function unlockBundle(NftId bundleNftId)
153
+ public
154
+ virtual
155
+ restricted()
156
+ onlyBundleOwner(bundleNftId)
157
+ {
158
+ _getPoolStorage()._bundleService.unlockBundle(bundleNftId);
159
+ }
160
+
161
+
162
+ function close(NftId bundleNftId)
163
+ public
164
+ virtual
165
+ restricted()
166
+ onlyBundleOwner(bundleNftId)
122
167
  {
123
- _underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
168
+ // TODO add implementation
124
169
  }
125
170
 
126
- /**
127
- * @dev see {IPoolComponent.policyMatchesBundle}.
128
- * Default implementation always returns true
129
- */
130
- function policyMatchesBundle(
131
- bytes memory, // policyData
132
- bytes memory // bundleFilter
171
+
172
+ function setBundleFee(
173
+ NftId bundleNftId,
174
+ Fee memory fee
133
175
  )
134
176
  public
135
- view
136
- virtual override
137
- returns (bool isMatching)
177
+ virtual
178
+ restricted()
179
+ onlyBundleOwner(bundleNftId)
138
180
  {
139
- return true;
181
+ _getPoolStorage()._bundleService.setBundleFee(bundleNftId, fee);
140
182
  }
141
183
 
142
184
 
143
- function isConfirmingApplication() external view override returns (bool isConfirmingApplication) {
144
- return _isConfirmingApplication;
185
+ function setMaxCapitalAmount(uint256 maxCapitalAmount)
186
+ public
187
+ virtual
188
+ restricted()
189
+ onlyOwner()
190
+ {
191
+ // TODO refactor to use pool service
192
+ // _getPoolStorage()._poolService.setMaxCapitalAmount(...);
193
+
194
+ uint256 previousMaxCapitalAmount = _getPoolStorage()._maxCapitalAmount;
195
+ _getPoolStorage()._maxCapitalAmount = maxCapitalAmount;
196
+
197
+ emit LogPoolBundleMaxCapitalAmountUpdated(previousMaxCapitalAmount, maxCapitalAmount);
145
198
  }
146
199
 
147
- function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
148
- return _collateralizationLevel;
200
+
201
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
202
+ public
203
+ virtual
204
+ restricted()
205
+ onlyOwner()
206
+ {
207
+ // TODO refactor to use pool service
208
+ // _getPoolStorage()._poolService.setBundleOwnerRole(...);
209
+
210
+ if(_getPoolStorage()._bundleOwnerRole != PUBLIC_ROLE()) {
211
+ revert ErrorPoolBundleOwnerRoleAlreadySet();
212
+ }
213
+
214
+ _getPoolStorage()._bundleOwnerRole = bundleOwnerRole;
215
+
216
+ emit LogPoolBundleOwnerRoleSet(bundleOwnerRole);
149
217
  }
150
218
 
219
+
151
220
  function setFees(
152
221
  Fee memory poolFee,
153
222
  Fee memory stakingFee,
154
223
  Fee memory performanceFee
155
224
  )
156
- external
157
- onlyOwner
158
- override
225
+ public
226
+ virtual
227
+ restricted()
228
+ onlyOwner()
159
229
  {
160
- _poolService.setFees(poolFee, stakingFee, performanceFee);
230
+ _getPoolStorage()._poolService.setFees(poolFee, stakingFee, performanceFee);
161
231
  }
162
232
 
163
- function setBundleFee(
233
+
234
+ /// @dev see {IPool.verifyApplication}
235
+ function verifyApplication(
236
+ NftId applicationNftId,
237
+ bytes memory applicationData,
164
238
  NftId bundleNftId,
165
- Fee memory fee
239
+ bytes memory bundleFilter,
240
+ uint256 collateralizationAmount
166
241
  )
167
- external
168
- override
169
- // TODO add onlyBundleOwner
242
+ public
243
+ virtual
244
+ restricted()
170
245
  {
171
- _poolService.setBundleFee(bundleNftId, fee);
246
+ // validate application data against bundle filter
247
+ if(!applicationMatchesBundle(
248
+ applicationNftId,
249
+ applicationData,
250
+ bundleNftId,
251
+ bundleFilter,
252
+ collateralizationAmount)
253
+ )
254
+ {
255
+ revert ErrorPoolApplicationBundleMismatch(applicationNftId);
256
+ }
257
+
258
+ emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
172
259
  }
173
260
 
174
- function lockBundle(
175
- NftId bundleNftId
176
- )
177
- external
178
- override
179
- // TODO add onlyBundleOwner
180
- {
181
- _poolService.lockBundle(bundleNftId);
261
+
262
+ function getCollateralizationLevel() public view virtual returns (UFixed collateralizationLevel) {
263
+ return _getPoolStorage()._collateralizationLevel;
182
264
  }
183
265
 
184
- function unlockBundle(
185
- NftId bundleNftId
186
- )
187
- external
188
- override
189
- // TODO add onlyBundleOwner
190
- {
191
- _poolService.unlockBundle(bundleNftId);
266
+
267
+ function getRetentionLevel() public view virtual returns (UFixed retentionLevel) {
268
+ return _getPoolStorage()._retentionLevel;
192
269
  }
193
270
 
194
- function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
195
- InstanceReader reader = _instance.getInstanceReader();
196
- return reader.getPoolSetupInfo(getNftId());
271
+
272
+ function isExternallyManaged() public view virtual returns (bool) {
273
+ return _getPoolStorage()._isExternallyManaged;
197
274
  }
198
275
 
199
- // from IRegisterable
200
276
 
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
- );
277
+ function isVerifyingApplications() public view virtual returns (bool isConfirmingApplication) {
278
+ return _getPoolStorage()._isVerifyingApplications;
229
279
  }
230
280
 
231
- // Internals
232
281
 
233
- function _underwrite(
234
- NftId policyNftId,
235
- bytes memory policyData,
282
+ function getMaxCapitalAmount() public view virtual returns (uint256 maxCapitalAmount) {
283
+ return _getPoolStorage()._maxCapitalAmount;
284
+ }
285
+
286
+
287
+ function isInterceptingBundleTransfers() public view virtual returns (bool) {
288
+ return isNftInterceptor();
289
+ }
290
+
291
+
292
+ function getBundleOwnerRole() public view returns (RoleId bundleOwnerRole) {
293
+ return _getPoolStorage()._bundleOwnerRole;
294
+ }
295
+
296
+
297
+ /// @dev see {IPoolComponent.applicationMatchesBundle}
298
+ /// Override this function to implement any custom application verification
299
+ /// Default implementation always returns true
300
+ function applicationMatchesBundle(
301
+ NftId applicationNftId,
302
+ bytes memory applicationData,
303
+ NftId bundleNftId,
236
304
  bytes memory bundleFilter,
237
305
  uint256 collateralizationAmount
238
306
  )
239
- internal
307
+ public
308
+ view
309
+ virtual override
310
+ returns (bool isMatching)
240
311
  {
241
- require(
242
- policyMatchesBundle(policyData, bundleFilter),
243
- "ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
244
- );
312
+ return true;
313
+ }
314
+
245
315
 
246
- emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
316
+ function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
317
+ InstanceReader reader = getInstance().getInstanceReader();
318
+ setupInfo = reader.getPoolSetupInfo(getNftId());
319
+
320
+ // fallback to initial setup info (wallet is always != address(0))
321
+ if(setupInfo.wallet == address(0)) {
322
+ setupInfo = _getInitialSetupInfo();
323
+ }
247
324
  }
248
325
 
326
+ // Internals
327
+
249
328
  function _createBundle(
250
329
  address bundleOwner,
251
330
  Fee memory fee,
252
331
  uint256 amount,
253
- uint256 lifetime,
254
- bytes calldata filter
332
+ Seconds lifetime,
333
+ bytes memory filter
255
334
  )
256
335
  internal
257
336
  returns(NftId bundleNftId)
258
337
  {
259
- bundleNftId = _poolService.createBundle(
338
+ bundleNftId = _getPoolStorage()._bundleService.createBundle(
260
339
  bundleOwner,
261
340
  fee,
262
341
  amount,
263
342
  lifetime,
264
- filter
343
+ filter);
344
+
345
+ // TODO add logging
346
+ }
347
+
348
+ // TODO remove function once this is no longer used to produce contract locations on the fly ...
349
+ function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
350
+ return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
351
+ }
352
+
353
+
354
+ function _getInitialSetupInfo() internal view returns (ISetup.PoolSetupInfo memory) {
355
+ PoolStorage storage $ = _getPoolStorage();
356
+ return ISetup.PoolSetupInfo(
357
+ getProductNftId(),
358
+ $._tokenHandler,
359
+ $._maxCapitalAmount,
360
+ isNftInterceptor(),
361
+ $._isExternallyManaged,
362
+ $._isVerifyingApplications,
363
+ $._collateralizationLevel,
364
+ $._retentionLevel,
365
+ $._initialPoolFee,
366
+ $._initialStakingFee,
367
+ $._initialPerformanceFee,
368
+ getWallet()
265
369
  );
266
370
  }
371
+
372
+
373
+ function _getPoolStorage() private pure returns (PoolStorage storage $) {
374
+ assembly {
375
+ $.slot := POOL_STORAGE_LOCATION_V1
376
+ }
377
+ }
267
378
  }