@etherisc/gif-next 0.0.2-ce87da3-250 → 0.0.2-ceb30b2-601

Sign up to get free protection for your applications and to get access to all the features.
Files changed (278) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +78 -102
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +139 -153
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +155 -76
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +181 -125
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +342 -178
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +162 -151
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +286 -245
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +83 -175
  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 +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +707 -463
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +167 -76
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +630 -625
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +472 -126
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +258 -236
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +291 -238
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +79 -48
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +114 -35
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +322 -99
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +59 -44
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +459 -242
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +90 -39
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +646 -84
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +119 -32
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +673 -129
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +96 -69
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +205 -59
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +253 -185
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +373 -51
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +480 -37
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +170 -102
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +776 -46
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +85 -27
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +255 -222
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +37 -78
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +929 -58
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +84 -37
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +145 -58
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +28 -37
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -37
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -50
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  123. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  124. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  125. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +45 -9
  126. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  128. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  130. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
  132. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -19
  135. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  136. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +47 -24
  137. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
  139. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +7 -20
  141. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  142. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  143. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Service.sol/Service.json +92 -29
  145. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  146. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  147. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  148. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  149. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  152. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +7 -20
  154. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  156. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestService.sol/TestService.json +107 -40
  158. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  161. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  163. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  164. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  165. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  166. package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
  167. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  169. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
  172. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  174. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  176. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  178. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  180. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  181. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  182. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  185. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
  187. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  189. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  191. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  193. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  195. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  197. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  199. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  201. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  203. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  205. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  207. package/contracts/components/Component.sol +99 -87
  208. package/contracts/components/Distribution.sol +18 -21
  209. package/contracts/components/IComponent.sol +40 -18
  210. package/contracts/components/IDistributionComponent.sol +1 -22
  211. package/contracts/components/IPoolComponent.sol +73 -47
  212. package/contracts/components/IProductComponent.sol +3 -2
  213. package/contracts/components/Pool.sol +178 -130
  214. package/contracts/components/Product.sol +157 -71
  215. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  216. package/contracts/instance/BundleManager.sol +10 -9
  217. package/contracts/instance/Cloneable.sol +7 -2
  218. package/contracts/instance/IInstance.sol +39 -27
  219. package/contracts/instance/IInstanceService.sol +16 -12
  220. package/contracts/instance/Instance.sol +125 -98
  221. package/contracts/instance/InstanceAccessManager.sol +388 -158
  222. package/contracts/instance/InstanceReader.sol +36 -12
  223. package/contracts/instance/InstanceService.sol +220 -212
  224. package/contracts/instance/ObjectManager.sol +6 -8
  225. package/contracts/instance/base/ComponentService.sol +28 -32
  226. package/contracts/instance/base/KeyValueStore.sol +13 -36
  227. package/contracts/instance/base/Lifecycle.sol +23 -6
  228. package/contracts/instance/module/IAccess.sol +21 -14
  229. package/contracts/instance/module/IBundle.sol +8 -5
  230. package/contracts/instance/module/IComponents.sol +41 -0
  231. package/contracts/instance/module/IDistribution.sol +2 -1
  232. package/contracts/instance/module/IPolicy.sol +38 -7
  233. package/contracts/instance/module/ISetup.sol +7 -22
  234. package/contracts/instance/service/ApplicationService.sol +138 -50
  235. package/contracts/instance/service/BundleService.sol +228 -83
  236. package/contracts/instance/service/ClaimService.sol +240 -30
  237. package/contracts/instance/service/DistributionService.sol +179 -114
  238. package/contracts/instance/service/IApplicationService.sol +9 -13
  239. package/contracts/instance/service/IBundleService.sol +74 -26
  240. package/contracts/instance/service/IClaimService.sol +52 -23
  241. package/contracts/instance/service/IDistributionService.sol +21 -3
  242. package/contracts/instance/service/IPolicyService.sol +20 -29
  243. package/contracts/instance/service/IPoolService.sol +127 -3
  244. package/contracts/instance/service/PolicyService.sol +133 -251
  245. package/contracts/instance/service/PoolService.sol +258 -18
  246. package/contracts/instance/service/ProductService.sol +31 -54
  247. package/contracts/registry/ChainNft.sol +8 -0
  248. package/contracts/registry/IRegistry.sol +2 -0
  249. package/contracts/registry/IRegistryService.sol +2 -3
  250. package/contracts/registry/ITransferInterceptor.sol +1 -0
  251. package/contracts/registry/Registry.sol +23 -20
  252. package/contracts/registry/RegistryService.sol +15 -16
  253. package/contracts/registry/ReleaseManager.sol +20 -18
  254. package/contracts/shared/IPolicyHolder.sol +20 -8
  255. package/contracts/shared/IRegistryLinked.sol +0 -1
  256. package/contracts/shared/IService.sol +6 -6
  257. package/contracts/shared/NftOwnable.sol +0 -2
  258. package/contracts/shared/PolicyHolder.sol +14 -8
  259. package/contracts/shared/Registerable.sol +12 -11
  260. package/contracts/shared/RegistryLinked.sol +0 -5
  261. package/contracts/shared/Service.sol +21 -7
  262. package/contracts/shared/TokenHandler.sol +11 -5
  263. package/contracts/test/TestService.sol +1 -1
  264. package/contracts/types/Amount.sol +70 -0
  265. package/contracts/types/Blocknumber.sol +1 -0
  266. package/contracts/types/ClaimId.sol +25 -2
  267. package/contracts/types/Fee.sol +13 -5
  268. package/contracts/types/NftId.sol +8 -0
  269. package/contracts/types/ObjectType.sol +6 -5
  270. package/contracts/types/PayoutId.sol +33 -5
  271. package/contracts/types/Referral.sol +4 -0
  272. package/contracts/types/RoleId.sol +13 -6
  273. package/contracts/types/Seconds.sol +54 -0
  274. package/contracts/types/StateId.sol +7 -2
  275. package/contracts/types/Timestamp.sol +18 -13
  276. package/contracts/types/UFixed.sol +1 -0
  277. package/contracts/types/Version.sol +1 -0
  278. package/package.json +1 -1
