@etherisc/gif-next 0.0.2-9306579-093 → 0.0.2-9356555-232

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 (490) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +211 -66
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +142 -25
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +113 -130
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +334 -159
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +115 -65
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +205 -66
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +158 -195
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +351 -318
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +259 -168
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -153
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +714 -283
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +434 -128
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +627 -207
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +469 -338
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -173
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +94 -106
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +108 -125
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +156 -326
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +330 -368
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +190 -48
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +80 -38
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +131 -9
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +117 -43
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +86 -6
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +200 -106
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +93 -51
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +224 -182
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +167 -67
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +92 -38
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -17
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  189. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/Registry.sol/Registry.json +142 -53
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +331 -261
  193. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
  195. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
  197. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  199. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  201. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +414 -250
  203. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  205. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  207. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  208. package/artifacts/contracts/shared/Component.sol/Component.json +105 -104
  209. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
  211. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
  213. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
  215. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  217. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  223. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -86
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +94 -106
  229. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  231. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  232. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  235. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  238. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
  244. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  245. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  246. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  247. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  248. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  249. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  250. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  252. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  253. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  254. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
  256. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  257. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  258. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  259. package/artifacts/contracts/shared/Service.sol/Service.json +55 -2
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  264. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  265. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  266. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +110 -122
  268. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  269. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
  270. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  271. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
  272. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  273. package/artifacts/contracts/staking/Staking.sol/Staking.json +192 -192
  274. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  276. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +89 -51
  278. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  280. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +120 -55
  282. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +73 -39
  284. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +171 -130
  286. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  287. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  288. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  289. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  291. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  294. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  296. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  298. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  300. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  302. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  304. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  306. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  308. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  310. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  312. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  314. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  316. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  318. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  323. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  325. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  328. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  330. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  332. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  334. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  336. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  337. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  338. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  339. package/contracts/accounting/AccountingService.sol +262 -0
  340. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  341. package/contracts/accounting/IAccountingService.sol +45 -0
  342. package/contracts/authorization/AccessAdmin.sol +237 -140
  343. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  344. package/contracts/authorization/Authorization.sol +321 -205
  345. package/contracts/authorization/IAccess.sol +1 -0
  346. package/contracts/authorization/IAccessAdmin.sol +17 -9
  347. package/contracts/authorization/IAuthorization.sol +27 -7
  348. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  349. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  350. package/contracts/distribution/BasicDistribution.sol +15 -12
  351. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  352. package/contracts/distribution/Distribution.sol +41 -47
  353. package/contracts/distribution/DistributionService.sol +127 -78
  354. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  355. package/contracts/distribution/IDistributionComponent.sol +1 -1
  356. package/contracts/distribution/IDistributionService.sol +22 -20
  357. package/contracts/examples/fire/FirePool.sol +25 -10
  358. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  359. package/contracts/examples/fire/FireProduct.sol +66 -41
  360. package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
  361. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -4
  362. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  363. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  364. package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
  365. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  366. package/contracts/examples/unpermissioned/SimpleProduct.sol +53 -27
  367. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  368. package/contracts/instance/BundleSet.sol +42 -38
  369. package/contracts/instance/IInstance.sol +17 -10
  370. package/contracts/instance/IInstanceService.sol +9 -29
  371. package/contracts/instance/Instance.sol +52 -34
  372. package/contracts/instance/InstanceAdmin.sol +249 -100
  373. package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
  374. package/contracts/instance/InstanceReader.sol +187 -32
  375. package/contracts/instance/InstanceService.sol +85 -146
  376. package/contracts/instance/InstanceServiceManager.sol +1 -1
  377. package/contracts/instance/InstanceStore.sol +13 -2
  378. package/contracts/instance/RiskSet.sol +118 -0
  379. package/contracts/instance/base/ObjectCounter.sol +1 -2
  380. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  381. package/contracts/instance/base/ObjectSet.sol +31 -33
  382. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  383. package/contracts/instance/module/IComponents.sol +10 -7
  384. package/contracts/instance/module/IDistribution.sol +5 -2
  385. package/contracts/instance/module/IPolicy.sol +2 -1
  386. package/contracts/instance/module/IRisk.sol +3 -0
  387. package/contracts/oracle/BasicOracle.sol +0 -1
  388. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  389. package/contracts/oracle/IOracleService.sol +2 -1
  390. package/contracts/oracle/Oracle.sol +5 -16
  391. package/contracts/oracle/OracleService.sol +107 -78
  392. package/contracts/oracle/OracleServiceManager.sol +1 -1
  393. package/contracts/pool/BasicPool.sol +33 -24
  394. package/contracts/pool/BasicPoolAuthorization.sol +27 -9
  395. package/contracts/pool/BundleService.sol +88 -154
  396. package/contracts/pool/BundleServiceManager.sol +1 -1
  397. package/contracts/pool/IBundleService.sol +15 -43
  398. package/contracts/pool/IPoolComponent.sol +1 -7
  399. package/contracts/pool/IPoolService.sol +58 -64
  400. package/contracts/pool/Pool.sol +112 -120
  401. package/contracts/pool/PoolLib.sol +216 -0
  402. package/contracts/pool/PoolService.sol +436 -242
  403. package/contracts/pool/PoolServiceManager.sol +1 -1
  404. package/contracts/product/ApplicationService.sol +39 -16
  405. package/contracts/product/ApplicationServiceManager.sol +1 -1
  406. package/contracts/product/BasicProduct.sol +10 -12
  407. package/contracts/product/BasicProductAuthorization.sol +24 -11
  408. package/contracts/product/ClaimService.sol +202 -151
  409. package/contracts/product/ClaimServiceManager.sol +1 -1
  410. package/contracts/product/IApplicationService.sol +8 -2
  411. package/contracts/product/IClaimService.sol +14 -2
  412. package/contracts/product/IPolicyService.sol +26 -11
  413. package/contracts/product/IPricingService.sol +10 -9
  414. package/contracts/product/IProductComponent.sol +10 -1
  415. package/contracts/product/IRiskService.sol +7 -7
  416. package/contracts/product/PolicyService.sol +248 -252
  417. package/contracts/product/PolicyServiceLib.sol +65 -0
  418. package/contracts/product/PolicyServiceManager.sol +1 -1
  419. package/contracts/product/PricingService.sol +35 -26
  420. package/contracts/product/PricingServiceManager.sol +3 -3
  421. package/contracts/product/Product.sol +100 -63
  422. package/contracts/product/RiskService.sol +89 -31
  423. package/contracts/product/RiskServiceManager.sol +1 -1
  424. package/contracts/registry/ChainNft.sol +10 -11
  425. package/contracts/registry/IRegistry.sol +14 -18
  426. package/contracts/registry/IRegistryService.sol +6 -4
  427. package/contracts/registry/IRelease.sol +26 -0
  428. package/contracts/registry/ITransferInterceptor.sol +1 -2
  429. package/contracts/registry/Registry.sol +29 -6
  430. package/contracts/registry/RegistryAdmin.sol +132 -242
  431. package/contracts/registry/RegistryService.sol +40 -58
  432. package/contracts/registry/RegistryServiceManager.sol +1 -1
  433. package/contracts/registry/ReleaseAdmin.sol +245 -0
  434. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  435. package/contracts/registry/ReleaseRegistry.sol +257 -237
  436. package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
  437. package/contracts/registry/TokenRegistry.sol +6 -8
  438. package/contracts/shared/Component.sol +69 -118
  439. package/contracts/shared/ComponentService.sol +422 -371
  440. package/contracts/shared/ComponentServiceManager.sol +1 -1
  441. package/contracts/shared/ComponentVerifyingService.sol +27 -15
  442. package/contracts/shared/ContractLib.sol +224 -9
  443. package/contracts/shared/IComponent.sol +8 -20
  444. package/contracts/shared/IComponentService.sol +41 -37
  445. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  446. package/contracts/shared/ILifecycle.sol +3 -1
  447. package/contracts/shared/INftOwnable.sol +2 -0
  448. package/contracts/shared/IRegisterable.sol +23 -1
  449. package/contracts/shared/IService.sol +3 -5
  450. package/contracts/shared/InstanceLinkedComponent.sol +68 -42
  451. package/contracts/shared/KeyValueStore.sol +1 -1
  452. package/contracts/shared/Lifecycle.sol +15 -4
  453. package/contracts/shared/NftOwnable.sol +26 -6
  454. package/contracts/shared/PolicyHolder.sol +1 -1
  455. package/contracts/shared/Registerable.sol +53 -19
  456. package/contracts/shared/RegistryLinked.sol +7 -13
  457. package/contracts/shared/Service.sol +9 -31
  458. package/contracts/shared/TokenHandler.sol +274 -72
  459. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  460. package/contracts/staking/IStaking.sol +5 -8
  461. package/contracts/staking/IStakingService.sol +8 -3
  462. package/contracts/staking/StakeManagerLib.sol +1 -1
  463. package/contracts/staking/Staking.sol +63 -35
  464. package/contracts/staking/StakingReader.sol +1 -1
  465. package/contracts/staking/StakingService.sol +45 -22
  466. package/contracts/staking/StakingServiceManager.sol +5 -4
  467. package/contracts/type/Key32.sol +2 -2
  468. package/contracts/type/Key32Set.sol +62 -0
  469. package/contracts/type/NftId.sol +6 -0
  470. package/contracts/type/ObjectType.sol +48 -21
  471. package/contracts/type/RiskId.sol +26 -8
  472. package/contracts/type/RoleId.sol +23 -15
  473. package/contracts/type/Selector.sol +5 -0
  474. package/contracts/type/StateId.sol +14 -1
  475. package/contracts/type/Timestamp.sol +0 -5
  476. package/contracts/type/UFixed.sol +9 -119
  477. package/contracts/type/Version.sol +15 -5
  478. package/contracts/upgradeability/ProxyManager.sol +2 -1
  479. package/package.json +5 -4
  480. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  481. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  482. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  483. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  484. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  485. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  486. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  487. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  488. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  489. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  490. package/contracts/instance/module/IAccess.sol +0 -46
