@etherisc/gif-next 0.0.2-7b53731-014 → 0.0.2-7bdebe2-893

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 (492) hide show
  1. package/README.md +218 -39
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +873 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1104 -133
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +636 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +704 -44
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +736 -128
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +556 -65
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1062 -233
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +873 -119
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1753 -1032
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +600 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2190 -1182
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1569 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1099 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +724 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +631 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1092 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +672 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1291 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +700 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1400 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +760 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1589 -211
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +619 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +730 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +873 -116
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +651 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +761 -124
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +151 -339
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1153 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +676 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1365 -238
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +732 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +451 -445
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +858 -0
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -101
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1150 -0
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +657 -0
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +485 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  132. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +64 -56
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -37
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  139. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IService.sol/IService.json} +166 -139
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +238 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +569 -0
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +245 -27
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  154. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +256 -220
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  158. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +261 -28
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  167. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestService.sol/TestService.json +344 -135
  169. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +38 -140
  175. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  176. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.json +42 -11
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  202. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  208. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +51 -7
  213. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  214. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  216. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  217. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  218. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  220. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  221. package/contracts/components/Component.sol +272 -0
  222. package/contracts/components/Distribution.sol +214 -62
  223. package/contracts/components/IComponent.sol +90 -0
  224. package/contracts/components/IDistributionComponent.sol +43 -19
  225. package/contracts/components/IPoolComponent.sol +89 -47
  226. package/contracts/components/IProductComponent.sol +13 -11
  227. package/contracts/components/Pool.sol +224 -157
  228. package/contracts/components/Product.sol +256 -112
  229. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  230. package/contracts/instance/BundleManager.sol +126 -0
  231. package/contracts/instance/Cloneable.sol +51 -0
  232. package/contracts/instance/IInstance.sol +95 -44
  233. package/contracts/instance/IInstanceService.sol +63 -0
  234. package/contracts/instance/Instance.sol +302 -58
  235. package/contracts/instance/InstanceAccessManager.sol +527 -0
  236. package/contracts/instance/InstanceReader.sol +366 -0
  237. package/contracts/instance/InstanceService.sol +484 -0
  238. package/contracts/instance/InstanceServiceManager.sol +54 -0
  239. package/contracts/instance/ObjectManager.sol +82 -0
  240. package/contracts/instance/base/ComponentService.sol +130 -0
  241. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  242. package/contracts/instance/base/ILifecycle.sol +3 -3
  243. package/contracts/instance/base/KeyValueStore.sol +30 -42
  244. package/contracts/instance/base/Lifecycle.sol +27 -7
  245. package/contracts/instance/module/IAccess.sol +54 -0
  246. package/contracts/instance/module/IBundle.sol +23 -0
  247. package/contracts/instance/module/IComponents.sol +41 -0
  248. package/contracts/instance/module/IDistribution.sol +41 -0
  249. package/contracts/instance/module/IPolicy.sol +77 -0
  250. package/contracts/instance/module/IRisk.sol +11 -0
  251. package/contracts/instance/module/ISetup.sol +33 -0
  252. package/contracts/instance/module/ITreasury.sol +23 -0
  253. package/contracts/instance/service/ApplicationService.sol +356 -0
  254. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  255. package/contracts/instance/service/BundleService.sol +385 -0
  256. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  257. package/contracts/instance/service/ClaimService.sol +444 -0
  258. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  259. package/contracts/instance/service/DistributionService.sol +398 -26
  260. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  261. package/contracts/instance/service/IApplicationService.sol +78 -0
  262. package/contracts/instance/service/IBundleService.sol +115 -0
  263. package/contracts/instance/service/IClaimService.sol +90 -0
  264. package/contracts/instance/service/IDistributionService.sol +88 -1
  265. package/contracts/instance/service/IPolicyService.sol +80 -0
  266. package/contracts/instance/service/IPoolService.sol +104 -18
  267. package/contracts/instance/service/IProductService.sol +9 -76
  268. package/contracts/instance/service/PolicyService.sol +358 -0
  269. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  270. package/contracts/instance/service/PoolService.sol +335 -81
  271. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  272. package/contracts/instance/service/ProductService.sol +136 -435
  273. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  274. package/contracts/registry/ChainNft.sol +87 -36
  275. package/contracts/registry/IRegistry.sol +68 -24
  276. package/contracts/registry/IRegistryService.sol +66 -0
  277. package/contracts/registry/ITransferInterceptor.sol +7 -0
  278. package/contracts/registry/Registry.sol +372 -286
  279. package/contracts/registry/RegistryAccessManager.sol +216 -0
  280. package/contracts/registry/RegistryService.sol +282 -0
  281. package/contracts/registry/RegistryServiceManager.sol +62 -0
  282. package/contracts/registry/ReleaseManager.sol +324 -0
  283. package/contracts/registry/TokenRegistry.sol +116 -0
  284. package/contracts/shared/ContractDeployerLib.sol +72 -0
  285. package/contracts/shared/ERC165.sol +14 -8
  286. package/contracts/shared/INftOwnable.sol +23 -0
  287. package/contracts/shared/IPolicyHolder.sol +40 -0
  288. package/contracts/shared/IRegisterable.sol +10 -19
  289. package/contracts/shared/IRegistryLinked.sol +11 -0
  290. package/contracts/shared/IService.sol +18 -0
  291. package/contracts/shared/IVersionable.sol +38 -37
  292. package/contracts/shared/NftOwnable.sol +118 -0
  293. package/contracts/shared/PolicyHolder.sol +94 -0
  294. package/contracts/shared/ProxyManager.sol +169 -0
  295. package/contracts/shared/Registerable.sol +52 -63
  296. package/contracts/shared/RegistryLinked.sol +43 -0
  297. package/contracts/shared/Service.sol +72 -0
  298. package/contracts/shared/TokenHandler.sol +33 -0
  299. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  300. package/contracts/shared/Versionable.sol +38 -68
  301. package/contracts/test/TestFee.sol +2 -2
  302. package/contracts/test/TestRegisterable.sol +5 -6
  303. package/contracts/test/TestRoleId.sol +1 -1
  304. package/contracts/test/TestService.sol +7 -14
  305. package/contracts/types/Amount.sol +80 -0
  306. package/contracts/types/Blocknumber.sol +1 -0
  307. package/contracts/types/ClaimId.sol +75 -0
  308. package/contracts/types/DistributorType.sol +55 -0
  309. package/contracts/types/Fee.sol +15 -7
  310. package/contracts/types/Key32.sol +8 -3
  311. package/contracts/types/NftId.sol +8 -0
  312. package/contracts/types/NftIdSet.sol +26 -24
  313. package/contracts/types/NumberId.sol +52 -0
  314. package/contracts/types/ObjectType.sol +41 -15
  315. package/contracts/types/PayoutId.sol +82 -0
  316. package/contracts/types/Referral.sol +89 -0
  317. package/contracts/types/RoleId.sol +68 -9
  318. package/contracts/types/Seconds.sol +54 -0
  319. package/contracts/types/StateId.sol +12 -3
  320. package/contracts/types/Timestamp.sol +22 -13
  321. package/contracts/types/UFixed.sol +129 -12
  322. package/contracts/types/Version.sol +14 -1
  323. package/package.json +6 -5
  324. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  325. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  326. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  327. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
  328. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  330. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  332. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  334. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  336. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  338. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  340. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  342. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  344. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  346. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  348. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  350. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  352. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  354. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  356. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  358. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  360. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  361. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  362. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  363. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  364. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  365. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  366. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  367. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  368. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  369. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -376
  370. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  371. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  372. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  373. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  375. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  376. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  378. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  380. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  383. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  386. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  388. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  390. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  393. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  396. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  397. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  398. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  400. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  402. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  404. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  405. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  407. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  409. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  410. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  412. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  413. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  414. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  415. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  416. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  417. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  418. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  419. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  420. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  421. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  422. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  423. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -495
  424. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  425. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  426. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  427. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
  428. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  429. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  430. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -187
  431. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  432. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  433. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  434. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  435. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  436. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  437. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  438. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  439. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  440. package/contracts/components/BaseComponent.sol +0 -94
  441. package/contracts/components/IBaseComponent.sol +0 -19
  442. package/contracts/experiment/errors/Require.sol +0 -38
  443. package/contracts/experiment/errors/Revert.sol +0 -44
  444. package/contracts/experiment/inheritance/A.sol +0 -53
  445. package/contracts/experiment/inheritance/B.sol +0 -28
  446. package/contracts/experiment/inheritance/C.sol +0 -34
  447. package/contracts/experiment/inheritance/IA.sol +0 -13
  448. package/contracts/experiment/inheritance/IB.sol +0 -10
  449. package/contracts/experiment/inheritance/IC.sol +0 -12
  450. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  451. package/contracts/experiment/statemachine/ISM.sol +0 -25
  452. package/contracts/experiment/statemachine/README.md +0 -112
  453. package/contracts/experiment/statemachine/SM.sol +0 -57
  454. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  455. package/contracts/experiment/types/TypeA.sol +0 -47
  456. package/contracts/experiment/types/TypeB.sol +0 -29
  457. package/contracts/instance/IInstanceLinked.sol +0 -8
  458. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  459. package/contracts/instance/base/IInstanceBase.sol +0 -22
  460. package/contracts/instance/base/IService.sol +0 -15
  461. package/contracts/instance/base/InstanceBase.sol +0 -91
  462. package/contracts/instance/base/ModuleBase.sol +0 -57
  463. package/contracts/instance/base/ServiceBase.sol +0 -37
  464. package/contracts/instance/module/access/Access.sol +0 -149
  465. package/contracts/instance/module/access/IAccess.sol +0 -53
  466. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  467. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  468. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  469. package/contracts/instance/module/component/IComponent.sol +0 -28
  470. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  471. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  472. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  473. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  474. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  475. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  476. package/contracts/instance/module/risk/IRisk.sol +0 -26
  477. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  478. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  479. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  480. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  481. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  482. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  483. package/contracts/registry/IChainNft.sol +0 -21
  484. package/contracts/registry/IRegistryLinked.sol +0 -8
  485. package/contracts/registry/RegistryUpgradeable.sol +0 -416
  486. package/contracts/shared/IOwnable.sol +0 -6
  487. package/contracts/shared/Proxy.sol +0 -83
  488. package/contracts/shared/VersionableUpgradeable.sol +0 -108
  489. package/contracts/test/TestDistribution.sol +0 -21
  490. package/contracts/test/TestPool.sol +0 -25
  491. package/contracts/test/TestProduct.sol +0 -72
  492. package/contracts/types/ReferralId.sol +0 -48