@@ -3,85 +3,111 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Fee} from "../types/Fee.sol";
5
5
  import {IComponent} from "./IComponent.sol";
6
- import {ISetup} from "../instance/module/ISetup.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
7
7
  import {NftId} from "../types/NftId.sol";
8
+ import {RoleId} from "../types/RoleId.sol";
9
+ import {Seconds} from "../types/Seconds.sol";
8
10
  import {UFixed} from "../types/UFixed.sol";
9
11
 
10
12
  /// @dev pool components hold and manage the collateral to cover active policies
11
13
  /// pools come in different flavors
12
14
  interface IPoolComponent is IComponent {
13
15
 
14
- event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
16
+ error ErrorPoolNotBundleOwner(NftId bundleNftId, address caller);
17
+ error ErrorPoolNotPoolService(address caller);
15
18
 
16
- error ErrorPoolNotPoolService(address service);
19
+ error ErrorPoolApplicationBundleMismatch(NftId applicationNftId);
17
20
 
18
- function getSetupInfo() external view returns (ISetup.PoolSetupInfo memory setupInfo);
21
+ event LogPoolVerifiedByPool(address pool, NftId applicationNftId, uint256 collateralizationAmount);
19
22
 
20
- function setFees(
21
- Fee memory poolFee,
22
- Fee memory stakingFee,
23
- Fee memory performanceFee
24
- ) external;
23
+ /// @dev increases the staked tokens by the specified amount
24
+ /// only the bundle owner may stake tokens
25
+ /// bundle MUST be in active or locked state
26
+ function stake(NftId bundleNftId, uint256 amount) external;
27
+
28
+ /// @dev decreases the staked tokens by the specified amount
29
+ /// only the bundle owner may unstake tokens from the bundle
30
+ /// bundle MUST be in active, locked or closed state
31
+ function unstake(NftId bundleNftId, uint256 amount) external;
25
32
 
26
- /// @dev sets an additional bundle fee, this fee is added on top of the poolFee and deducted from the premium amounts.
33
+ /// @dev extends the bundle lifetime of the bundle by the specified time
34
+ /// only the bundle owner may extend the bundle's lifetime
35
+ /// bundle MUST be in active or locked state
36
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external;
37
+
38
+ /// @dev locks the specified bundle
39
+ /// a bundle to be locked MUST be in active state
40
+ /// locked bundles may not be used to collateralize any new policy
41
+ function lockBundle(NftId bundleNftId) external;
42
+
43
+ /// @dev unlocks the specified bundle
44
+ /// a bundle to be unlocked MUST be in locked state
45
+ function unlockBundle(NftId bundleNftId) external;
46
+
47
+ /// @dev close the specified bundle
48
+ /// a bundle to be closed MUST be in active or locked state
49
+ /// to close a bundle all all linked policies MUST be in closed state as well
50
+ /// closing a bundle finalizes the bundle bookkeeping including overall profit calculation
51
+ /// once a bundle is closed this action cannot be reversed
52
+ function close(NftId bundleNftId) external;
53
+
54
+ /// @dev sets the fee for the specified bundle
55
+ /// the fee is added on top of the poolFee and deducted from the premium amounts
27
56
  /// via these fees individual bundler owner may earn income per policy in the context of peer to peer pools
28
57
  function setBundleFee(
29
58
  NftId bundleNftId,
30
59
  Fee memory fee
31
60
  ) external;
32
61
 
62
+ /// @dev sets the maximum overall capital amound held by this pool
63
+ /// function may only be called by pool owner
64
+ function setMaxCapitalAmount(uint256 maxCapitalAmount) external;
65
+
66
+ /// @dev sets the required role to create/own bundles
67
+ /// may only be called once after setting up a pool
68
+ /// may only be called by pool owner
69
+ function setBundleOwnerRole(RoleId bundleOwnerRole) external;
70
+
71
+ /// @dev update pool fees to the specified values
72
+ /// pool fees: are deducted from the premium amount and goes to the pool owner
73
+ /// staking fees: are deducted from the staked tokens by a bundle owner and goes to the pool owner
74
+ /// performance fees: when a bundle is closed a bundle specific profit is calculated
75
+ /// the performance fee is deducted from this profit and goes to the pool owner
76
+ function setFees(
77
+ Fee memory poolFee,
78
+ Fee memory stakingFee,
79
+ Fee memory performanceFee
80
+ ) external;
81
+
33
82
  /// @dev this is a callback function that is called by the product service when underwriting a policy.
34
83
  /// the pool has the option to check the details and object to underwriting by reverting.
35
84
  /// the function is only called for "active" pools that ask to be involved/notified
36
85
  /// by product related state changes.
37
86
  function verifyApplication(
38
87
  NftId applicationNftId,
39
- bytes memory policyData,
88
+ bytes memory applicationData,
89
+ NftId bundleNftId,
40
90
  bytes memory bundleFilter,
41
91
  uint256 collateralizationAmount
42
92
  ) external;
43
93
 
44
- function lockBundle(NftId bundleNftId) external;
45
-
46
- function unlockBundle(NftId bundleNftId) external;
47
-
48
- /// @dev defines the multiplier to calculate the required collateral to cover a given sum insured amount
49
- /// default implementation returns 100%
50
- function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
51
-
52
- /// @dev defines the amount of collateral held in the pool.
53
- /// if the value is < 100% the pool is required to hold a policy that covers the locally missing collateral
54
- /// default implementation returns 100%
55
- function getRetentionLevel() external view returns (UFixed retentionLevel);
56
-
57
- /// @dev declares if pool intercept transfers of bundle nft ids
58
- /// - yes: pool may block transfer of bundle ownership or simply updates some bookkeeping related to bundle ownership. callback function is nftTransferFrom
59
- /// - no: pool is not involved in transfer of bundle ownership
60
- /// default implementation returns false (no)
61
- function isInterceptingBundleTransfers() external view returns (bool);
62
-
63
- /// @dev declares if pool relies on external management of collateral (yes/no):
64
- /// - yes: underwriting of new policies does not require an actual token balance, instead it is assumed that the pool owner will manage funds externally and inject enough tokens to allow process confirmed payouts
65
- /// - no: the pool smart contract ensures that the necessary capacity of the pool prior to underwriting.
66
- /// default implementation returns false (no)
67
- function isExternallyManaged() external view returns (bool);
68
-
69
- /// @dev declares if pool component is actively involved in underwriting (yes/no):
70
- /// - yes: verifying pools components actively confirm underwriting applications, ie the pool component logic explicitly needs to confirm the locking of collateral to cover the sum insured of the policy
71
- /// - no: underwriting a policy does not require any interaction with the pool component if the covering bundle can provide the necessary captial
72
- /// default implementation returnsfalse (no)
73
- function isVerifyingApplications() external view returns (bool);
74
-
75
- /// @dev returns true iff the policy application data in policyData matches
76
- /// with the bundle filter criteria encoded in bundleFilter
94
+ /// @dev returns true iff the application matches with the bundle
77
95
  /// this is a callback function that is only called if a pool declares itself as a verifying pool
78
96
  /// default implementation returns true
79
- function policyMatchesBundle(
80
- bytes memory policyData,
81
- bytes memory bundleFilter
97
+ function applicationMatchesBundle(
98
+ NftId applicationNftId,
99
+ bytes memory applicationData,
100
+ NftId bundleNftId,
101
+ bytes memory bundleFilter,
102
+ uint256 collateralizationAmount
82
103
  )
83
104
  external
84
105
  view
85
106
  returns (bool isMatching);
86
107
 
108
+ /// @dev returns pool specific infos for this pool
109
+ /// when registered with an instance the info is obtained from the data stored in the instance
110
+ /// when not registered the function returns the info from the component contract
111
+ function getPoolInfo() external view returns (IComponents.PoolInfo memory info);
112
+
87
113
  }
@@ -7,6 +7,7 @@ import {ISetup} from "../instance/module/ISetup.sol";
7
7
  import {NftId} from "../types/NftId.sol";
8
8
  import {ReferralId} from "../types/Referral.sol";
9
9
  import {RiskId} from "../types/RiskId.sol";
10
+ import {Seconds} from "../types/Seconds.sol";
10
11
 
11
12
  interface IProductComponent is IComponent {
12
13
 
@@ -20,7 +21,7 @@ interface IProductComponent is IComponent {
20
21
  function calculatePremium(
21
22
  uint256 sumInsuredAmount,
22
23
  RiskId riskId,
23
- uint256 lifetime,
24
+ Seconds lifetime,
24
25
  bytes memory applicationData,
25
26
  NftId bundleNftId,
26
27
  ReferralId referralId
@@ -29,7 +30,7 @@ interface IProductComponent is IComponent {
29
30
  function calculateNetPremium(
30
31
  uint256 sumInsuredAmount,
31
32
  RiskId riskId,
32
- uint256 lifetime,
33
+ Seconds lifetime,
33
34
  bytes memory applicationData
34
35
  ) external view returns (uint256 netPremiumAmount);
35
36
 
@@ -1,20 +1,19 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {POOL} from "../types/ObjectType.sol";
5
- import {IPoolService} from "../instance/service/IPoolService.sol";
6
- import {IBundleService} from "../instance/service/IBundleService.sol";
7
- import {NftId, NftIdLib} from "../types/NftId.sol";
4
+ import {Amount, AmountLib} from "../types/Amount.sol";
5
+ import {Component} from "./Component.sol";
8
6
  import {Fee, FeeLib} from "../types/Fee.sol";
9
- import {UFixed} from "../types/UFixed.sol";
7
+ import {IBundleService} from "../instance/service/IBundleService.sol";
10
8
  import {IPoolComponent} from "./IPoolComponent.sol";
11
- import {Component} from "./Component.sol";
9
+ import {IPoolService} from "../instance/service/IPoolService.sol";
10
+ import {IComponents} from "../instance/module/IComponents.sol";
11
+ import {NftId, NftIdLib} from "../types/NftId.sol";
12
+ import {BUNDLE, POOL} from "../types/ObjectType.sol";
13
+ import {RoleId, PUBLIC_ROLE} from "../types/RoleId.sol";
14
+ import {Seconds} from "../types/Seconds.sol";
12
15
  import {TokenHandler} from "../shared/TokenHandler.sol";
13
- import {ISetup} from "../instance/module/ISetup.sol";
14
-
15
- import {ISetup} from "../instance/module/ISetup.sol";
16
- import {InstanceReader} from "../instance/InstanceReader.sol";
17
-
16
+ import {UFixed, UFixedLib} from "../types/UFixed.sol";
18
17
 
19
18
  abstract contract Pool is
20
19
  Component,
@@ -24,24 +23,19 @@ abstract contract Pool is
24
23
  bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
25
24
 
26
25
  struct PoolStorage {
27
- UFixed _collateralizationLevel;
28
- UFixed _retentionLevel;
29
-
30
- bool _isExternallyManaged;
31
- bool _isInterceptingBundleTransfers;
32
- bool _isVerifyingApplications;
33
-
34
- Fee _initialPoolFee;
35
- Fee _initialStakingFee;
36
- Fee _initialPerformanceFee;
37
-
38
- TokenHandler _tokenHandler;
39
-
40
- // may be used to interact with instance by derived contracts
41
26
  IPoolService _poolService;
42
27
  IBundleService _bundleService;
43
28
  }
44
29
 
30
+
31
+ modifier onlyBundleOwner(NftId bundleNftId) {
32
+ if(msg.sender != getRegistry().ownerOf(bundleNftId)) {
33
+ revert ErrorPoolNotBundleOwner(bundleNftId, msg.sender);
34
+ }
35
+ _;
36
+ }
37
+
38
+
45
39
  modifier onlyPoolService() {
46
40
  if(msg.sender != address(_getPoolStorage()._poolService)) {
47
41
  revert ErrorPoolNotPoolService(msg.sender);
@@ -54,98 +48,124 @@ abstract contract Pool is
54
48
  address registry,
55
49
  NftId instanceNftId,
56
50
  string memory name,
57
- // TODO refactor into tokenNftId
58
51
  address token,
59
52
  bool isInterceptingNftTransfers,
60
- bool isExternallyManaging,
61
- bool isVerifying,
62
- UFixed collateralizationLevel,
63
- UFixed retentionLevel,
64
53
  address initialOwner,
65
- bytes memory data
54
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
66
55
  )
67
56
  public
68
57
  virtual
69
58
  onlyInitializing()
70
59
  {
71
- initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, data);
60
+ initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, registryData);
72
61
 
73
62
  PoolStorage storage $ = _getPoolStorage();
74
- // TODO add validation
75
- $._tokenHandler = new TokenHandler(token);
76
- $._isExternallyManaged = isExternallyManaging;
77
- $._isVerifyingApplications = isVerifying;
78
- $._collateralizationLevel = collateralizationLevel;
79
- $._retentionLevel = retentionLevel;
80
- $._initialPoolFee = FeeLib.zeroFee();
81
- $._initialStakingFee = FeeLib.zeroFee();
82
- $._initialPerformanceFee = FeeLib.zeroFee();
83
- $._poolService = getInstance().getPoolService();
84
- $._bundleService = getInstance().getBundleService();
63
+ $._poolService = IPoolService(_getServiceAddress(POOL()));
64
+ $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
85
65
 
86
66
  registerInterface(type(IPoolComponent).interfaceId);
87
67
  }
88
68
 
89
- /**
90
- * @dev see {IPool.verifyApplication}.
91
- * Default implementation that only writes a {LogUnderwrittenByPool} entry.
92
- */
93
- function verifyApplication(
94
- NftId applicationNftId,
95
- bytes memory applicationData,
96
- bytes memory bundleFilter,
97
- uint256 collateralizationAmount
69
+
70
+ function stake(
71
+ NftId bundleNftId,
72
+ uint256 amount
98
73
  )
99
- external
74
+ public
75
+ virtual
100
76
  restricted()
101
- virtual override
77
+ onlyBundleOwner(bundleNftId)
102
78
  {
103
- require(
104
- policyMatchesBundle(applicationData, bundleFilter),
105
- "ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
106
- );
107
-
108
- emit LogUnderwrittenByPool(applicationNftId, collateralizationAmount, address(this));
79
+ // TODO add implementation
109
80
  }
110
81
 
111
82
 
112
- function isInterceptingBundleTransfers() external view override returns (bool) {
113
- return isNftInterceptor();
83
+ function unstake(
84
+ NftId bundleNftId,
85
+ uint256 amount
86
+ )
87
+ public
88
+ virtual
89
+ restricted()
90
+ onlyBundleOwner(bundleNftId)
91
+ {
92
+ // TODO add implementation
114
93
  }
115
94
 
116
95
 
117
- function isExternallyManaged() external view override returns (bool) {
118
- return _getPoolStorage()._isExternallyManaged;
96
+ function extend(
97
+ NftId bundleNftId,
98
+ Seconds lifetimeExtension
99
+ )
100
+ public
101
+ virtual
102
+ restricted()
103
+ onlyBundleOwner(bundleNftId)
104
+ {
105
+ // TODO add implementation
119
106
  }
120
107
 
121
108
 
122
- function getRetentionLevel() external view override returns (UFixed retentionLevel) {
123
- return _getPoolStorage()._retentionLevel;
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);
124
116
  }
125
117
 
126
118
 
127
- function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
128
- return _getPoolStorage()._collateralizationLevel;
119
+ function unlockBundle(NftId bundleNftId)
120
+ public
121
+ virtual
122
+ //restricted()
123
+ onlyBundleOwner(bundleNftId)
124
+ {
125
+ _getPoolStorage()._bundleService.unlock(bundleNftId);
129
126
  }
130
127
 
131
128
 
132
- function isVerifyingApplications() external view override returns (bool isConfirmingApplication) {
133
- return _getPoolStorage()._isVerifyingApplications;
129
+ function close(NftId bundleNftId)
130
+ public
131
+ virtual
132
+ //restricted()
133
+ onlyBundleOwner(bundleNftId)
134
+ {
135
+ _getPoolStorage()._poolService.closeBundle(bundleNftId);
134
136
  }
135
137
 
136
138
 
137
- /// @dev see {IPoolComponent.policyMatchesBundle}.
138
- /// Default implementation always returns true
139
- function policyMatchesBundle(
140
- bytes memory, // policyData
141
- bytes memory // bundleFilter
139
+ function setBundleFee(
140
+ NftId bundleNftId,
141
+ Fee memory fee
142
142
  )
143
143
  public
144
- pure
145
- virtual override
146
- returns (bool isMatching)
144
+ virtual
145
+ restricted()
146
+ onlyBundleOwner(bundleNftId)
147
147
  {
148
- return true;
148
+ _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
149
+ }
150
+
151
+
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);
149
169
  }
150
170
 
151
171
 
@@ -154,70 +174,63 @@ abstract contract Pool is
154
174
  Fee memory stakingFee,
155
175
  Fee memory performanceFee
156
176
  )
157
- external
158
- onlyOwner
177
+ public
178
+ virtual
159
179
  restricted()
160
- override
180
+ onlyOwner()
161
181
  {
162
182
  _getPoolStorage()._poolService.setFees(poolFee, stakingFee, performanceFee);
163
183
  }
164
184
 
165
- function setBundleFee(
185
+
186
+ /// @dev see {IPool.verifyApplication}
187
+ function verifyApplication(
188
+ NftId applicationNftId,
189
+ bytes memory applicationData,
166
190
  NftId bundleNftId,
167
- Fee memory fee
191
+ bytes memory bundleFilter,
192
+ uint256 collateralizationAmount
168
193
  )
169
- external
170
- override
171
- // TODO add onlyBundleOwner
194
+ public
195
+ virtual
196
+ restricted()
172
197
  {
173
- _getPoolStorage()._bundleService.setBundleFee(bundleNftId, fee);
174
- }
198
+ if(!applicationMatchesBundle(
199
+ applicationNftId,
200
+ applicationData,
201
+ bundleNftId,
202
+ bundleFilter,
203
+ collateralizationAmount)
204
+ )
205
+ {
206
+ revert ErrorPoolApplicationBundleMismatch(applicationNftId);
207
+ }
175
208
 
176
- function lockBundle(
177
- NftId bundleNftId
178
- )
179
- external
180
- override
181
- // TODO add onlyBundleOwner
182
- {
183
- _getPoolStorage()._bundleService.lockBundle(bundleNftId);
209
+ emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
184
210
  }
185
211
 
186
- function unlockBundle(
187
- NftId bundleNftId
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,
220
+ bytes memory bundleFilter,
221
+ uint256 collateralizationAmount
188
222
  )
189
- external
190
- override
191
- // TODO add onlyBundleOwner
223
+ public
224
+ view
225
+ virtual override
226
+ returns (bool isMatching)
192
227
  {
193
- _getPoolStorage()._bundleService.unlockBundle(bundleNftId);
228
+ return true;
194
229
  }
195
230
 
196
- function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
197
- InstanceReader reader = getInstance().getInstanceReader();
198
- setupInfo = reader.getPoolSetupInfo(getNftId());
199
-
200
- // fallback to initial setup info (wallet is always != address(0))
201
- if(setupInfo.wallet == address(0)) {
202
- setupInfo = _getInitialSetupInfo();
203
- }
204
- }
205
231
 
206
- function _getInitialSetupInfo() internal view returns (ISetup.PoolSetupInfo memory) {
207
- PoolStorage storage $ = _getPoolStorage();
208
- return ISetup.PoolSetupInfo(
209
- getProductNftId(),
210
- $._tokenHandler,
211
- isNftInterceptor(),
212
- $._isExternallyManaged,
213
- $._isVerifyingApplications,
214
- $._collateralizationLevel,
215
- $._retentionLevel,
216
- $._initialPoolFee,
217
- $._initialStakingFee,
218
- $._initialPerformanceFee,
219
- getWallet()
220
- );
232
+ function getPoolInfo() external view returns (IComponents.PoolInfo memory poolInfo) {
233
+ poolInfo = abi.decode(getComponentInfo().data, (IComponents.PoolInfo));
221
234
  }
222
235
 
223
236
  // Internals
@@ -225,14 +238,14 @@ abstract contract Pool is
225
238
  function _createBundle(
226
239
  address bundleOwner,
227
240
  Fee memory fee,
228
- uint256 amount,
229
- uint256 lifetime,
241
+ Amount amount,
242
+ Seconds lifetime,
230
243
  bytes memory filter
231
244
  )
232
245
  internal
233
246
  returns(NftId bundleNftId)
234
247
  {
235
- bundleNftId = _getPoolStorage()._bundleService.createBundle(
248
+ bundleNftId = _getPoolStorage()._poolService.createBundle(
236
249
  bundleOwner,
237
250
  fee,
238
251
  amount,
@@ -242,10 +255,45 @@ abstract contract Pool is
242
255
  // TODO add logging
243
256
  }
244
257
 
258
+ // TODO remove function once this is no longer used to produce contract locations on the fly ...
245
259
  function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
246
260
  return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
247
261
  }
248
262
 
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)
270
+ {
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
+ )));
294
+ }
295
+
296
+
249
297
  function _getPoolStorage() private pure returns (PoolStorage storage $) {
250
298
  assembly {
251
299
  $.slot := POOL_STORAGE_LOCATION_V1