@etherisc/gif-next 0.0.2-fd2113c-488 → 0.0.2-fd2ea71-734

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