@@ -1,235 +1,302 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {ObjectType, POOL} from "../types/ObjectType.sol";
5
- import {IProductService} from "../instance/service/IProductService.sol";
6
- import {IPoolService} from "../instance/service/IPoolService.sol";
7
- import {NftId} from "../types/NftId.sol";
8
- import {Fee} from "../types/Fee.sol";
9
- import {UFixed} from "../types/UFixed.sol";
4
+ import {Amount, AmountLib} from "../types/Amount.sol";
5
+ import {Component} from "./Component.sol";
6
+ import {Fee, FeeLib} from "../types/Fee.sol";
7
+ import {IBundleService} from "../instance/service/IBundleService.sol";
10
8
  import {IPoolComponent} from "./IPoolComponent.sol";
11
- import {BaseComponent} from "./BaseComponent.sol";
9
+ import {IPoolService} from "../instance/service/IPoolService.sol";
10
+ import {IComponents} from "../instance/module/IComponents.sol";
11
+ import {NftId, NftIdLib} from "../types/NftId.sol";
12
+ import {BUNDLE, 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, UFixedLib} from "../types/UFixed.sol";
12
17
 
13
- contract Pool is BaseComponent, IPoolComponent {
18
+ abstract contract Pool is
19
+ Component,
20
+ IPoolComponent
21
+ {
22
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Pool")) - 1)) & ~bytes32(uint256(0xff));
23
+ bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
14
24
 
15
- bool internal _isVerifying;
16
- UFixed internal _collateralizationLevel;
25
+ struct PoolStorage {
26
+ IPoolService _poolService;
27
+ IBundleService _bundleService;
28
+ }
17
29
 
18
- Fee internal _initialPoolFee;
19
- Fee internal _initialStakingFee;
20
- Fee internal _initialPerformanceFee;
21
30
 
22
- // may be used to interact with instance by derived contracts
23
- IPoolService internal _poolService;
31
+ modifier onlyBundleOwner(NftId bundleNftId) {
32
+ if(msg.sender != getRegistry().ownerOf(bundleNftId)) {
33
+ revert ErrorPoolNotBundleOwner(bundleNftId, msg.sender);
34
+ }
35
+ _;
36
+ }
24
37
 
25
- // only relevant to protect callback functions for "active" pools
26
- IProductService private _productService;
27
38
 
28
39
  modifier onlyPoolService() {
29
- require(
30
- msg.sender == address(_poolService),
31
- "ERROR:POL-001:NOT_POOL_SERVICE");
40
+ if(msg.sender != address(_getPoolStorage()._poolService)) {
41
+ revert ErrorPoolNotPoolService(msg.sender);
42
+ }
32
43
  _;
33
44
  }
34
45
 
35
- modifier onlyProductService() {
36
- require(
37
- msg.sender == address(_productService),
38
- "ERROR:POL-002:NOT_PRODUCT_SERVICE");
39
- _;
40
- }
41
46
 
42
- constructor(
47
+ function initializePool(
43
48
  address registry,
44
49
  NftId instanceNftId,
45
- // TODO refactor into tokenNftId
50
+ string memory name,
46
51
  address token,
47
- bool verifying,
48
- UFixed collateralizationLevel,
49
- Fee memory poolFee,
50
- Fee memory stakingFee,
51
- Fee memory performanceFee
52
+ bool isInterceptingNftTransfers,
53
+ address initialOwner,
54
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
52
55
  )
53
- BaseComponent(registry, instanceNftId, token)
56
+ public
57
+ virtual
58
+ onlyInitializing()
54
59
  {
55
- _isVerifying = verifying;
56
- // TODO add validation
57
- _collateralizationLevel = collateralizationLevel;
58
- _initialPoolFee = poolFee;
59
- _initialStakingFee = stakingFee;
60
- _initialPerformanceFee = performanceFee;
60
+ initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, registryData);
61
+
62
+ PoolStorage storage $ = _getPoolStorage();
63
+ $._poolService = IPoolService(_getServiceAddress(POOL()));
64
+ $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
61
65
 
62
- _poolService = _instance.getPoolService();
63
- _productService = _instance.getProductService();
66
+ registerInterface(type(IPoolComponent).interfaceId);
64
67
  }
65
68
 
66
- function setFees(
67
- Fee memory poolFee,
68
- Fee memory stakingFee,
69
- Fee memory performanceFee
69
+
70
+ function stake(
71
+ NftId bundleNftId,
72
+ uint256 amount
70
73
  )
71
- external
72
- onlyOwner
73
- override
74
+ public
75
+ virtual
76
+ restricted()
77
+ onlyBundleOwner(bundleNftId)
74
78
  {
75
- _poolService.setFees(poolFee, stakingFee, performanceFee);
79
+ // TODO add implementation
76
80
  }
77
81
 
78
- function createBundle(
79
- Fee memory fee,
80
- uint256 initialAmount,
81
- uint256 lifetime,
82
- bytes memory filter
82
+
83
+ function unstake(
84
+ NftId bundleNftId,
85
+ uint256 amount
83
86
  )
84
- external
85
- virtual override
86
- returns(NftId bundleNftId)
87
+ public
88
+ virtual
89
+ restricted()
90
+ onlyBundleOwner(bundleNftId)
87
91
  {
88
- address owner = msg.sender;
89
- bundleNftId = _poolService.createBundle(
90
- owner,
91
- fee,
92
- initialAmount,
93
- lifetime,
94
- filter
95
- );
92
+ // TODO add implementation
93
+ }
96
94
 
97
- // TODO add logging
95
+
96
+ function extend(
97
+ NftId bundleNftId,
98
+ Seconds lifetimeExtension
99
+ )
100
+ public
101
+ virtual
102
+ restricted()
103
+ onlyBundleOwner(bundleNftId)
104
+ {
105
+ // TODO add implementation
106
+ }
107
+
108
+
109
+ function lockBundle(NftId bundleNftId)
110
+ public
111
+ virtual
112
+ //restricted() // TODO consider adding this back
113
+ onlyBundleOwner(bundleNftId)
114
+ {
115
+ _getPoolStorage()._bundleService.lock(bundleNftId);
116
+ }
117
+
118
+
119
+ function unlockBundle(NftId bundleNftId)
120
+ public
121
+ virtual
122
+ //restricted()
123
+ onlyBundleOwner(bundleNftId)
124
+ {
125
+ _getPoolStorage()._bundleService.unlock(bundleNftId);
98
126
  }
99
127
 
128
+
129
+ function close(NftId bundleNftId)
130
+ public
131
+ virtual
132
+ //restricted()
133
+ onlyBundleOwner(bundleNftId)
134
+ {
135
+ _getPoolStorage()._poolService.closeBundle(bundleNftId);
136
+ }
137
+
138
+
100
139
  function setBundleFee(
101
140
  NftId bundleNftId,
102
141
  Fee memory fee
103
142
  )
104
- external
105
- override
106
- // TODO add onlyBundleOwner
143
+ public
144
+ virtual
145
+ restricted()
146
+ onlyBundleOwner(bundleNftId)
107
147
  {
108
- _poolService.setBundleFee(bundleNftId, fee);
148
+ _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
109
149
  }
110
150
 
111
- /**
112
- * @dev see {IPool.underwrite}.
113
- * Default implementation that only writes a {LogUnderwrittenByPool} entry.
114
- */
115
- function underwrite(
116
- NftId policyNftId,
117
- bytes memory policyData,
118
- bytes memory bundleFilter,
119
- uint256 collateralizationAmount
120
- )
121
- external
122
- onlyProductService
123
- virtual override
151
+
152
+ function setMaxCapitalAmount(uint256 maxCapitalAmount)
153
+ public
154
+ virtual
155
+ restricted()
156
+ onlyOwner()
124
157
  {
125
- _underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
158
+ _getPoolStorage()._poolService.setMaxCapitalAmount(maxCapitalAmount);
126
159
  }
127
160
 
128
- /**
129
- * @dev see {IPoolComponent.policyMatchesBundle}.
130
- * Default implementation always returns true
131
- */
132
- function policyMatchesBundle(
133
- bytes memory, // policyData
134
- bytes memory // bundleFilter
135
- )
161
+
162
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
136
163
  public
137
- view
138
- virtual override
139
- returns (bool isMatching)
164
+ virtual
165
+ restricted()
166
+ onlyOwner()
140
167
  {
141
- return true;
168
+ _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
142
169
  }
143
170
 
144
171
 
145
- function isVerifying() external view override returns (bool verifying) {
146
- return _isVerifying;
172
+ function setFees(
173
+ Fee memory poolFee,
174
+ Fee memory stakingFee,
175
+ Fee memory performanceFee
176
+ )
177
+ public
178
+ virtual
179
+ restricted()
180
+ onlyOwner()
181
+ {
182
+ _getPoolStorage()._poolService.setFees(poolFee, stakingFee, performanceFee);
147
183
  }
148
184
 
149
- function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
150
- return _collateralizationLevel;
185
+
186
+ /// @dev see {IPool.verifyApplication}
187
+ function verifyApplication(
188
+ NftId applicationNftId,
189
+ bytes memory applicationData,
190
+ NftId bundleNftId,
191
+ bytes memory bundleFilter,
192
+ uint256 collateralizationAmount
193
+ )
194
+ public
195
+ virtual
196
+ restricted()
197
+ {
198
+ if(!applicationMatchesBundle(
199
+ applicationNftId,
200
+ applicationData,
201
+ bundleNftId,
202
+ bundleFilter,
203
+ collateralizationAmount)
204
+ )
205
+ {
206
+ revert ErrorPoolApplicationBundleMismatch(applicationNftId);
207
+ }
208
+
209
+ emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
151
210
  }
152
211
 
153
- function _underwrite(
154
- NftId policyNftId,
155
- bytes memory policyData,
212
+
213
+ /// @dev see {IPoolComponent.applicationMatchesBundle}
214
+ /// Override this function to implement any custom application verification
215
+ /// Default implementation always returns true
216
+ function applicationMatchesBundle(
217
+ NftId applicationNftId,
218
+ bytes memory applicationData,
219
+ NftId bundleNftId,
156
220
  bytes memory bundleFilter,
157
221
  uint256 collateralizationAmount
158
222
  )
159
- internal
223
+ public
224
+ view
225
+ virtual override
226
+ returns (bool isMatching)
160
227
  {
161
- require(
162
- policyMatchesBundle(policyData, bundleFilter),
163
- "ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
164
- );
228
+ return true;
229
+ }
230
+
165
231
 
166
- emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
232
+ function getPoolInfo() external view returns (IComponents.PoolInfo memory poolInfo) {
233
+ poolInfo = abi.decode(getComponentInfo().data, (IComponents.PoolInfo));
167
234
  }
168
235
 
236
+ // Internals
237
+
169
238
  function _createBundle(
170
239
  address bundleOwner,
171
240
  Fee memory fee,
172
- uint256 amount,
173
- uint256 lifetime,
174
- bytes calldata filter
241
+ Amount amount,
242
+ Seconds lifetime,
243
+ bytes memory filter
175
244
  )
176
245
  internal
177
246
  returns(NftId bundleNftId)
178
247
  {
179
- bundleNftId = _poolService.createBundle(
248
+ bundleNftId = _getPoolStorage()._poolService.createBundle(
180
249
  bundleOwner,
181
250
  fee,
182
251
  amount,
183
252
  lifetime,
184
- filter
185
- );
186
- }
253
+ filter);
187
254
 
188
- // from pool component
189
- function getPoolFee()
190
- external
191
- view
192
- override
193
- returns (Fee memory poolFee)
194
- {
195
- NftId productNftId = _instance.getProductNftId(getNftId());
196
- if (_instance.hasTreasuryInfo(productNftId)) {
197
- return _instance.getTreasuryInfo(productNftId).poolFee;
198
- } else {
199
- return _initialPoolFee;
200
- }
255
+ // TODO add logging
201
256
  }
202
257
 
203
- function getStakingFee()
204
- external
205
- view
206
- override
207
- returns (Fee memory stakingFee)
208
- {
209
- NftId productNftId = _instance.getProductNftId(getNftId());
210
- if (_instance.hasTreasuryInfo(productNftId)) {
211
- return _instance.getTreasuryInfo(productNftId).stakingFee;
212
- } else {
213
- return _initialStakingFee;
214
- }
258
+ // TODO remove function once this is no longer used to produce contract locations on the fly ...
259
+ function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
260
+ return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
215
261
  }
216
262
 
217
- function getPerformanceFee()
218
- external
219
- view
220
- override
221
- returns (Fee memory performanceFee)
263
+ /// @dev defines initial pool specification
264
+ /// overwrite this function according to your use case
265
+ function _getInitialInfo()
266
+ internal
267
+ view
268
+ virtual override
269
+ returns (IComponents.ComponentInfo memory info)
222
270
  {
223
- NftId productNftId = _instance.getProductNftId(getNftId());
224
- if (_instance.hasTreasuryInfo(productNftId)) {
225
- return _instance.getTreasuryInfo(productNftId).performanceFee;
226
- } else {
227
- return _initialPerformanceFee;
228
- }
271
+ return IComponents.ComponentInfo(
272
+ getName(),
273
+ getToken(),
274
+ TokenHandler(address(0)), // will be created by GIF service during registration
275
+ address(this), // contract is its own wallet
276
+ AmountLib.zero(), // balance amount
277
+ AmountLib.zero(), // fee amount
278
+ abi.encode(
279
+ IComponents.PoolInfo(
280
+ NftIdLib.zero(), // will be set when GIF registers the related product
281
+ PUBLIC_ROLE(), // bundleOwnerRole
282
+ type(uint256).max, // maxCapitalAmount,
283
+ 0, // initial balance amount
284
+ 0, // initial fee amount
285
+ isNftInterceptor(), // isInterceptingBundleTransfers
286
+ false, // isExternallyManaged,
287
+ false, // isVerifyingApplications,
288
+ UFixedLib.toUFixed(1), // collateralizationLevel,
289
+ UFixedLib.toUFixed(1), // retentionLevel,
290
+ FeeLib.zeroFee(), // initialPoolFee,
291
+ FeeLib.zeroFee(), // initialStakingFee,
292
+ FeeLib.zeroFee() // initialPerformanceFee,
293
+ )));
229
294
  }
230
295
 
231
- // from registerable
232
- function getType() public pure override returns (ObjectType) {
233
- return POOL();
296
+
297
+ function _getPoolStorage() private pure returns (PoolStorage storage $) {
298
+ assembly {
299
+ $.slot := POOL_STORAGE_LOCATION_V1
300
+ }
234
301
  }
235
302
  }