@etherisc/gif-next 0.0.2-f7b8c9f-518 → 0.0.2-f7c17b4-297

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 (456) hide show
  1. package/README.md +243 -2
  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 +928 -175
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → components/IComponent.sol/IComponent.json} +153 -174
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +701 -1
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +797 -76
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +567 -34
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +995 -260
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +710 -157
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1451 -1206
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → IInstanceService.sol/IInstanceService.json} +199 -182
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +2088 -1373
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1391 -0
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +192 -195
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  51. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  53. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  57. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  58. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  63. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  65. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  67. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  69. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  71. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  73. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +473 -168
  75. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +677 -0
  77. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  81. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +398 -0
  83. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  85. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  87. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +30 -255
  89. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +41 -419
  91. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  93. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  95. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +227 -264
  97. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
  99. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +233 -535
  101. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +236 -63
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +312 -178
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +210 -212
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +424 -255
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +324 -122
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  122. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  123. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  124. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  125. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  127. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  131. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  132. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  133. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  134. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +51 -47
  135. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  139. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  140. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  141. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  142. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  143. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  145. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  146. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  147. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/Service.sol/Service.json} +147 -154
  149. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  150. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  151. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  152. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  153. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  154. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  155. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  161. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestService.sol/TestService.json +141 -215
  163. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  165. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  167. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  169. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  170. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  171. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  172. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  175. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  176. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  177. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  178. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  180. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  182. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  184. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  185. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  186. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  188. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  190. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  192. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  194. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  196. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  198. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  200. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  202. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  204. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  205. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  206. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  208. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  210. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  212. package/contracts/components/Component.sol +221 -0
  213. package/contracts/components/Distribution.sol +214 -61
  214. package/contracts/components/IComponent.sol +68 -0
  215. package/contracts/components/IDistributionComponent.sol +59 -5
  216. package/contracts/components/IPoolComponent.sol +126 -39
  217. package/contracts/components/IProductComponent.sol +12 -9
  218. package/contracts/components/Pool.sol +290 -158
  219. package/contracts/components/Product.sol +134 -140
  220. package/contracts/instance/BundleManager.sol +125 -0
  221. package/contracts/instance/Cloneable.sol +46 -0
  222. package/contracts/instance/IInstance.sol +84 -46
  223. package/contracts/instance/IInstanceService.sol +59 -0
  224. package/contracts/instance/Instance.sol +273 -69
  225. package/contracts/instance/InstanceAccessManager.sol +297 -0
  226. package/contracts/instance/InstanceReader.sol +293 -0
  227. package/contracts/instance/InstanceService.sol +490 -0
  228. package/contracts/instance/InstanceServiceManager.sol +54 -0
  229. package/contracts/instance/ObjectManager.sol +84 -0
  230. package/contracts/instance/base/ComponentService.sol +134 -0
  231. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  232. package/contracts/instance/base/ILifecycle.sol +3 -3
  233. package/contracts/instance/base/KeyValueStore.sol +49 -38
  234. package/contracts/instance/base/Lifecycle.sol +1 -1
  235. package/contracts/instance/module/IAccess.sol +47 -0
  236. package/contracts/instance/module/IBundle.sol +21 -0
  237. package/contracts/instance/module/IDistribution.sol +39 -0
  238. package/contracts/instance/module/IPolicy.sol +48 -0
  239. package/contracts/instance/module/IRisk.sol +11 -0
  240. package/contracts/instance/module/ISetup.sol +48 -0
  241. package/contracts/instance/module/ITreasury.sol +23 -0
  242. package/contracts/instance/service/ApplicationService.sol +269 -0
  243. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  244. package/contracts/instance/service/BundleService.sol +299 -0
  245. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  246. package/contracts/instance/service/ClaimService.sol +151 -0
  247. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  248. package/contracts/instance/service/DistributionService.sol +244 -21
  249. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  250. package/contracts/instance/service/IApplicationService.sol +83 -0
  251. package/contracts/instance/service/IBundleService.sol +55 -0
  252. package/contracts/instance/service/IClaimService.sol +61 -0
  253. package/contracts/instance/service/IDistributionService.sol +54 -1
  254. package/contracts/instance/service/IPolicyService.sol +90 -0
  255. package/contracts/instance/service/IPoolService.sol +7 -24
  256. package/contracts/instance/service/IProductService.sol +9 -76
  257. package/contracts/instance/service/PolicyService.sol +476 -0
  258. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  259. package/contracts/instance/service/PoolService.sol +77 -117
  260. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  261. package/contracts/instance/service/ProductService.sol +156 -433
  262. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  263. package/contracts/registry/ChainNft.sol +41 -26
  264. package/contracts/registry/IRegistry.sol +51 -25
  265. package/contracts/registry/IRegistryService.sol +54 -16
  266. package/contracts/registry/Registry.sol +279 -306
  267. package/contracts/registry/RegistryAccessManager.sol +216 -0
  268. package/contracts/registry/RegistryService.sol +162 -247
  269. package/contracts/registry/RegistryServiceManager.sol +30 -11
  270. package/contracts/registry/ReleaseManager.sol +322 -0
  271. package/contracts/registry/TokenRegistry.sol +116 -0
  272. package/contracts/shared/ERC165.sol +15 -9
  273. package/contracts/shared/INftOwnable.sol +11 -10
  274. package/contracts/shared/IPolicyHolder.sol +26 -0
  275. package/contracts/shared/IRegisterable.sol +4 -6
  276. package/contracts/shared/IRegistryLinked.sol +12 -0
  277. package/contracts/shared/IService.sol +16 -0
  278. package/contracts/shared/IVersionable.sol +4 -47
  279. package/contracts/shared/NftOwnable.sol +67 -83
  280. package/contracts/shared/PolicyHolder.sol +81 -0
  281. package/contracts/shared/ProxyManager.sol +101 -26
  282. package/contracts/shared/Registerable.sol +17 -32
  283. package/contracts/shared/RegistryLinked.sol +48 -0
  284. package/contracts/shared/Service.sol +58 -0
  285. package/contracts/shared/TokenHandler.sol +27 -0
  286. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  287. package/contracts/shared/Versionable.sol +5 -93
  288. package/contracts/test/TestFee.sol +2 -2
  289. package/contracts/test/TestRegisterable.sol +1 -1
  290. package/contracts/test/TestRoleId.sol +1 -1
  291. package/contracts/test/TestService.sol +6 -7
  292. package/contracts/types/ClaimId.sol +52 -0
  293. package/contracts/types/DistributorType.sol +55 -0
  294. package/contracts/types/Fee.sol +3 -3
  295. package/contracts/types/Key32.sol +8 -3
  296. package/contracts/types/NftIdSet.sol +26 -24
  297. package/contracts/types/NumberId.sol +52 -0
  298. package/contracts/types/ObjectType.sol +39 -14
  299. package/contracts/types/PayoutId.sol +54 -0
  300. package/contracts/types/Referral.sol +85 -0
  301. package/contracts/types/RoleId.sol +66 -9
  302. package/contracts/types/Seconds.sol +54 -0
  303. package/contracts/types/StateId.sol +5 -1
  304. package/contracts/types/Timestamp.sol +16 -13
  305. package/contracts/types/UFixed.sol +128 -12
  306. package/contracts/types/Version.sol +4 -1
  307. package/package.json +6 -5
  308. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  309. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -301
  310. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  312. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  313. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  314. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  315. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  316. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  317. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  319. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  320. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  321. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  323. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  325. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  327. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  330. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  332. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  334. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  336. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  338. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  340. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  342. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  343. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  344. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  345. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  346. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  347. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  348. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  349. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  350. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  351. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  352. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  353. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  354. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  355. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  356. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  357. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  358. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  359. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  360. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  361. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  362. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  363. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  364. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  365. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  366. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  367. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  368. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  369. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  370. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  371. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  373. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  376. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  378. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  380. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  382. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  384. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  387. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  389. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  392. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  394. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  396. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  397. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -794
  398. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  399. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  400. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  401. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  402. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  403. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  404. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  405. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  406. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  407. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  408. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  409. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  410. package/contracts/components/BaseComponent.sol +0 -79
  411. package/contracts/components/IBaseComponent.sol +0 -19
  412. package/contracts/experiment/errors/Require.sol +0 -38
  413. package/contracts/experiment/errors/Revert.sol +0 -44
  414. package/contracts/experiment/inheritance/A.sol +0 -53
  415. package/contracts/experiment/inheritance/B.sol +0 -28
  416. package/contracts/experiment/inheritance/C.sol +0 -34
  417. package/contracts/experiment/inheritance/IA.sol +0 -13
  418. package/contracts/experiment/inheritance/IB.sol +0 -10
  419. package/contracts/experiment/inheritance/IC.sol +0 -12
  420. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  421. package/contracts/experiment/statemachine/ISM.sol +0 -25
  422. package/contracts/experiment/statemachine/SM.sol +0 -57
  423. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  424. package/contracts/experiment/types/TypeA.sol +0 -47
  425. package/contracts/experiment/types/TypeB.sol +0 -29
  426. package/contracts/instance/IInstanceLinked.sol +0 -8
  427. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  428. package/contracts/instance/base/IInstanceBase.sol +0 -23
  429. package/contracts/instance/base/IService.sol +0 -15
  430. package/contracts/instance/base/InstanceBase.sol +0 -89
  431. package/contracts/instance/base/ModuleBase.sol +0 -57
  432. package/contracts/instance/base/ServiceBase.sol +0 -44
  433. package/contracts/instance/module/access/Access.sol +0 -149
  434. package/contracts/instance/module/access/IAccess.sol +0 -53
  435. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  436. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  437. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  438. package/contracts/instance/module/component/IComponent.sol +0 -28
  439. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  440. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  441. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  442. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  443. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  444. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  445. package/contracts/instance/module/risk/IRisk.sol +0 -26
  446. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  447. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  448. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  449. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  450. package/contracts/instance/service/ComponentOwnerService.sol +0 -275
  451. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  452. package/contracts/registry/IChainNft.sol +0 -22
  453. package/contracts/test/TestDistribution.sol +0 -22
  454. package/contracts/test/TestPool.sol +0 -27
  455. package/contracts/test/TestProduct.sol +0 -74
  456. package/contracts/types/ReferralId.sol +0 -48
