@etherisc/gif-next 0.0.2-da77c50-824 → 0.0.2-db81915-875

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 (478) hide show
  1. package/README.md +249 -23
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +842 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1345 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +823 -115
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +608 -57
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1132 -143
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +967 -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 +1743 -1154
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2187 -1199
  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 +1403 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1140 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -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 +607 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +532 -0
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  52. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  53. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  56. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  57. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  58. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  59. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  60. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IRisk.sol/IRisk.json} +2 -2
  62. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → ISetup.sol/ISetup.json} +2 -2
  64. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  65. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1060 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +681 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1266 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +725 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1040 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1774 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +793 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +627 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +686 -0
  86. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +1090 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +937 -0
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +577 -109
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +186 -213
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1511 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +741 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +955 -217
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +456 -301
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -101
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1158 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  129. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  133. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +38 -74
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +100 -33
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +164 -142
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +256 -25
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  155. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.json +30 -6
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +272 -26
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
  168. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestService.sol/TestService.json +343 -154
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +14 -18
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +37 -163
  176. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  177. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  178. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  180. package/artifacts/contracts/types/Amount.sol/AmountLib.json +185 -0
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  183. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  186. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  189. package/artifacts/contracts/types/Fee.sol/FeeLib.json +288 -0
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  191. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +78 -4
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  195. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  196. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  198. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  200. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  202. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  204. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  206. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  208. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  210. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  212. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +51 -7
  214. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  215. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  216. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  218. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  219. package/artifacts/contracts/types/Version.sol/VersionLib.json +101 -2
  220. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  221. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  222. package/contracts/components/Component.sol +253 -0
  223. package/contracts/components/Distribution.sol +284 -0
  224. package/contracts/components/IComponent.sol +76 -0
  225. package/contracts/components/IDistributionComponent.sol +71 -0
  226. package/contracts/components/IPoolComponent.sol +98 -42
  227. package/contracts/components/IProductComponent.sol +30 -9
  228. package/contracts/components/Pool.sol +237 -109
  229. package/contracts/components/Product.sol +301 -47
  230. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  231. package/contracts/instance/BundleManager.sol +126 -0
  232. package/contracts/instance/Cloneable.sol +51 -0
  233. package/contracts/instance/IInstance.sol +94 -42
  234. package/contracts/instance/IInstanceService.sol +68 -0
  235. package/contracts/instance/Instance.sol +293 -45
  236. package/contracts/instance/InstanceAccessManager.sol +527 -0
  237. package/contracts/instance/InstanceReader.sol +317 -0
  238. package/contracts/instance/InstanceService.sol +478 -0
  239. package/contracts/instance/InstanceServiceManager.sol +54 -0
  240. package/contracts/instance/ObjectManager.sol +82 -0
  241. package/contracts/instance/base/ComponentService.sol +121 -0
  242. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  243. package/contracts/instance/base/ILifecycle.sol +30 -0
  244. package/contracts/instance/base/KeyValueStore.sol +180 -0
  245. package/contracts/instance/base/Lifecycle.sol +117 -0
  246. package/contracts/instance/module/IAccess.sol +54 -0
  247. package/contracts/instance/module/IBundle.sol +23 -0
  248. package/contracts/instance/module/IComponents.sol +41 -0
  249. package/contracts/instance/module/IDistribution.sol +41 -0
  250. package/contracts/instance/module/IPolicy.sol +77 -0
  251. package/contracts/instance/module/IRisk.sol +11 -0
  252. package/contracts/instance/module/ISetup.sol +33 -0
  253. package/contracts/instance/module/ITreasury.sol +23 -0
  254. package/contracts/instance/service/ApplicationService.sol +355 -0
  255. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  256. package/contracts/instance/service/BundleService.sol +436 -0
  257. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  258. package/contracts/instance/service/ClaimService.sol +239 -0
  259. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  260. package/contracts/instance/service/DistributionService.sol +431 -0
  261. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  262. package/contracts/instance/service/IApplicationService.sol +78 -0
  263. package/contracts/instance/service/IBundleService.sol +96 -0
  264. package/contracts/instance/service/IClaimService.sol +92 -0
  265. package/contracts/instance/service/IDistributionService.sol +99 -0
  266. package/contracts/instance/service/IPolicyService.sol +137 -0
  267. package/contracts/instance/service/IPoolService.sol +81 -12
  268. package/contracts/instance/service/IProductService.sol +21 -39
  269. package/contracts/instance/service/PolicyService.sol +541 -0
  270. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  271. package/contracts/instance/service/PoolService.sol +256 -51
  272. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  273. package/contracts/instance/service/ProductService.sol +150 -298
  274. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  275. package/contracts/registry/ChainNft.sol +87 -36
  276. package/contracts/registry/IRegistry.sol +68 -24
  277. package/contracts/registry/IRegistryService.sol +68 -0
  278. package/contracts/registry/ITransferInterceptor.sol +7 -0
  279. package/contracts/registry/Registry.sol +372 -286
  280. package/contracts/registry/RegistryAccessManager.sol +216 -0
  281. package/contracts/registry/RegistryService.sol +282 -0
  282. package/contracts/registry/RegistryServiceManager.sol +62 -0
  283. package/contracts/registry/ReleaseManager.sol +324 -0
  284. package/contracts/registry/TokenRegistry.sol +116 -0
  285. package/contracts/shared/ContractDeployerLib.sol +72 -0
  286. package/contracts/shared/ERC165.sol +14 -8
  287. package/contracts/shared/INftOwnable.sol +23 -0
  288. package/contracts/shared/IPolicyHolder.sol +26 -0
  289. package/contracts/shared/IRegisterable.sol +10 -19
  290. package/contracts/shared/IRegistryLinked.sol +12 -0
  291. package/contracts/shared/IService.sol +16 -0
  292. package/contracts/shared/IVersionable.sol +38 -37
  293. package/contracts/shared/NftOwnable.sol +120 -0
  294. package/contracts/shared/PolicyHolder.sol +81 -0
  295. package/contracts/shared/ProxyManager.sol +169 -0
  296. package/contracts/shared/Registerable.sol +54 -66
  297. package/contracts/shared/RegistryLinked.sol +48 -0
  298. package/contracts/shared/Service.sol +72 -0
  299. package/contracts/shared/TokenHandler.sol +33 -0
  300. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  301. package/contracts/shared/Versionable.sol +38 -71
  302. package/contracts/test/TestFee.sol +4 -4
  303. package/contracts/test/TestRegisterable.sol +5 -6
  304. package/contracts/test/TestRoleId.sol +2 -2
  305. package/contracts/test/TestService.sol +8 -18
  306. package/contracts/test/TestVersion.sol +4 -7
  307. package/contracts/test/TestVersionable.sol +2 -5
  308. package/contracts/test/Usdc.sol +26 -0
  309. package/contracts/types/Amount.sol +65 -0
  310. package/contracts/types/Blocknumber.sol +1 -0
  311. package/contracts/types/ClaimId.sol +75 -0
  312. package/contracts/types/DistributorType.sol +55 -0
  313. package/contracts/types/Fee.sol +52 -20
  314. package/contracts/types/Key32.sol +50 -0
  315. package/contracts/types/NftId.sol +24 -1
  316. package/contracts/types/NftIdSet.sol +26 -24
  317. package/contracts/types/NumberId.sol +52 -0
  318. package/contracts/types/ObjectType.sol +56 -14
  319. package/contracts/types/PayoutId.sol +82 -0
  320. package/contracts/types/Referral.sol +89 -0
  321. package/contracts/types/RiskId.sol +43 -0
  322. package/contracts/types/RoleId.sol +72 -11
  323. package/contracts/types/Seconds.sol +54 -0
  324. package/contracts/types/StateId.sol +19 -4
  325. package/contracts/types/Timestamp.sol +22 -13
  326. package/contracts/types/UFixed.sol +145 -25
  327. package/contracts/types/Version.sol +43 -26
  328. package/package.json +6 -5
  329. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  330. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  331. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  334. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  336. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  338. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  340. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  342. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  344. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  346. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  348. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  351. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  353. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  355. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  357. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  359. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  361. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  363. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  364. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  365. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  366. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  367. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  368. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.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 -276
  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 -276
  379. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  380. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  381. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  383. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  385. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  387. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  390. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  393. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  395. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  397. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  398. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  400. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +0 -10
  402. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.json +0 -10
  404. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  405. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -538
  407. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  409. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  410. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -538
  411. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  412. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -519
  413. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  414. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  415. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  416. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  417. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  418. package/artifacts/contracts/instance/service/IService.sol/IService.json +0 -300
  419. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  420. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +0 -300
  421. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  422. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  423. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  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/test/TestPool.sol/TestPool.dbg.json +0 -4
  427. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  428. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  429. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  430. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  431. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  432. package/contracts/components/BaseComponent.sol +0 -89
  433. package/contracts/components/IBaseComponent.sol +0 -19
  434. package/contracts/experiment/errors/Require.sol +0 -38
  435. package/contracts/experiment/errors/Revert.sol +0 -44
  436. package/contracts/experiment/inheritance/A.sol +0 -53
  437. package/contracts/experiment/inheritance/B.sol +0 -28
  438. package/contracts/experiment/inheritance/C.sol +0 -34
  439. package/contracts/experiment/inheritance/IA.sol +0 -13
  440. package/contracts/experiment/inheritance/IB.sol +0 -10
  441. package/contracts/experiment/inheritance/IC.sol +0 -12
  442. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  443. package/contracts/experiment/statemachine/ISM.sol +0 -25
  444. package/contracts/experiment/statemachine/README.md +0 -112
  445. package/contracts/experiment/statemachine/SM.sol +0 -57
  446. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  447. package/contracts/experiment/types/TypeA.sol +0 -47
  448. package/contracts/experiment/types/TypeB.sol +0 -29
  449. package/contracts/instance/IInstanceLinked.sol +0 -8
  450. package/contracts/instance/IServiceLinked.sol +0 -12
  451. package/contracts/instance/InstanceBase.sol +0 -74
  452. package/contracts/instance/module/access/Access.sol +0 -149
  453. package/contracts/instance/module/access/IAccess.sol +0 -53
  454. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  455. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  456. package/contracts/instance/module/component/ComponentModule.sol +0 -104
  457. package/contracts/instance/module/component/IComponent.sol +0 -53
  458. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  459. package/contracts/instance/module/lifecycle/LifecycleModule.sol +0 -89
  460. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  461. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  462. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  463. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  464. package/contracts/instance/module/product/IProductModule.sol +0 -6
  465. package/contracts/instance/module/product/ProductModule.sol +0 -8
  466. package/contracts/instance/module/treasury/ITreasury.sol +0 -104
  467. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  468. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -148
  469. package/contracts/instance/service/ComponentOwnerService.sol +0 -174
  470. package/contracts/instance/service/ComponentServiceBase.sol +0 -41
  471. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  472. package/contracts/instance/service/IService.sol +0 -15
  473. package/contracts/instance/service/ServiceBase.sol +0 -39
  474. package/contracts/registry/IChainNft.sol +0 -21
  475. package/contracts/registry/IRegistryLinked.sol +0 -8
  476. package/contracts/shared/IOwnable.sol +0 -6
  477. package/contracts/test/TestPool.sol +0 -22
  478. package/contracts/test/TestProduct.sol +0 -44
