@etherisc/gif-next 0.0.2-c8acbd3-764 → 0.0.2-c96ba91-007

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