@@ -1,246 +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";
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";
8
+ import {IPoolComponent} from "./IPoolComponent.sol";
6
9
  import {IPoolService} from "../instance/service/IPoolService.sol";
7
- import {NftId} from "../types/NftId.sol";
8
- import {Fee} from "../types/Fee.sol";
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";
9
16
  import {UFixed} from "../types/UFixed.sol";
10
- import {IPoolComponent} from "./IPoolComponent.sol";
11
- import {BaseComponent} from "./BaseComponent.sol";
12
17
 
13
- import {IRegistry} from "../registry/IRegistry.sol";
14
- import {IPool} from "../instance/module/pool/IPoolModule.sol";
15
- import {ITreasury} from "../instance/module/treasury/ITreasury.sol";
16
18
 
17
- import {IRegisterable} from "../shared/IRegisterable.sol";
18
- 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;
19
25
 
20
- contract Pool is BaseComponent, IPoolComponent {
26
+ struct PoolStorage {
27
+ UFixed _collateralizationLevel;
28
+ UFixed _retentionLevel;
29
+ uint256 _maxCapitalAmount;
30
+
31
+ bool _isExternallyManaged;
32
+ bool _isVerifyingApplications;
21
33
 
22
- bool internal _isVerifying;
23
- UFixed internal _collateralizationLevel;
34
+ RoleId _bundleOwnerRole;
35
+ bool _isInterceptingBundleTransfers;
24
36
 
25
- Fee internal _initialPoolFee;
26
- Fee internal _initialStakingFee;
27
- Fee internal _initialPerformanceFee;
37
+ Fee _initialPoolFee;
38
+ Fee _initialStakingFee;
39
+ Fee _initialPerformanceFee;
28
40
 
29
- // may be used to interact with instance by derived contracts
30
- IPoolService internal _poolService;
41
+ TokenHandler _tokenHandler;
31
42
 
32
- // only relevant to protect callback functions for "active" pools
33
- IProductService private _productService;
43
+ // may be used to interact with instance by derived contracts
44
+ IPoolService _poolService;
45
+ IBundleService _bundleService;
46
+ }
34
47
 
35
- modifier onlyPoolService() {
36
- require(
37
- msg.sender == address(_poolService),
38
- "ERROR:POL-001:NOT_POOL_SERVICE");
48
+
49
+ modifier onlyBundleOwner(NftId bundleNftId) {
50
+ if(msg.sender != getRegistry().ownerOf(bundleNftId)) {
51
+ revert ErrorPoolNotBundleOwner(bundleNftId, msg.sender);
52
+ }
39
53
  _;
40
54
  }
41
55
 
42
- modifier onlyProductService() {
43
- require(
44
- msg.sender == address(_productService),
45
- "ERROR:POL-002:NOT_PRODUCT_SERVICE");
56
+
57
+ modifier onlyPoolService() {
58
+ if(msg.sender != address(_getPoolStorage()._poolService)) {
59
+ revert ErrorPoolNotPoolService(msg.sender);
60
+ }
46
61
  _;
47
62
  }
48
63
 
49
- constructor(
64
+
65
+ function initializePool(
50
66
  address registry,
51
67
  NftId instanceNftId,
52
- // TODO refactor into tokenNftId
68
+ string memory name,
53
69
  address token,
54
- bool isInterceptor,
55
- bool verifying,
70
+ bool isInterceptingNftTransfers,
71
+ bool isExternallyManaging,
72
+ bool isVerifying,
56
73
  UFixed collateralizationLevel,
57
- Fee memory poolFee,
58
- Fee memory stakingFee,
59
- Fee memory performanceFee,
60
- 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
61
77
  )
62
- BaseComponent(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
78
+ public
79
+ virtual
80
+ onlyInitializing()
63
81
  {
64
- _isVerifying = verifying;
65
- // TODO add validation
66
- _collateralizationLevel = collateralizationLevel;
67
- _initialPoolFee = poolFee;
68
- _initialStakingFee = stakingFee;
69
- _initialPerformanceFee = performanceFee;
82
+ initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, registryData);
70
83
 
71
- _poolService = _instance.getPoolService();
72
- _productService = _instance.getProductService();
84
+ PoolStorage storage $ = _getPoolStorage();
85
+ // TODO add validation
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();
73
98
 
74
- _registerInterface(type(IPoolComponent).interfaceId);
99
+ registerInterface(type(IPoolComponent).interfaceId);
75
100
  }
76
101
 
77
- function createBundle(
78
- Fee memory fee,
79
- uint256 initialAmount,
80
- uint256 lifetime,
81
- bytes memory filter
102
+
103
+ function stake(
104
+ NftId bundleNftId,
105
+ uint256 amount
82
106
  )
83
- external
84
- virtual override
85
- returns(NftId bundleNftId)
107
+ public
108
+ virtual
109
+ restricted()
110
+ onlyBundleOwner(bundleNftId)
86
111
  {
87
- address owner = msg.sender;
88
- bundleNftId = _poolService.createBundle(
89
- owner,
90
- fee,
91
- initialAmount,
92
- lifetime,
93
- filter
94
- );
112
+ // TODO add implementation
113
+ }
95
114
 
96
- // TODO add logging
115
+
116
+ function unstake(
117
+ NftId bundleNftId,
118
+ uint256 amount
119
+ )
120
+ public
121
+ virtual
122
+ restricted()
123
+ onlyBundleOwner(bundleNftId)
124
+ {
125
+ // TODO add implementation
97
126
  }
98
127
 
99
- /**
100
- * @dev see {IPool.underwrite}.
101
- * Default implementation that only writes a {LogUnderwrittenByPool} entry.
102
- */
103
- function underwrite(
104
- NftId policyNftId,
105
- bytes memory policyData,
106
- bytes memory bundleFilter,
107
- uint256 collateralizationAmount
128
+
129
+ function extend(
130
+ NftId bundleNftId,
131
+ Seconds lifetimeExtension
108
132
  )
109
- external
110
- onlyProductService
111
- virtual override
133
+ public
134
+ virtual
135
+ restricted()
136
+ onlyBundleOwner(bundleNftId)
137
+ {
138
+ // TODO add implementation
139
+ }
140
+
141
+
142
+ function lockBundle(NftId bundleNftId)
143
+ public
144
+ virtual
145
+ restricted()
146
+ onlyBundleOwner(bundleNftId)
147
+ {
148
+ _getPoolStorage()._bundleService.lockBundle(bundleNftId);
149
+ }
150
+
151
+
152
+ function unlockBundle(NftId bundleNftId)
153
+ public
154
+ virtual
155
+ restricted()
156
+ onlyBundleOwner(bundleNftId)
112
157
  {
113
- _underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
158
+ _getPoolStorage()._bundleService.unlockBundle(bundleNftId);
114
159
  }
115
160
 
116
- /**
117
- * @dev see {IPoolComponent.policyMatchesBundle}.
118
- * Default implementation always returns true
119
- */
120
- function policyMatchesBundle(
121
- bytes memory, // policyData
122
- bytes memory // bundleFilter
161
+
162
+ function close(NftId bundleNftId)
163
+ public
164
+ virtual
165
+ restricted()
166
+ onlyBundleOwner(bundleNftId)
167
+ {
168
+ // TODO add implementation
169
+ }
170
+
171
+
172
+ function setBundleFee(
173
+ NftId bundleNftId,
174
+ Fee memory fee
123
175
  )
124
176
  public
125
- view
126
- virtual override
127
- returns (bool isMatching)
177
+ virtual
178
+ restricted()
179
+ onlyBundleOwner(bundleNftId)
128
180
  {
129
- return true;
181
+ _getPoolStorage()._bundleService.setBundleFee(bundleNftId, fee);
130
182
  }
131
183
 
132
184
 
133
- function isVerifying() external view override returns (bool verifying) {
134
- return _isVerifying;
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);
135
198
  }
136
199
 
137
- function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
138
- 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);
139
217
  }
140
218
 
219
+
141
220
  function setFees(
142
221
  Fee memory poolFee,
143
222
  Fee memory stakingFee,
144
223
  Fee memory performanceFee
145
224
  )
146
- external
147
- onlyOwner
148
- override
225
+ public
226
+ virtual
227
+ restricted()
228
+ onlyOwner()
149
229
  {
150
- _poolService.setFees(poolFee, stakingFee, performanceFee);
230
+ _getPoolStorage()._poolService.setFees(poolFee, stakingFee, performanceFee);
151
231
  }
152
232
 
153
- function setBundleFee(
233
+
234
+ /// @dev see {IPool.verifyApplication}
235
+ function verifyApplication(
236
+ NftId applicationNftId,
237
+ bytes memory applicationData,
154
238
  NftId bundleNftId,
155
- Fee memory fee
239
+ bytes memory bundleFilter,
240
+ uint256 collateralizationAmount
156
241
  )
157
- external
158
- override
159
- // TODO add onlyBundleOwner
242
+ public
243
+ virtual
244
+ restricted()
160
245
  {
161
- _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);
162
259
  }
163
- // TODO delete, call instance instead
164
- function getFees()
165
- external
166
- view
167
- override
168
- returns (Fee memory, Fee memory, Fee memory)
169
- {
170
- NftId productNftId = _instance.getProductNftId(getNftId());
171
- //if (_instance.hasTreasuryInfo(productNftId)) {
172
- ITreasury.TreasuryInfo memory info = _instance.getTreasuryInfo(productNftId);
173
- return (info.poolFee, info.stakingFee, info.performanceFee);
174
- //} else {
175
- // return (_initialPoolFee, _initialStakingFee, _initialPerformanceFee);
176
- //}
260
+
261
+
262
+ function getCollateralizationLevel() public view virtual returns (UFixed collateralizationLevel) {
263
+ return _getPoolStorage()._collateralizationLevel;
177
264
  }
178
265
 
179
- // from IRegisterable
180
266
 
181
- // TODO used only once, occupies space
182
- // TODO do not use super
183
- function getInitialInfo()
184
- public
185
- view
186
- override (IRegisterable, Registerable)
187
- returns (IRegistry.ObjectInfo memory, bytes memory)
188
- {
189
- (
190
- IRegistry.ObjectInfo memory info,
191
- bytes memory data
192
- ) = super.getInitialInfo();
193
-
194
- return (
195
- info,
196
- abi.encode(
197
- IPool.PoolInfo(
198
- _isVerifying,
199
- _collateralizationLevel
200
- ),
201
- _wallet,
202
- _token,
203
- _initialPoolFee,
204
- _initialStakingFee,
205
- _initialPerformanceFee
206
- )
207
- );
267
+ function getRetentionLevel() public view virtual returns (UFixed retentionLevel) {
268
+ return _getPoolStorage()._retentionLevel;
269
+ }
270
+
271
+
272
+ function isExternallyManaged() public view virtual returns (bool) {
273
+ return _getPoolStorage()._isExternallyManaged;
274
+ }
275
+
276
+
277
+ function isVerifyingApplications() public view virtual returns (bool isConfirmingApplication) {
278
+ return _getPoolStorage()._isVerifyingApplications;
279
+ }
280
+
281
+
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;
208
294
  }
209
295
 
210
- // Internals
211
296
 
212
- function _underwrite(
213
- NftId policyNftId,
214
- bytes memory policyData,
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,
215
304
  bytes memory bundleFilter,
216
305
  uint256 collateralizationAmount
217
306
  )
218
- internal
307
+ public
308
+ view
309
+ virtual override
310
+ returns (bool isMatching)
219
311
  {
220
- require(
221
- policyMatchesBundle(policyData, bundleFilter),
222
- "ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
223
- );
312
+ return true;
313
+ }
224
314
 
225
- emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
315
+
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
+ }
226
324
  }
227
325
 
326
+ // Internals
327
+
228
328
  function _createBundle(
229
329
  address bundleOwner,
230
330
  Fee memory fee,
231
331
  uint256 amount,
232
- uint256 lifetime,
233
- bytes calldata filter
332
+ Seconds lifetime,
333
+ bytes memory filter
234
334
  )
235
335
  internal
236
336
  returns(NftId bundleNftId)
237
337
  {
238
- bundleNftId = _poolService.createBundle(
338
+ bundleNftId = _getPoolStorage()._bundleService.createBundle(
239
339
  bundleOwner,
240
340
  fee,
241
341
  amount,
242
342
  lifetime,
243
- 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()
244
369
  );
245
370
  }
371
+
372
+
373
+ function _getPoolStorage() private pure returns (PoolStorage storage $) {
374
+ assembly {
375
+ $.slot := POOL_STORAGE_LOCATION_V1
376
+ }
377
+ }
246
378
  }