@@ -1,174 +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";
12
-
13
- contract Pool is BaseComponent, IPoolComponent {
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";
14
17
 
15
- bool internal _isVerifying;
16
- UFixed internal _collateralizationLevel;
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;
17
24
 
18
- // may be used to interact with instance by derived contracts
19
- IPoolService internal _poolService;
25
+ struct PoolStorage {
26
+ IPoolService _poolService;
27
+ IBundleService _bundleService;
28
+ }
20
29
 
21
- // only relevant to protect callback functions for "active" pools
22
- IProductService private _productService;
23
30
 
24
- modifier onlyPoolService() {
25
- require(
26
- msg.sender == address(_poolService),
27
- "ERROR:POL-001:NOT_POOL_SERVICE");
31
+ modifier onlyBundleOwner(NftId bundleNftId) {
32
+ if(msg.sender != getRegistry().ownerOf(bundleNftId)) {
33
+ revert ErrorPoolNotBundleOwner(bundleNftId, msg.sender);
34
+ }
28
35
  _;
29
36
  }
30
37
 
31
- modifier onlyProductService() {
32
- require(
33
- msg.sender == address(_productService),
34
- "ERROR:POL-002:NOT_PRODUCT_SERVICE");
38
+
39
+ modifier onlyPoolService() {
40
+ if(msg.sender != address(_getPoolStorage()._poolService)) {
41
+ revert ErrorPoolNotPoolService(msg.sender);
42
+ }
35
43
  _;
36
44
  }
37
45
 
38
- constructor(
46
+
47
+ function initializePool(
39
48
  address registry,
40
49
  NftId instanceNftId,
41
- // TODO refactor into tokenNftId
50
+ string memory name,
42
51
  address token,
43
- bool verifying,
44
- UFixed collateralizationLevel
52
+ bool isInterceptingNftTransfers,
53
+ address initialOwner,
54
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
45
55
  )
46
- BaseComponent(registry, instanceNftId, token)
56
+ public
57
+ virtual
58
+ onlyInitializing()
47
59
  {
48
- _isVerifying = verifying;
49
- // TODO add validation
50
- _collateralizationLevel = collateralizationLevel;
60
+ initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, registryData);
51
61
 
52
- _poolService = _instance.getPoolService();
53
- _productService = _instance.getProductService();
62
+ PoolStorage storage $ = _getPoolStorage();
63
+ $._poolService = IPoolService(_getServiceAddress(POOL()));
64
+ $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
65
+
66
+ registerInterface(type(IPoolComponent).interfaceId);
54
67
  }
55
68
 
56
- function createBundle(
57
- uint256 initialAmount,
58
- uint256 lifetime,
59
- bytes memory filter
69
+
70
+ function stake(
71
+ NftId bundleNftId,
72
+ uint256 amount
60
73
  )
61
- external
62
- virtual override
63
- returns(NftId bundleNftId)
74
+ public
75
+ virtual
76
+ restricted()
77
+ onlyBundleOwner(bundleNftId)
64
78
  {
65
- address owner = msg.sender;
66
- bundleNftId = _poolService.createBundle(
67
- owner,
68
- initialAmount,
69
- lifetime,
70
- filter
71
- );
79
+ // TODO add implementation
80
+ }
72
81
 
73
- // TODO add logging
82
+
83
+ function unstake(
84
+ NftId bundleNftId,
85
+ uint256 amount
86
+ )
87
+ public
88
+ virtual
89
+ restricted()
90
+ onlyBundleOwner(bundleNftId)
91
+ {
92
+ // TODO add implementation
74
93
  }
75
94
 
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
95
+
96
+ function extend(
97
+ NftId bundleNftId,
98
+ Seconds lifetimeExtension
85
99
  )
86
- external
87
- onlyProductService
88
- virtual override
100
+ public
101
+ virtual
102
+ restricted()
103
+ onlyBundleOwner(bundleNftId)
89
104
  {
90
- _underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
105
+ // TODO add implementation
91
106
  }
92
107
 
93
- /**
94
- * @dev see {IPoolComponent.policyMatchesBundle}.
95
- * Default implementation always returns true
96
- */
97
- function policyMatchesBundle(
98
- bytes memory, // policyData
99
- bytes memory // bundleFilter
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);
126
+ }
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
+
139
+ function setBundleFee(
140
+ NftId bundleNftId,
141
+ Fee memory fee
100
142
  )
101
143
  public
102
- view
103
- virtual override
104
- returns (bool isMatching)
144
+ virtual
145
+ restricted()
146
+ onlyBundleOwner(bundleNftId)
105
147
  {
106
- return true;
148
+ _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
107
149
  }
108
150
 
109
151
 
110
- function isVerifying() external view override returns (bool verifying) {
111
- return _isVerifying;
152
+ function setMaxCapitalAmount(uint256 maxCapitalAmount)
153
+ public
154
+ virtual
155
+ restricted()
156
+ onlyOwner()
157
+ {
158
+ _getPoolStorage()._poolService.setMaxCapitalAmount(maxCapitalAmount);
159
+ }
160
+
161
+
162
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
163
+ public
164
+ virtual
165
+ restricted()
166
+ onlyOwner()
167
+ {
168
+ _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
112
169
  }
113
170
 
114
- function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
115
- return _collateralizationLevel;
171
+
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);
183
+ }
184
+
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);
116
210
  }
