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