@etherisc/gif-next 0.0.2-a6ce659-551 → 0.0.2-a6ea1b1-244

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 (432) hide show
  1. package/README.md +13 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +10 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -228
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +134 -16
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +112 -88
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +77 -103
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +6 -6
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -0
  81. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +43 -96
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1521 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +455 -55
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +128 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +224 -0
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -200
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +189 -0
  102. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -301
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +289 -36
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +68 -36
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  114. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  116. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  118. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  120. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  125. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
  126. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  127. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
  129. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  131. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  133. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  135. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  136. package/artifacts/contracts/product/Product.sol/Product.json +32 -153
  137. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  138. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  139. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  141. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  142. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  143. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  144. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  145. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  146. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  147. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  148. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  149. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  150. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  151. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
  152. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  154. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  156. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +6 -6
  158. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  159. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  160. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +24 -16
  162. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  164. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -86
  167. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
  169. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
  175. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  183. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  184. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  185. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  186. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
  187. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  188. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +4 -54
  189. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  190. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  191. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  196. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  198. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  199. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  200. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  201. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  202. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  203. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  204. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  205. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  206. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
  207. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  208. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  209. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +6 -6
  211. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  213. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  215. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  216. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  217. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  219. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +139 -134
  221. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  222. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  223. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  224. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  225. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  227. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  228. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  229. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  231. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  233. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  235. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  236. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  237. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  239. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  240. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  241. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  243. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  245. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  247. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  249. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  251. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  253. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  255. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  257. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  259. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  261. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  263. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  265. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  267. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  269. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  271. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  273. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  274. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  275. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  276. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  277. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  278. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  279. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  280. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  281. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  282. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  283. package/contracts/authorization/Authorization.sol +218 -0
  284. package/contracts/authorization/IAccess.sol +48 -0
  285. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  286. package/contracts/authorization/IAuthorization.sol +54 -0
  287. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  288. package/contracts/{registry → authorization}/IServiceAuthorization.sol +5 -5
  289. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  290. package/contracts/{registry → authorization}/ServiceAuthorization.sol +17 -17
  291. package/contracts/distribution/BasicDistribution.sol +138 -0
  292. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  293. package/contracts/distribution/Distribution.sol +144 -110
  294. package/contracts/distribution/DistributionService.sol +71 -31
  295. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  296. package/contracts/distribution/IDistributionComponent.sol +25 -39
  297. package/contracts/distribution/IDistributionService.sol +17 -1
  298. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  299. package/contracts/instance/IInstance.sol +8 -9
  300. package/contracts/instance/IInstanceService.sol +13 -18
  301. package/contracts/instance/Instance.sol +61 -70
  302. package/contracts/instance/InstanceAdmin.sol +202 -267
  303. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  304. package/contracts/instance/InstanceReader.sol +22 -9
  305. package/contracts/instance/InstanceService.sol +74 -70
  306. package/contracts/instance/InstanceServiceManager.sol +2 -6
  307. package/contracts/instance/InstanceStore.sol +7 -2
  308. package/contracts/instance/base/ObjectLifecycle.sol +49 -42
  309. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  310. package/contracts/instance/module/IBundle.sol +1 -1
  311. package/contracts/instance/module/IComponents.sol +0 -2
  312. package/contracts/instance/module/IDistribution.sol +0 -1
  313. package/contracts/oracle/BasicOracle.sol +48 -0
  314. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  315. package/contracts/oracle/IOracle.sol +16 -0
  316. package/contracts/oracle/IOracleComponent.sol +2 -1
  317. package/contracts/oracle/Oracle.sol +72 -51
  318. package/contracts/oracle/OracleServiceManager.sol +2 -5
  319. package/contracts/pool/BasicPool.sol +166 -0
  320. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  321. package/contracts/pool/BundleService.sol +171 -29
  322. package/contracts/pool/BundleServiceManager.sol +2 -5
  323. package/contracts/pool/IBundleService.sol +30 -3
  324. package/contracts/pool/IPoolComponent.sol +6 -60
  325. package/contracts/pool/IPoolService.sol +12 -4
  326. package/contracts/pool/Pool.sol +166 -134
  327. package/contracts/pool/PoolService.sol +142 -32
  328. package/contracts/pool/PoolServiceManager.sol +2 -5
  329. package/contracts/product/ApplicationService.sol +12 -36
  330. package/contracts/product/ApplicationServiceManager.sol +2 -2
  331. package/contracts/product/BasicProduct.sol +82 -0
  332. package/contracts/product/BasicProductAuthorization.sol +43 -0
  333. package/contracts/product/ClaimService.sol +7 -32
  334. package/contracts/product/ClaimServiceManager.sol +2 -2
  335. package/contracts/product/IProductComponent.sol +7 -9
  336. package/contracts/product/PolicyService.sol +1 -0
  337. package/contracts/product/PolicyServiceManager.sol +2 -5
  338. package/contracts/product/PricingServiceManager.sol +2 -5
  339. package/contracts/product/Product.sol +103 -88
  340. package/contracts/product/ProductService.sol +7 -32
  341. package/contracts/product/ProductServiceManager.sol +2 -5
  342. package/contracts/registry/IRegistry.sol +26 -16
  343. package/contracts/registry/IRegistryService.sol +6 -6
  344. package/contracts/registry/Registry.sol +81 -87
  345. package/contracts/registry/RegistryAdmin.sol +118 -86
  346. package/contracts/registry/RegistryService.sol +4 -18
  347. package/contracts/registry/RegistryServiceManager.sol +2 -2
  348. package/contracts/registry/ReleaseLifecycle.sol +8 -9
  349. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +97 -135
  350. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  351. package/contracts/registry/TokenRegistry.sol +2 -2
  352. package/contracts/shared/Component.sol +13 -14
  353. package/contracts/shared/ComponentService.sol +101 -70
  354. package/contracts/shared/ComponentServiceManager.sol +2 -2
  355. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  356. package/contracts/shared/IComponentService.sol +15 -9
  357. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  358. package/contracts/shared/IService.sol +1 -1
  359. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  360. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  361. package/contracts/shared/KeyValueStore.sol +1 -1
  362. package/contracts/shared/Lifecycle.sol +15 -5
  363. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  364. package/contracts/shared/NftOwnable.sol +2 -2
  365. package/contracts/shared/PolicyHolder.sol +2 -5
  366. package/contracts/shared/Service.sol +3 -4
  367. package/contracts/staking/IStaking.sol +1 -2
  368. package/contracts/staking/IStakingService.sol +12 -5
  369. package/contracts/staking/Staking.sol +20 -17
  370. package/contracts/staking/StakingLifecycle.sol +5 -6
  371. package/contracts/staking/StakingManager.sol +2 -6
  372. package/contracts/staking/StakingReader.sol +12 -16
  373. package/contracts/staking/StakingServiceManager.sol +2 -2
  374. package/contracts/staking/StakingStore.sol +12 -22
  375. package/contracts/type/Amount.sol +12 -5
  376. package/contracts/type/ObjectType.sol +37 -7
  377. package/contracts/type/Referral.sol +1 -0
  378. package/contracts/type/RoleId.sol +55 -82
  379. package/contracts/type/Seconds.sol +13 -1
  380. package/contracts/type/UFixed.sol +34 -9
  381. package/contracts/type/Version.sol +3 -1
  382. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  383. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  384. package/package.json +3 -3
  385. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  386. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  387. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  388. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  389. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  390. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  391. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  392. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  393. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1211
  394. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  395. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
  396. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  397. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  398. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  399. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  400. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  401. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  402. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  403. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  404. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  405. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  406. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  407. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  408. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  409. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  410. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  411. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  412. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  413. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  414. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  415. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  416. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  417. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  418. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  419. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  420. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  421. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  422. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  423. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  424. package/contracts/shared/AccessManagerCustom.sol +0 -741
  425. package/contracts/shared/AccessManagerExtended.sol +0 -481
  426. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  427. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  428. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  429. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  430. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  431. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  432. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -23,8 +23,15 @@ interface IPoolService is IService {
23
23
  event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
24
24
  event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
25
25
 
26
+ event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
27
+ event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
28
+
26
29
  error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
27
30
  error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
31
+ error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
32
+ error ErrorPoolServiceMaxCapitalAmountExceeded(NftId poolNftId, Amount maxCapitalAmount, Amount capitalAmount, Amount amountToBeAdded);
33
+ error ErrorPoolServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
34
+ error ErrorPoolServiceAmountIsZero();
28
35
 
29
36
  /// @dev defines the required role for bundle owners for the calling pool
30
37
  /// default implementation returns PUBLIC ROLE
@@ -85,7 +92,8 @@ interface IPoolService is IService {
85
92
 
86
93
  /// @dev create a new bundle for the provided parameters
87
94
  /// staking fees will be deducted by the pool service from the staking amount
88
- /// may only be called by registered and unlocked pool components
95
+ /// may only be called by registered and unlocked pool components.
96
+ /// The pool balance is equal to the pool fees plus the capital of all bundles.
89
97
  function createBundle(
90
98
  address owner, // initial bundle owner
91
99
  Fee memory fee, // fees deducted from premium that go to bundle owner
@@ -95,6 +103,7 @@ interface IPoolService is IService {
95
103
  )
96
104
  external
97
105
  returns(NftId bundleNftId); // the nft id of the newly created bundle
106
+ // TODO: return netAmount
98
107
 
99
108
 
100
109
  /// @dev closes the specified bundle
@@ -111,13 +120,12 @@ interface IPoolService is IService {
111
120
  /// @dev increase stakes for bundle
112
121
  /// staking fees will be deducted by the pool service from the staking amount
113
122
  /// may only be called by registered and unlocked pool components
114
- // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
115
-
123
+ function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
116
124
 
117
125
  /// @dev decrease stakes for bundle
118
126
  /// performance fees will be deducted by the pool service from the staking amount
119
127
  /// may only be called by registered and unlocked pool components
120
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
128
+ function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
121
129
 
122
130
 
123
131
  /// @dev calulate required collateral for the provided parameters
@@ -2,17 +2,19 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
6
- import {Fee, FeeLib} from "../type/Fee.sol";
5
+ import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
7
6
  import {IBundleService} from "./IBundleService.sol";
7
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
8
  import {IPoolComponent} from "./IPoolComponent.sol";
9
9
  import {IPoolService} from "./IPoolService.sol";
10
10
  import {IComponents} from "../instance/module/IComponents.sol";
11
11
  import {IComponentService} from "../shared/IComponentService.sol";
12
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
+ import {Fee, FeeLib} from "../type/Fee.sol";
12
14
  import {NftId, NftIdLib} from "../type/NftId.sol";
13
- import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
14
15
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
15
16
  import {Seconds} from "../type/Seconds.sol";
17
+ import {Timestamp} from "../type/Timestamp.sol";
16
18
  import {TokenHandler} from "../shared/TokenHandler.sol";
17
19
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
18
20
 
@@ -38,29 +40,121 @@ abstract contract Pool is
38
40
  }
39
41
 
40
42
 
41
- modifier onlyPoolService() {
42
- if(msg.sender != address(_getPoolStorage()._poolService)) {
43
- revert ErrorPoolNotPoolService(msg.sender);
43
+ /// @dev see {IPoolComponent.verifyApplication}
44
+ function verifyApplication(
45
+ NftId applicationNftId,
46
+ bytes memory applicationData,
47
+ NftId bundleNftId,
48
+ bytes memory bundleFilter,
49
+ Amount collateralizationAmount
50
+ )
51
+ public
52
+ virtual
53
+ restricted()
54
+ {
55
+ if(!applicationMatchesBundle(
56
+ applicationNftId,
57
+ applicationData,
58
+ bundleNftId,
59
+ bundleFilter,
60
+ collateralizationAmount)
61
+ )
62
+ {
63
+ revert ErrorPoolApplicationBundleMismatch(applicationNftId);
44
64
  }
45
- _;
65
+
66
+ emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
67
+ }
68
+
69
+
70
+ /// @dev see {IPoolComponent.applicationMatchesBundle}
71
+ /// Override this function to implement any custom application verification
72
+ /// Default implementation always returns true
73
+ function applicationMatchesBundle(
74
+ NftId applicationNftId,
75
+ bytes memory applicationData,
76
+ NftId bundleNftId,
77
+ bytes memory bundleFilter,
78
+ Amount collateralizationAmount
79
+ )
80
+ public
81
+ virtual
82
+ view
83
+ returns (bool isMatching)
84
+ {
85
+ return true;
86
+ }
87
+
88
+
89
+ function register()
90
+ external
91
+ virtual
92
+ onlyOwner()
93
+ {
94
+ _getPoolStorage()._componentService.registerPool();
95
+ _approveTokenHandler(type(uint256).max);
96
+ }
97
+
98
+ /// @inheritdoc IPoolComponent
99
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
100
+ external
101
+ virtual
102
+ restricted()
103
+ onlyBundleOwner(bundleNftId)
104
+ returns (Amount withdrawnAmount)
105
+ {
106
+ return _withdrawBundleFees(bundleNftId, amount);
46
107
  }
47
108
 
48
109
 
49
- function initializePool(
110
+ function getInitialPoolInfo()
111
+ public
112
+ virtual
113
+ view
114
+ returns (IComponents.PoolInfo memory poolInfo)
115
+ {
116
+ return IComponents.PoolInfo(
117
+ PUBLIC_ROLE(), // bundleOwnerRole
118
+ AmountLib.max(), // maxCapitalAmount,
119
+ isNftInterceptor(), // isInterceptingBundleTransfers
120
+ false, // isExternallyManaged,
121
+ false, // isVerifyingApplications,
122
+ UFixedLib.toUFixed(1), // collateralizationLevel,
123
+ UFixedLib.toUFixed(1), // retentionLevel,
124
+ FeeLib.zero(), // initialPoolFee,
125
+ FeeLib.zero(), // initialStakingFee,
126
+ FeeLib.zero() // initialPerformanceFee,
127
+ );
128
+ }
129
+
130
+ // Internals
131
+
132
+ function _initializePool(
50
133
  address registry,
51
134
  NftId instanceNftId,
52
135
  string memory name,
53
136
  address token,
137
+ IAuthorization authorization,
54
138
  bool isInterceptingNftTransfers,
55
139
  address initialOwner,
56
140
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
57
141
  bytes memory componentData // component specifidc data
58
142
  )
59
- public
143
+ internal
60
144
  virtual
61
145
  onlyInitializing()
62
146
  {
63
- initializeInstanceLinkedComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, registryData, componentData);
147
+ _initializeInstanceLinkedComponent(
148
+ registry,
149
+ instanceNftId,
150
+ name,
151
+ token,
152
+ POOL(),
153
+ authorization,
154
+ isInterceptingNftTransfers,
155
+ initialOwner,
156
+ registryData,
157
+ componentData);
64
158
 
65
159
  PoolStorage storage $ = _getPoolStorage();
66
160
  $._poolService = IPoolService(_getServiceAddress(POOL()));
@@ -70,201 +164,133 @@ abstract contract Pool is
70
164
  registerInterface(type(IPoolComponent).interfaceId);
71
165
  }
72
166
 
73
-
74
- function register()
75
- external
76
- virtual
77
- onlyOwner()
78
- {
79
- _getPoolStorage()._componentService.registerPool();
80
- }
81
-
82
-
83
- function stake(
167
+ /// @dev increases the staked tokens by the specified amount
168
+ /// bundle MUST be in active or locked state
169
+ function _stake(
84
170
  NftId bundleNftId,
85
171
  Amount amount
86
172
  )
87
- public
173
+ internal
88
174
  virtual
89
- restricted()
90
- onlyBundleOwner(bundleNftId)
175
+ returns(Amount netAmount)
91
176
  {
92
- // TODO add implementation
177
+ _getPoolStorage()._poolService.stake(bundleNftId, amount);
93
178
  }
94
179
 
95
180
 
96
- function unstake(
181
+ /// @dev decreases the staked tokens by the specified amount
182
+ /// bundle MUST be in active, locked or closed state
183
+ function _unstake(
97
184
  NftId bundleNftId,
98
185
  Amount amount
99
186
  )
100
- public
187
+ internal
101
188
  virtual
102
- restricted()
103
- onlyBundleOwner(bundleNftId)
189
+ returns(Amount netAmount)
104
190
  {
105
- // TODO add implementation
191
+ return _getPoolStorage()._poolService.unstake(bundleNftId, amount);
106
192
  }
107
193
 
108
194
 
109
- function extend(
195
+ /// @dev extends the bundle lifetime of the bundle by the specified time
196
+ /// bundle MUST be in active or locked state
197
+ function _extend(
110
198
  NftId bundleNftId,
111
199
  Seconds lifetimeExtension
112
200
  )
113
- public
201
+ internal
114
202
  virtual
115
- restricted()
116
- onlyBundleOwner(bundleNftId)
203
+ returns (Timestamp extendedExpiredAt)
117
204
  {
118
- // TODO add implementation
205
+ return _getPoolStorage()._bundleService.extend(bundleNftId, lifetimeExtension);
119
206
  }
120
207
 
121
208
 
122
- function lockBundle(NftId bundleNftId)
123
- public
209
+ /// @dev Locks the specified bundle.
210
+ /// A bundle to be locked MUST be in active state.
211
+ /// Locked bundles may not be used to collateralize any new policy.
212
+ function _lockBundle(NftId bundleNftId)
213
+ internal
124
214
  virtual
125
- //restricted() // TODO consider adding this back
126
- onlyBundleOwner(bundleNftId)
127
215
  {
128
216
  _getPoolStorage()._bundleService.lock(bundleNftId);
129
217
  }
130
218
 
131
219
 
132
- function unlockBundle(NftId bundleNftId)
133
- public
220
+ /// @dev Unlocks the specified bundle.
221
+ /// A bundle to be unlocked MUST be in locked state.
222
+ function _unlockBundle(NftId bundleNftId)
223
+ internal
134
224
  virtual
135
- //restricted()
136
- onlyBundleOwner(bundleNftId)
137
225
  {
138
226
  _getPoolStorage()._bundleService.unlock(bundleNftId);
139
227
  }
140
228
 
141
229
 
142
- function close(NftId bundleNftId)
143
- public
230
+ /// @dev Close the specified bundle.
231
+ /// A bundle to be closed MUST be in active or locked state.
232
+ /// To close a bundle all all linked policies MUST be in closed state as well.
233
+ /// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
234
+ /// Once a bundle is closed this action cannot be reversed.
235
+ function _close(NftId bundleNftId)
236
+ internal
144
237
  virtual
145
- //restricted()
146
- onlyBundleOwner(bundleNftId)
147
238
  {
148
239
  _getPoolStorage()._poolService.closeBundle(bundleNftId);
149
240
  }
150
241
 
151
242
 
152
- function setBundleFee(
243
+ /// @dev Sets the fee for the specified bundle.
244
+ /// The fee is added on top of the poolFee and deducted from the premium amounts
245
+ /// Via these fees individual bundler owner may earn income per policy in the context of peer to peer pools.
246
+ function _setBundleFee(
153
247
  NftId bundleNftId,
154
248
  Fee memory fee
155
249
  )
156
- public
250
+ internal
157
251
  virtual
158
- //restricted()
159
- onlyBundleOwner(bundleNftId)
160
252
  {
161
253
  _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
162
254
  }
163
255
 
164
256
 
165
- function setMaxCapitalAmount(Amount maxCapitalAmount)
166
- public
257
+ /// @dev Sets the maximum overall capital amound held by this pool.
258
+ /// Function may only be called by pool owner.
259
+ function _setMaxCapitalAmount(Amount maxCapitalAmount)
260
+ internal
167
261
  virtual
168
- restricted()
169
- onlyOwner()
170
262
  {
171
263
  _getPoolStorage()._poolService.setMaxCapitalAmount(maxCapitalAmount);
172
264
  }
173
265
 
174
-
175
- function setBundleOwnerRole(RoleId bundleOwnerRole)
176
- public
266
+ /// @dev Sets the required role to create/own bundles.
267
+ /// May only be called once after setting up a pool.
268
+ /// May only be called by pool owner.
269
+ function _setBundleOwnerRole(RoleId bundleOwnerRole)
270
+ internal
177
271
  virtual
178
- restricted()
179
- onlyOwner()
180
272
  {
181
273
  _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
182
274
  }
183
275
 
184
276
 
185
- function setFees(
277
+ /// @dev Update pool fees to the specified values.
278
+ /// Pool fee: are deducted from the premium amount and goes to the pool owner.
279
+ /// Staking fee: are deducted from the staked tokens by a bundle owner and goes to the pool owner.
280
+ /// Performance fee: when a bundle is closed a bundle specific profit is calculated.
281
+ /// The performance fee is deducted from this profit and goes to the pool owner.
282
+ function _setPoolFees(
186
283
  Fee memory poolFee,
187
284
  Fee memory stakingFee,
188
285
  Fee memory performanceFee
189
286
  )
190
- public
287
+ internal
191
288
  virtual
192
- restricted()
193
- onlyOwner()
194
289
  {
195
290
  _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
196
291
  }
197
292
 
198
-
199
- /// @dev see {IPool.verifyApplication}
200
- function verifyApplication(
201
- NftId applicationNftId,
202
- bytes memory applicationData,
203
- NftId bundleNftId,
204
- bytes memory bundleFilter,
205
- Amount collateralizationAmount
206
- )
207
- public
208
- virtual
209
- restricted()
210
- {
211
- if(!applicationMatchesBundle(
212
- applicationNftId,
213
- applicationData,
214
- bundleNftId,
215
- bundleFilter,
216
- collateralizationAmount)
217
- )
218
- {
219
- revert ErrorPoolApplicationBundleMismatch(applicationNftId);
220
- }
221
-
222
- emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
223
- }
224
-
225
-
226
- /// @dev see {IPoolComponent.applicationMatchesBundle}
227
- /// Override this function to implement any custom application verification
228
- /// Default implementation always returns true
229
- function applicationMatchesBundle(
230
- NftId applicationNftId,
231
- bytes memory applicationData,
232
- NftId bundleNftId,
233
- bytes memory bundleFilter,
234
- Amount collateralizationAmount
235
- )
236
- public
237
- view
238
- virtual override
239
- returns (bool isMatching)
240
- {
241
- return true;
242
- }
243
-
244
-
245
- function getInitialPoolInfo()
246
- public
247
- virtual
248
- view
249
- returns (IComponents.PoolInfo memory poolInfo)
250
- {
251
- return IComponents.PoolInfo(
252
- NftIdLib.zero(), // will be set when GIF registers the related product
253
- PUBLIC_ROLE(), // bundleOwnerRole
254
- AmountLib.max(), // maxCapitalAmount,
255
- isNftInterceptor(), // isInterceptingBundleTransfers
256
- false, // isExternallyManaged,
257
- false, // isVerifyingApplications,
258
- UFixedLib.toUFixed(1), // collateralizationLevel,
259
- UFixedLib.toUFixed(1), // retentionLevel,
260
- FeeLib.zero(), // initialPoolFee,
261
- FeeLib.zero(), // initialStakingFee,
262
- FeeLib.zero() // initialPerformanceFee,
263
- );
264
- }
265
-
266
- // Internals
267
-
293
+ /// @dev Creates a new bundle using the provided parameter values.
268
294
  function _createBundle(
269
295
  address bundleOwner,
270
296
  Fee memory fee,
@@ -290,6 +316,12 @@ abstract contract Pool is
290
316
  return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
291
317
  }
292
318
 
319
+ function _withdrawBundleFees(NftId bundleNftId, Amount amount)
320
+ internal
321
+ returns (Amount withdrawnAmount)
322
+ {
323
+ return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
324
+ }
293
325
 
294
326
  function _getPoolStorage() private pure returns (PoolStorage storage $) {
295
327
  assembly {