117
211
 
118
- function _underwrite(
119
- NftId policyNftId,
120
- 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,
121
220
  bytes memory bundleFilter,
122
221
  uint256 collateralizationAmount
123
222
  )
124
- internal
223
+ public
224
+ view
225
+ virtual override
226
+ returns (bool isMatching)
125
227
  {
126
- require(
127
- policyMatchesBundle(policyData, bundleFilter),
128
- "ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
129
- );
228
+ return true;
229
+ }
230
+
130
231
 
131
- emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
232
+ function getPoolInfo() external view returns (IComponents.PoolInfo memory poolInfo) {
233
+ poolInfo = abi.decode(getComponentInfo().data, (IComponents.PoolInfo));
132
234
  }
133
235
 
236
+ // Internals
237
+
134
238
  function _createBundle(
135
239
  address bundleOwner,
136
- uint256 amount,
137
- uint256 lifetime,
138
- bytes calldata filter
240
+ Fee memory fee,
241
+ Amount amount,
242
+ Seconds lifetime,
243
+ bytes memory filter
139
244
  )
140
245
  internal
141
246
  returns(NftId bundleNftId)
142
247
  {
143
- bundleNftId = _poolService.createBundle(
248
+ bundleNftId = _getPoolStorage()._poolService.createBundle(
144
249
  bundleOwner,
250
+ fee,
145
251
  amount,
146
252
  lifetime,
147
- filter
148
- );
253
+ filter);
254
+
255
+ // TODO add logging
149
256
  }
150
257
 
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;
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));
159
261
  }
160
262
 
161
- function getPerformanceFee()
162
- external
163
- view
164
- override
165
- 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)
166
270
  {
167
- return _instance.getPoolSetup(getNftId()).performanceFee;
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
+ )));
168
294
  }
169
295
 
170
- // from registerable
171
- function getType() public pure override returns (ObjectType) {
172
- return POOL();
296
+
297
+ function _getPoolStorage() private pure returns (PoolStorage storage $) {
298
+ assembly {
299
+ $.slot := POOL_STORAGE_LOCATION_V1
300
+ }
173
301
  }
174
302
  }