@@ -1,43 +1,41 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount} from "../type/Amount.sol";
5
- import {ClaimId} from "../type/ClaimId.sol";
6
- import {Fee} from "../type/Fee.sol";
7
- import {IBundle} from "../instance/module/IBundle.sol";
8
4
  import {IInstance} from "../instance/IInstance.sol";
9
- import {InstanceReader} from "../instance/InstanceReader.sol";
10
5
  import {IPolicy} from "../instance/module/IPolicy.sol";
11
6
  import {IService} from "../shared/IService.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
12
12
  import {NftId} from "../type/NftId.sol";
13
13
  import {PayoutId} from "../type/PayoutId.sol";
14
- import {RoleId} from "../type/RoleId.sol";
15
- import {Seconds} from "../type/Seconds.sol";
16
- import {StateId} from "../type/StateId.sol";
17
14
  import {UFixed} from "../type/UFixed.sol";
18
15
 
19
16
  interface IPoolService is IService {
20
17
 
21
18
  event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
22
- event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
19
+ event LogPoolServiceWalletFunded(NftId poolNftId, address poolOwner, Amount amount);
20
+ event LogPoolServiceWalletDefunded(NftId poolNftId, address poolOwner, Amount amount);
23
21
 
24
22
  event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
25
23
  event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
26
24
 
27
25
  event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
28
- event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
26
+ event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
27
+
28
+ event LogPoolServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
29
29
 
30
30
  event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
31
31
 
32
+ error ErrorPoolServicePoolNotExternallyManaged(NftId poolNftId);
32
33
  error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
33
34
  error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
34
35
  error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
35
36
  error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
36
37
  error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
37
-
38
- /// @dev defines the required role for bundle owners for the calling pool
39
- /// default implementation returns PUBLIC ROLE
40
- function setBundleOwnerRole(RoleId bundleOwnerRole) external;
38
+ error ErrorPoolServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
41
39
 
42
40
  /// @dev sets the max balance amount for the calling pool
43
41
  function setMaxBalanceAmount(Amount maxBalanceAmount) external;
@@ -66,7 +64,6 @@ interface IPoolService is IService {
66
64
  /// may only be called by the policy service for unlocked pool components
67
65
  function releaseCollateral(
68
66
  IInstance instance,
69
- address token,
70
67
  NftId policyNftId,
71
68
  IPolicy.PolicyInfo memory policyInfo
72
69
  ) external;
@@ -76,26 +73,17 @@ interface IPoolService is IService {
76
73
  /// every payout of a policy reduces the collateral by the payout amount
77
74
  /// may only be called by the claim service for unlocked pool components
78
75
  function processPayout(
79
- IInstance instance,
80
- address token,
76
+ InstanceReader instanceReader,
77
+ InstanceStore instanceStore,
78
+ NftId productNftId,
81
79
  NftId policyNftId,
82
- IPolicy.PolicyInfo memory policyInfo,
83
- Amount payoutAmount
80
+ NftId bundleNftId,
81
+ PayoutId payoutId,
82
+ Amount payoutAmount,
83
+ address payoutBeneficiary
84
84
  ) external;
85
85
 
86
86
 
87
- /// @dev create a new empty bundle with the provided parameters
88
- /// may only be called by registered and unlocked pool components.
89
- function createBundle(
90
- address owner, // initial bundle owner
91
- Fee memory fee, // fees deducted from premium that go to bundle owner
92
- Seconds lifetime, // initial duration for which new policies are covered
93
- bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
94
- )
95
- external
96
- returns(NftId bundleNftId); // the nft id of the newly created bundle
97
-
98
-
99
87
  /// @dev increase stakes for bundle
100
88
  /// staking fees will be deducted by the pool service from the staking amount
101
89
  /// may only be called by registered and unlocked pool components
@@ -116,56 +104,62 @@ interface IPoolService is IService {
116
104
  function closeBundle(NftId bundleNftId) external;
117
105
 
118
106
 
107
+ /// @dev Withdraw bundle feeds for the specified bundle.
108
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
109
+
110
+
119
111
  /// @dev Informs product about available funds to process a confirmed claim.
120
112
  /// The function triggers a callback to the product component when the product's property isProcessingFundedClaims is set.
121
113
  function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
122
114
 
123
115
 
124
- /// @dev Fund the specified pool wallet with the provided amount.
125
- /// This function will collect the amount from the sender address and transfers it to the pool wallet.
116
+ /// @dev Fund the pool wallet with the provided amount.
117
+ /// This function will collect the amount from the pool owner and transfers it to the pool wallet.
126
118
  /// The function will not update balance amounts managed by the framework.
127
119
  /// Only available for externally managed pools.
128
- function fundPoolWallet(NftId poolNftId, Amount amount) external;
120
+ function fundPoolWallet(Amount amount) external;
129
121
 
130
122
 
131
123
  /// @dev Defund the specified pool wallet with the provided amount.
132
- /// This function will transfer the amount from the pool wallet to the sender address.
124
+ /// This function will transfer the amount from the pool wallet to the pool owner.
133
125
  /// The function will not update balance amounts managed by the framework.
134
126
  /// Only available for externally managed pools.
135
- function defundPoolWallet(NftId poolNftId, Amount amount) external;
127
+ function defundPoolWallet(Amount amount) external;
136
128
 
137
129
 
138
130
  /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
139
131
  function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
140
132
 
141
133
 
142
- /// @dev Calulate required collateral for the provided parameters.
143
- function calculateRequiredCollateral(
144
- InstanceReader instanceReader,
145
- NftId productNftId,
146
- Amount sumInsuredAmount
147
- )
148
- external
149
- view
150
- returns(
151
- Amount totalCollateralAmount,
152
- Amount localCollateralAmount
153
- );
154
-
155
-
156
- /// @dev calulate required collateral for the provided parameters.
157
- /// Collateralization is applied to sum insured.
158
- /// Retention level defines the fraction of the collateral that is required locally.
159
- function calculateRequiredCollateral(
160
- UFixed collateralizationLevel,
161
- UFixed retentionLevel,
162
- Amount sumInsuredAmount
163
- )
164
- external
165
- pure
166
- returns(
167
- Amount totalCollateralAmount,
168
- Amount localCollateralAmount
169
- );
134
+ // /// @dev Calulate required collateral for the provided parameters.
135
+ // function calculateRequiredCollateral(
136
+ // InstanceReader instanceReader,
137
+ // NftId productNftId,
138
+ // Amount sumInsuredAmount
139
+ // )
140
+ // external
141
+ // view
142
+ // returns(
143
+ // NftId poolNftId,
144
+ // Amount totalCollateralAmount,
145
+ // Amount localCollateralAmount,
146
+ // bool poolIsVerifyingApplications
147
+ // );
148
+
149
+
150
+ // /// @dev calulate required collateral for the provided parameters.
151
+ // /// Collateralization is applied to sum insured.
152
+ // /// Retention level defines the fraction of the collateral that is required locally.
153
+ // function calculateRequiredCollateral(
154
+ // UFixed collateralizationLevel,
155
+ // UFixed retentionLevel,
156
+ // Amount sumInsuredAmount
157
+ // )
158
+ // external
159
+ // pure
160
+ // returns(
161
+ // Amount totalCollateralAmount,
162
+ // Amount localCollateralAmount
163
+ // );
170
164
 
171
165
  }
@@ -2,7 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
5
+ import {BUNDLE, COMPONENT, POLICY, POOL} from "../type/ObjectType.sol";
6
6
  import {ClaimId} from "../type/ClaimId.sol";
7
7
  import {IBundleService} from "./IBundleService.sol";
8
8
  import {IAuthorization} from "../authorization/IAuthorization.sol";
@@ -11,13 +11,13 @@ import {IPoolService} from "./IPoolService.sol";
11
11
  import {IComponents} from "../instance/module/IComponents.sol";
12
12
  import {IComponentService} from "../shared/IComponentService.sol";
13
13
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
14
- import {Fee, FeeLib} from "../type/Fee.sol";
15
- import {NftId, NftIdLib} from "../type/NftId.sol";
14
+ import {InstanceReader} from "../instance/InstanceReader.sol";
15
+ import {Fee} from "../type/Fee.sol";
16
+ import {NftId} from "../type/NftId.sol";
16
17
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
17
18
  import {Seconds} from "../type/Seconds.sol";
18
19
  import {Timestamp} from "../type/Timestamp.sol";
19
- import {TokenHandler} from "../shared/TokenHandler.sol";
20
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
21
21
 
22
22
  abstract contract Pool is
23
23
  InstanceLinkedComponent,
@@ -27,6 +27,7 @@ abstract contract Pool is
27
27
  bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
28
28
 
29
29
  struct PoolStorage {
30
+ IComponents.PoolInfo _poolInfo;
30
31
  IComponentService _componentService;
31
32
  IPoolService _poolService;
32
33
  IBundleService _bundleService;
@@ -41,33 +42,29 @@ abstract contract Pool is
41
42
  }
42
43
 
43
44
 
44
- function register()
45
- external
46
- virtual
47
- onlyOwner()
48
- {
49
- _getPoolStorage()._componentService.registerPool();
50
- _approveTokenHandler(type(uint256).max);
45
+ // TODO remove function once this is no longer used to produce contract locations on the fly ...
46
+ function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
47
+ return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
51
48
  }
52
49
 
53
50
 
54
51
  /// @dev see {IPoolComponent.verifyApplication}
55
52
  function verifyApplication(
56
53
  NftId applicationNftId,
57
- bytes memory applicationData,
58
54
  NftId bundleNftId,
59
- bytes memory bundleFilter,
60
55
  Amount collateralizationAmount
61
56
  )
62
57
  public
63
58
  virtual
64
59
  restricted()
60
+ onlyNftOfType(applicationNftId, POLICY())
65
61
  {
62
+ InstanceReader reader = _getInstanceReader();
66
63
  if(!applicationMatchesBundle(
67
64
  applicationNftId,
68
- applicationData,
65
+ reader.getPolicyInfo(applicationNftId).applicationData,
69
66
  bundleNftId,
70
- bundleFilter,
67
+ reader.getBundleInfo(bundleNftId).filter,
71
68
  collateralizationAmount)
72
69
  )
73
70
  {
@@ -87,14 +84,16 @@ abstract contract Pool is
87
84
  public
88
85
  virtual
89
86
  restricted()
87
+ onlyNftOfType(policyNftId, POLICY())
90
88
  {
91
89
  // default implementation is empty
92
90
  }
93
91
 
94
92
 
95
93
  /// @dev see {IPoolComponent.applicationMatchesBundle}
96
- /// Override this function to implement any custom application verification
97
- /// Default implementation always returns true
94
+ /// Default implementation always returns true.
95
+ /// Override this function to implement any custom application verification.
96
+ /// Calling super.applicationMatchesBundle will ensure validation of application and bundle nft ids.
98
97
  function applicationMatchesBundle(
99
98
  NftId applicationNftId,
100
99
  bytes memory applicationData,
@@ -105,22 +104,13 @@ abstract contract Pool is
105
104
  public
106
105
  virtual
107
106
  view
107
+ onlyNftOfType(applicationNftId, POLICY())
108
+ onlyNftOfType(bundleNftId, BUNDLE())
108
109
  returns (bool isMatching)
109
110
  {
110
111
  return true;
111
112
  }
112
113
 
113
- /// @inheritdoc IPoolComponent
114
- function withdrawBundleFees(NftId bundleNftId, Amount amount)
115
- external
116
- virtual
117
- restricted()
118
- onlyBundleOwner(bundleNftId)
119
- returns (Amount withdrawnAmount)
120
- {
121
- return _withdrawBundleFees(bundleNftId, amount);
122
- }
123
-
124
114
 
125
115
  function getInitialPoolInfo()
126
116
  public
@@ -128,29 +118,19 @@ abstract contract Pool is
128
118
  view
129
119
  returns (IComponents.PoolInfo memory poolInfo)
130
120
  {
131
- return IComponents.PoolInfo({
132
- maxBalanceAmount: AmountLib.max(),
133
- bundleOwnerRole: PUBLIC_ROLE(),
134
- isInterceptingBundleTransfers: isNftInterceptor(),
135
- isProcessingConfirmedClaims: false,
136
- isExternallyManaged: false,
137
- isVerifyingApplications: false,
138
- collateralizationLevel: UFixedLib.toUFixed(1),
139
- retentionLevel: UFixedLib.toUFixed(1)
140
- });
121
+ return _getPoolStorage()._poolInfo;
141
122
  }
142
123
 
143
124
  // Internals
144
125
 
145
126
  function _initializePool(
146
127
  address registry,
147
- NftId instanceNftId,
128
+ NftId productNftId,
148
129
  string memory name,
149
130
  address token,
131
+ IComponents.PoolInfo memory poolInfo,
150
132
  IAuthorization authorization,
151
- bool isInterceptingNftTransfers,
152
133
  address initialOwner,
153
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
154
134
  bytes memory componentData // component specifidc data
155
135
  )
156
136
  internal
@@ -159,17 +139,18 @@ abstract contract Pool is
159
139
  {
160
140
  _initializeInstanceLinkedComponent(
161
141
  registry,
162
- instanceNftId,
142
+ productNftId,
163
143
  name,
164
144
  token,
165
145
  POOL(),
166
146
  authorization,
167
- isInterceptingNftTransfers,
147
+ poolInfo.isInterceptingBundleTransfers,
168
148
  initialOwner,
169
- registryData,
170
149
  componentData);
171
150
 
172
151
  PoolStorage storage $ = _getPoolStorage();
152
+
153
+ $._poolInfo = poolInfo;
173
154
  $._poolService = IPoolService(_getServiceAddress(POOL()));
174
155
  $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
175
156
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
@@ -177,6 +158,88 @@ abstract contract Pool is
177
158
  _registerInterface(type(IPoolComponent).interfaceId);
178
159
  }
179
160
 
161
+
162
+ /// @dev Update pool fees to the specified values.
163
+ /// Pool fee: are deducted from the premium amount and goes to the pool owner.
164
+ /// Staking fee: are deducted from the staked tokens by a bundle owner and goes to the pool owner.
165
+ /// Performance fee: when a bundle is closed a bundle specific profit is calculated.
166
+ /// The performance fee is deducted from this profit and goes to the pool owner.
167
+ function _setPoolFees(
168
+ Fee memory poolFee,
169
+ Fee memory stakingFee,
170
+ Fee memory performanceFee
171
+ )
172
+ internal
173
+ virtual
174
+ {
175
+ _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
176
+ }
177
+
178
+
179
+ /// @dev Sets the maximum balance amound held by this pool.
180
+ /// Function may only be called by pool owner.
181
+ function _setMaxBalanceAmount(Amount maxBalanceAmount)
182
+ internal
183
+ virtual
184
+ {
185
+ _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
186
+ }
187
+
188
+
189
+ /// @dev Fund the pool wallet with the specified amount.
190
+ /// Function is only available for externally managed pools.
191
+ function _fundPoolWallet(Amount amount)
192
+ internal
193
+ virtual
194
+ {
195
+ _getPoolStorage()._poolService.fundPoolWallet(amount);
196
+ }
197
+
198
+
199
+ /// @dev Withdraw the specified amount from the pool wallet.
200
+ /// Function is only available for externally managed pools.
201
+ function _defundPoolWallet(Amount amount)
202
+ internal
203
+ virtual
204
+ {
205
+ _getPoolStorage()._poolService.defundPoolWallet(amount);
206
+ }
207
+
208
+
209
+ /// @dev Creates a new empty bundle using the provided parameter values.
210
+ function _createBundle(
211
+ address bundleOwner,
212
+ Fee memory fee,
213
+ Seconds lifetime,
214
+ bytes memory filter
215
+ )
216
+ internal
217
+ returns(NftId bundleNftId)
218
+ {
219
+ bundleNftId = _getPoolStorage()._bundleService.create(
220
+ bundleOwner,
221
+ fee,
222
+ lifetime,
223
+ filter);
224
+
225
+ // TODO add logging
226
+ }
227
+
228
+
229
+ /// @dev Sets the fee for the specified bundle.
230
+ /// The fee is added on top of the poolFee and deducted from the premium amounts
231
+ /// Via these fees individual bundler owner may earn income per policy in the context of peer to peer pools.
232
+ function _setBundleFee(
233
+ NftId bundleNftId,
234
+ Fee memory fee
235
+ )
236
+ internal
237
+ virtual
238
+ {
239
+ _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
240
+ }
241
+
242
+
180
243
  /// @dev increases the staked tokens by the specified amount
181
244
  /// bundle MUST be in active or locked state
182
245
  function _stake(
@@ -253,87 +316,15 @@ abstract contract Pool is
253
316
  }
254
317
 
255
318
 
256
- /// @dev Sets the fee for the specified bundle.
257
- /// The fee is added on top of the poolFee and deducted from the premium amounts
258
- /// Via these fees individual bundler owner may earn income per policy in the context of peer to peer pools.
259
- function _setBundleFee(
260
- NftId bundleNftId,
261
- Fee memory fee
262
- )
263
- internal
264
- virtual
265
- {
266
- _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
267
- }
268
-
269
-
270
- /// @dev Sets the maximum balance amound held by this pool.
271
- /// Function may only be called by pool owner.
272
- function _setMaxBalanceAmount(Amount maxBalanceAmount)
273
- internal
274
- virtual
275
- {
276
- _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
277
- }
278
-
279
- /// @dev Sets the required role to create/own bundles.
280
- /// May only be called once after setting up a pool.
281
- /// May only be called by pool owner.
282
- function _setBundleOwnerRole(RoleId bundleOwnerRole)
283
- internal
284
- virtual
285
- {
286
- _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
287
- }
288
-
289
-
290
- /// @dev Update pool fees to the specified values.
291
- /// Pool fee: are deducted from the premium amount and goes to the pool owner.
292
- /// Staking fee: are deducted from the staked tokens by a bundle owner and goes to the pool owner.
293
- /// Performance fee: when a bundle is closed a bundle specific profit is calculated.
294
- /// The performance fee is deducted from this profit and goes to the pool owner.
295
- function _setPoolFees(
296
- Fee memory poolFee,
297
- Fee memory stakingFee,
298
- Fee memory performanceFee
299
- )
300
- internal
301
- virtual
302
- {
303
- _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
304
- }
305
-
306
- /// @dev Creates a new empty bundle using the provided parameter values.
307
- function _createBundle(
308
- address bundleOwner,
309
- Fee memory fee,
310
- Seconds lifetime,
311
- bytes memory filter
312
- )
313
- internal
314
- returns(NftId bundleNftId)
315
- {
316
- bundleNftId = _getPoolStorage()._poolService.createBundle(
317
- bundleOwner,
318
- fee,
319
- lifetime,
320
- filter);
321
-
322
- // TODO add logging
323
- }
324
-
325
- // TODO remove function once this is no longer used to produce contract locations on the fly ...
326
- function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
327
- return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
328
- }
329
-
319
+ /// @dev Withdraws the specified amount of fees from the bundle.
330
320
  function _withdrawBundleFees(NftId bundleNftId, Amount amount)
331
321
  internal
332
322
  returns (Amount withdrawnAmount)
333
323
  {
334
- return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
324
+ return _getPoolStorage()._poolService.withdrawBundleFees(bundleNftId, amount);
335
325
  }
336
326
 
327
+
337
328
  function _processFundedClaim(
338
329
  NftId policyNftId,
339
330
  ClaimId claimId,
@@ -345,6 +336,7 @@ abstract contract Pool is
345
336
  policyNftId, claimId, availableAmount);
346
337
  }
347
338
 
339
+
348
340
  function _getPoolStorage() private pure returns (PoolStorage storage $) {
349
341
  assembly {
350
342
  $.slot := POOL_STORAGE_LOCATION_V1