@etherisc/gif-next 0.0.2-def25d4-556 → 0.0.2-e0ff180-766

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