@etherisc/gif-next 0.0.2-f1f3b2c-994 → 0.0.2-f2273b3-211

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 (483) 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 +163 -55
  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 +94 -14
  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 +2 -2
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +8 -8
  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 +275 -171
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +111 -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 +148 -72
  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 +336 -295
  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 +215 -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 +717 -292
  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 +386 -117
  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 +590 -204
  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 +445 -375
  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 +3 -3
  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 +130 -54
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +71 -41
  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 +89 -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 +105 -52
  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 +55 -2
  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 +181 -116
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -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 +112 -63
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -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 -2
  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 -38
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +277 -213
  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 +3 -3
  201. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +337 -65
  203. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +12 -12
  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/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
  242. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  243. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +1 -1
  244. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  245. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +1 -1
  246. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  248. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  250. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  251. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  252. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
  254. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  255. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  256. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Service.sol/Service.json +55 -2
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  262. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  263. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  264. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -136
  266. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
  268. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  269. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -49
  270. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  271. package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -206
  272. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +3 -3
  274. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -51
  276. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -57
  278. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +181 -55
  280. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
  282. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +130 -130
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  292. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  294. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  296. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  298. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  299. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  300. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  302. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  304. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  306. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  308. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  310. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  312. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  314. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  316. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  319. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  321. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  327. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  329. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  331. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  336. package/contracts/accounting/AccountingService.sol +262 -0
  337. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  338. package/contracts/accounting/IAccountingService.sol +45 -0
  339. package/contracts/authorization/AccessAdmin.sol +216 -125
  340. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  341. package/contracts/authorization/Authorization.sol +321 -205
  342. package/contracts/authorization/IAccess.sol +1 -0
  343. package/contracts/authorization/IAccessAdmin.sol +14 -8
  344. package/contracts/authorization/IAuthorization.sol +27 -7
  345. package/contracts/authorization/IServiceAuthorization.sol +1 -1
  346. package/contracts/authorization/ServiceAuthorization.sol +4 -4
  347. package/contracts/distribution/BasicDistribution.sol +15 -12
  348. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  349. package/contracts/distribution/Distribution.sol +41 -47
  350. package/contracts/distribution/DistributionService.sol +100 -78
  351. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  352. package/contracts/distribution/IDistributionComponent.sol +1 -1
  353. package/contracts/distribution/IDistributionService.sol +19 -19
  354. package/contracts/examples/fire/FirePool.sol +25 -10
  355. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  356. package/contracts/examples/fire/FireProduct.sol +40 -13
  357. package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
  358. package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
  359. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  360. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  361. package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
  362. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  363. package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
  364. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  365. package/contracts/instance/BundleSet.sol +42 -38
  366. package/contracts/instance/IInstance.sol +17 -10
  367. package/contracts/instance/IInstanceService.sol +9 -29
  368. package/contracts/instance/Instance.sol +52 -34
  369. package/contracts/instance/InstanceAdmin.sol +249 -100
  370. package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
  371. package/contracts/instance/InstanceReader.sol +174 -32
  372. package/contracts/instance/InstanceService.sol +85 -146
  373. package/contracts/instance/InstanceServiceManager.sol +1 -1
  374. package/contracts/instance/InstanceStore.sol +13 -2
  375. package/contracts/instance/RiskSet.sol +118 -0
  376. package/contracts/instance/base/ObjectCounter.sol +1 -2
  377. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  378. package/contracts/instance/base/ObjectSet.sol +31 -33
  379. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  380. package/contracts/instance/module/IComponents.sol +10 -7
  381. package/contracts/instance/module/IDistribution.sol +2 -1
  382. package/contracts/instance/module/IPolicy.sol +2 -1
  383. package/contracts/instance/module/IRisk.sol +3 -0
  384. package/contracts/oracle/BasicOracle.sol +0 -1
  385. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  386. package/contracts/oracle/IOracleService.sol +2 -1
  387. package/contracts/oracle/Oracle.sol +5 -16
  388. package/contracts/oracle/OracleService.sol +107 -78
  389. package/contracts/oracle/OracleServiceManager.sol +1 -1
  390. package/contracts/pool/BasicPool.sol +33 -24
  391. package/contracts/pool/BasicPoolAuthorization.sol +27 -9
  392. package/contracts/pool/BundleService.sol +88 -154
  393. package/contracts/pool/BundleServiceManager.sol +1 -1
  394. package/contracts/pool/IBundleService.sol +15 -43
  395. package/contracts/pool/IPoolComponent.sol +1 -7
  396. package/contracts/pool/IPoolService.sol +58 -64
  397. package/contracts/pool/Pool.sol +112 -120
  398. package/contracts/pool/PoolLib.sol +216 -0
  399. package/contracts/pool/PoolService.sol +436 -242
  400. package/contracts/pool/PoolServiceManager.sol +1 -1
  401. package/contracts/product/ApplicationService.sol +24 -16
  402. package/contracts/product/ApplicationServiceManager.sol +1 -1
  403. package/contracts/product/BasicProduct.sol +10 -12
  404. package/contracts/product/BasicProductAuthorization.sol +24 -11
  405. package/contracts/product/ClaimService.sol +202 -151
  406. package/contracts/product/ClaimServiceManager.sol +1 -1
  407. package/contracts/product/IApplicationService.sol +5 -2
  408. package/contracts/product/IClaimService.sol +14 -2
  409. package/contracts/product/IPolicyService.sol +26 -11
  410. package/contracts/product/IPricingService.sol +9 -9
  411. package/contracts/product/IProductComponent.sol +10 -1
  412. package/contracts/product/PolicyService.sol +248 -252
  413. package/contracts/product/PolicyServiceLib.sol +65 -0
  414. package/contracts/product/PolicyServiceManager.sol +1 -1
  415. package/contracts/product/PricingService.sol +30 -26
  416. package/contracts/product/PricingServiceManager.sol +3 -3
  417. package/contracts/product/Product.sol +106 -60
  418. package/contracts/product/RiskService.sol +74 -25
  419. package/contracts/product/RiskServiceManager.sol +1 -1
  420. package/contracts/registry/ChainNft.sol +10 -11
  421. package/contracts/registry/IRegistry.sol +14 -15
  422. package/contracts/registry/IRegistryService.sol +6 -4
  423. package/contracts/registry/IRelease.sol +26 -0
  424. package/contracts/registry/ITransferInterceptor.sol +1 -2
  425. package/contracts/registry/Registry.sol +29 -6
  426. package/contracts/registry/RegistryAdmin.sol +132 -226
  427. package/contracts/registry/RegistryService.sol +40 -58
  428. package/contracts/registry/RegistryServiceManager.sol +1 -1
  429. package/contracts/registry/ReleaseAdmin.sol +245 -0
  430. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  431. package/contracts/registry/ReleaseRegistry.sol +139 -124
  432. package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
  433. package/contracts/registry/TokenRegistry.sol +6 -8
  434. package/contracts/shared/Component.sol +69 -118
  435. package/contracts/shared/ComponentService.sol +422 -371
  436. package/contracts/shared/ComponentServiceManager.sol +1 -1
  437. package/contracts/shared/ComponentVerifyingService.sol +27 -15
  438. package/contracts/shared/ContractLib.sol +224 -9
  439. package/contracts/shared/IComponent.sol +8 -20
  440. package/contracts/shared/IComponentService.sol +41 -37
  441. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  442. package/contracts/shared/INftOwnable.sol +2 -0
  443. package/contracts/shared/IRegisterable.sol +23 -1
  444. package/contracts/shared/IService.sol +3 -5
  445. package/contracts/shared/InstanceLinkedComponent.sol +68 -42
  446. package/contracts/shared/Lifecycle.sol +7 -7
  447. package/contracts/shared/NftOwnable.sol +26 -6
  448. package/contracts/shared/PolicyHolder.sol +1 -1
  449. package/contracts/shared/Registerable.sol +53 -19
  450. package/contracts/shared/RegistryLinked.sol +7 -13
  451. package/contracts/shared/Service.sol +9 -31
  452. package/contracts/shared/TokenHandler.sol +274 -72
  453. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  454. package/contracts/staking/IStaking.sol +6 -10
  455. package/contracts/staking/IStakingService.sol +12 -4
  456. package/contracts/staking/StakeManagerLib.sol +69 -20
  457. package/contracts/staking/Staking.sol +73 -41
  458. package/contracts/staking/StakingReader.sol +1 -16
  459. package/contracts/staking/StakingService.sol +70 -24
  460. package/contracts/staking/StakingServiceManager.sol +5 -4
  461. package/contracts/type/Key32.sol +2 -2
  462. package/contracts/type/Key32Set.sol +62 -0
  463. package/contracts/type/NftId.sol +6 -0
  464. package/contracts/type/ObjectType.sol +48 -21
  465. package/contracts/type/RiskId.sol +23 -6
  466. package/contracts/type/RoleId.sol +23 -15
  467. package/contracts/type/Selector.sol +5 -0
  468. package/contracts/type/Timestamp.sol +0 -5
  469. package/contracts/type/UFixed.sol +9 -119
  470. package/contracts/type/Version.sol +15 -5
  471. package/contracts/upgradeability/ProxyManager.sol +2 -1
  472. package/package.json +3 -3
  473. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  474. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  475. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  476. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  477. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  479. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  480. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  481. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  482. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  483. package/contracts/instance/module/IAccess.sol +0 -46
@@ -1,22 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
6
- import {Fee, FeeLib} from "../type/Fee.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
7
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
8
- import {IBundleService} from "./IBundleService.sol";
9
- import {IPoolComponent} from "./IPoolComponent.sol";
10
- import {IPoolService} from "./IPoolService.sol";
11
7
  import {IComponents} from "../instance/module/IComponents.sol";
12
- import {IComponentService} from "../shared/IComponentService.sol";
13
- import {NftId, NftIdLib} from "../type/NftId.sol";
14
- import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
15
- import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {BUNDLE} from "../type/ObjectType.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
16
11
  import {Seconds} from "../type/Seconds.sol";
17
12
  import {Timestamp} from "../type/Timestamp.sol";
18
- import {TokenHandler} from "../shared/TokenHandler.sol";
19
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
13
 
21
14
  import {Pool} from "./Pool.sol";
22
15
 
@@ -26,10 +19,11 @@ abstract contract BasicPool is
26
19
 
27
20
  function _initializeBasicPool(
28
21
  address registry,
29
- NftId instanceNftId,
30
- IAuthorization authorization,
31
- address token,
22
+ NftId productNftId,
32
23
  string memory name,
24
+ address token,
25
+ IComponents.PoolInfo memory poolInfo,
26
+ IAuthorization authorization,
33
27
  address initialOwner
34
28
  )
35
29
  internal
@@ -38,13 +32,12 @@ abstract contract BasicPool is
38
32
  {
39
33
  _initializePool(
40
34
  registry,
41
- instanceNftId,
35
+ productNftId,
42
36
  name,
43
37
  token,
38
+ poolInfo,
44
39
  authorization,
45
- false, // isInterceptingNftTransfers,
46
40
  initialOwner,
47
- "", // registryData
48
41
  ""); // componentData
49
42
  }
50
43
 
@@ -56,6 +49,7 @@ abstract contract BasicPool is
56
49
  virtual
57
50
  restricted()
58
51
  onlyBundleOwner(bundleNftId)
52
+ onlyNftOfType(bundleNftId, BUNDLE())
59
53
  {
60
54
  _stake(bundleNftId, amount);
61
55
  }
@@ -69,6 +63,7 @@ abstract contract BasicPool is
69
63
  virtual
70
64
  restricted()
71
65
  onlyBundleOwner(bundleNftId)
66
+ onlyNftOfType(bundleNftId, BUNDLE())
72
67
  {
73
68
  _unstake(bundleNftId, amount);
74
69
  }
@@ -82,6 +77,7 @@ abstract contract BasicPool is
82
77
  virtual
83
78
  restricted()
84
79
  onlyBundleOwner(bundleNftId)
80
+ onlyNftOfType(bundleNftId, BUNDLE())
85
81
  returns(Timestamp newExpiredAt)
86
82
  {
87
83
  return _extend(bundleNftId, lifetimeExtension);
@@ -93,6 +89,7 @@ abstract contract BasicPool is
93
89
  virtual
94
90
  restricted()
95
91
  onlyBundleOwner(bundleNftId)
92
+ onlyNftOfType(bundleNftId, BUNDLE())
96
93
  {
97
94
  _lockBundle(bundleNftId);
98
95
  }
@@ -103,6 +100,7 @@ abstract contract BasicPool is
103
100
  virtual
104
101
  restricted()
105
102
  onlyBundleOwner(bundleNftId)
103
+ onlyNftOfType(bundleNftId, BUNDLE())
106
104
  {
107
105
  _unlockBundle(bundleNftId);
108
106
  }
@@ -113,11 +111,15 @@ abstract contract BasicPool is
113
111
  virtual
114
112
  restricted()
115
113
  onlyBundleOwner(bundleNftId)
114
+ onlyNftOfType(bundleNftId, BUNDLE())
116
115
  {
117
116
  _closeBundle(bundleNftId);
118
117
  }
119
118
 
120
119
 
120
+ /// @dev Updates the bundle feeds to the specified values.
121
+ /// @param bundleNftId the bundle Nft Id
122
+ /// @param fee the new fee values
121
123
  function setBundleFee(
122
124
  NftId bundleNftId,
123
125
  Fee memory fee
@@ -126,28 +128,35 @@ abstract contract BasicPool is
126
128
  virtual
127
129
  restricted()
128
130
  onlyBundleOwner(bundleNftId)
131
+ onlyNftOfType(bundleNftId, BUNDLE())
129
132
  {
130
133
  _setBundleFee(bundleNftId, fee);
131
134
  }
132
135
 
133
136
 
134
- function setMaxBalanceAmount(Amount maxBalanceAmount)
135
- public
137
+ /// @dev Withdraw bundle feeds for the given bundle.
138
+ /// @param bundleNftId the bundle Nft Id
139
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
140
+ /// @return withdrawnAmount the effective withdrawn amount
141
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
142
+ external
136
143
  virtual
137
144
  restricted()
138
- onlyOwner()
145
+ onlyBundleOwner(bundleNftId)
146
+ onlyNftOfType(bundleNftId, BUNDLE())
147
+ returns (Amount withdrawnAmount)
139
148
  {
140
- _setMaxBalanceAmount(maxBalanceAmount);
149
+ return _withdrawBundleFees(bundleNftId, amount);
141
150
  }
142
151
 
143
152
 
144
- function setBundleOwnerRole(RoleId bundleOwnerRole)
153
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
145
154
  public
146
155
  virtual
147
156
  restricted()
148
157
  onlyOwner()
149
158
  {
150
- _setBundleOwnerRole(bundleOwnerRole);
159
+ _setMaxBalanceAmount(maxBalanceAmount);
151
160
  }
152
161
 
153
162
 
@@ -1,14 +1,16 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Authorization} from "../authorization/Authorization.sol";
5
- import {BasicPool} from "./BasicPool.sol";
6
4
  import {IAccess} from "../authorization/IAccess.sol";
7
5
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
6
  import {IPoolComponent} from "./IPoolComponent.sol";
9
- import {POOL} from "../type/ObjectType.sol";
7
+
8
+ import {Authorization} from "../authorization/Authorization.sol";
9
+ import {BasicPool} from "./BasicPool.sol";
10
+ import {COMPONENT, POOL} from "../type/ObjectType.sol";
10
11
  import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
11
12
  import {RoleId} from "../type/RoleId.sol";
13
+ import {TokenHandler} from "../shared/TokenHandler.sol";
12
14
 
13
15
 
14
16
  contract BasicPoolAuthorization
@@ -16,16 +18,30 @@ contract BasicPoolAuthorization
16
18
  {
17
19
 
18
20
  constructor(string memory poolName)
19
- Authorization(poolName)
21
+ Authorization(poolName, POOL())
20
22
  {}
21
23
 
22
- function _setupTargets()
24
+ function _setupServiceTargets()
23
25
  internal
24
26
  virtual override
25
27
  {
26
- _addComponentTargetWithRole(POOL()); // basic pool target
28
+ _addServiceTargetWithRole(COMPONENT());
29
+ _addServiceTargetWithRole(POOL());
27
30
  }
28
31
 
32
+ function _setupTokenHandlerAuthorizations() internal virtual override {
33
+ // authorize token handler functions for component service role
34
+ IAccess.FunctionInfo[] storage functions;
35
+ functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(COMPONENT()));
36
+ _authorize(functions, TokenHandler.approve.selector, "approve");
37
+ _authorize(functions, TokenHandler.setWallet.selector, "setWallet");
38
+ _authorize(functions, TokenHandler.pushFeeToken.selector, "pushFeeToken");
39
+
40
+ // authorize token handler functions for pool service role
41
+ functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(POOL()));
42
+ _authorize(functions, TokenHandler.pullToken.selector, "pullToken");
43
+ _authorize(functions, TokenHandler.pushToken.selector, "pushToken");
44
+ }
29
45
 
30
46
  function _setupTargetAuthorizations()
31
47
  internal
@@ -34,7 +50,7 @@ contract BasicPoolAuthorization
34
50
  IAccess.FunctionInfo[] storage functions;
35
51
 
36
52
  // authorize public role (open access to any account, only allows to lock target)
37
- functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
53
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
38
54
  _authorize(functions, BasicPool.stake.selector, "stake");
39
55
  _authorize(functions, BasicPool.unstake.selector, "unstake");
40
56
  _authorize(functions, BasicPool.extend.selector, "extend");
@@ -44,15 +60,17 @@ contract BasicPoolAuthorization
44
60
  _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
45
61
 
46
62
  _authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
47
- _authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
48
63
  _authorize(functions, BasicPool.setFees.selector, "setFees");
49
64
  _authorize(functions, BasicPool.stake.selector, "stake");
50
65
  _authorize(functions, BasicPool.unstake.selector, "unstake");
51
66
  _authorize(functions, BasicPool.extend.selector, "extend");
52
67
 
53
68
  _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
69
+ _authorize(functions, BasicPool.withdrawBundleFees.selector, "withdrawBundleFees");
54
70
 
55
- _authorize(functions, IPoolComponent.withdrawBundleFees.selector, "withdrawBundleFees");
71
+ // authorize pool service
72
+ functions = _authorizeForTarget(getMainTargetName(), getServiceRole(POOL()));
73
+ _authorize(functions, IPoolComponent.verifyApplication.selector, "verifyApplication");
56
74
  }
57
75
  }
58
76
 
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
4
5
  import {IBundle} from "../instance/module/IBundle.sol";
5
6
  import {IBundleService} from "./IBundleService.sol";
6
7
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -9,7 +10,6 @@ import {IRegistry} from "../registry/IRegistry.sol";
9
10
  import {IRegistryService} from "../registry/IRegistryService.sol";
10
11
  import {IInstance} from "../instance/IInstance.sol";
11
12
  import {InstanceStore} from "../instance/InstanceStore.sol";
12
- import {IPolicy} from "../instance/module/IPolicy.sol";
13
13
 
14
14
  import {Amount, AmountLib} from "../type/Amount.sol";
15
15
  import {BundleSet} from "../instance/BundleSet.sol";
@@ -17,7 +17,7 @@ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol
17
17
  import {Fee} from "../type/Fee.sol";
18
18
  import {InstanceReader} from "../instance/InstanceReader.sol";
19
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
20
- import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
20
+ import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
21
21
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
22
  import {Seconds} from "../type/Seconds.sol";
23
23
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
@@ -33,6 +33,7 @@ contract BundleService is
33
33
 
34
34
  address private _registryAddress;
35
35
  IRegistryService private _registryService;
36
+ IAccountingService private _accountingService;
36
37
  IComponentService private _componentService;
37
38
 
38
39
  function _initialize(
@@ -44,13 +45,14 @@ contract BundleService is
44
45
  initializer()
45
46
  {
46
47
  (
47
- address registryAddress,
48
- address authority
48
+ address authority,
49
+ address registry
49
50
  ) = abi.decode(data, (address, address));
50
51
 
51
- _initializeService(registryAddress, authority, owner);
52
+ __Service_init(authority, registry, owner);
52
53
 
53
54
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
55
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
54
56
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
55
57
 
56
58
  _registerInterface(type(IBundleService).interfaceId);
@@ -63,7 +65,10 @@ contract BundleService is
63
65
  )
64
66
  external
65
67
  virtual
68
+ restricted()
66
69
  {
70
+ _checkNftType(bundleNftId, BUNDLE());
71
+
67
72
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
68
73
  InstanceReader instanceReader = instance.getInstanceReader();
69
74
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
@@ -81,19 +86,18 @@ contract BundleService is
81
86
 
82
87
 
83
88
  function create(
84
- IInstance instance,
85
- NftId poolNftId,
86
89
  address owner,
87
90
  Fee memory bundleFee,
88
- Amount stakingAmount,
89
91
  Seconds lifetime,
90
92
  bytes calldata filter
91
93
  )
92
94
  external
93
- override
94
- restricted
95
+ virtual
96
+ restricted()
95
97
  returns(NftId bundleNftId)
96
98
  {
99
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
100
+
97
101
  // register bundle with registry
98
102
  bundleNftId = _registryService.registerBundle(
99
103
  IRegistry.ObjectInfo(
@@ -121,19 +125,11 @@ contract BundleService is
121
125
  })
122
126
  );
123
127
 
124
- if (stakingAmount.gtz()) {
125
- // bundle book keeping
126
- _componentService.increaseBundleBalance(
127
- instanceStore,
128
- bundleNftId,
129
- stakingAmount,
130
- AmountLib.zero()); // fee amount
131
- }
132
-
133
128
  // put bundle under bundle managemet
134
129
  BundleSet bundleManager = instance.getBundleSet();
135
130
  bundleManager.add(bundleNftId);
136
- // TODO add logging
131
+
132
+ emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
137
133
  }
138
134
 
139
135
 
@@ -148,45 +144,58 @@ contract BundleService is
148
144
  virtual
149
145
  restricted()
150
146
  {
147
+ // checks
148
+ _checkNftType(policyNftId, POLICY());
149
+ _checkNftType(bundleNftId, BUNDLE());
150
+
151
151
  InstanceReader instanceReader = instance.getInstanceReader();
152
- StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
153
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
154
152
 
155
- // ensure bundle is active and not yet expired
156
- if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
157
- revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
153
+ {
154
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
155
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
156
+
157
+ // ensure bundle is active and not yet expired
158
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
159
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
160
+ }
158
161
  }
159
162
 
160
- // ensure bundle capacity is sufficent to collateralize policy
161
163
  InstanceStore instanceStore = instance.getInstanceStore();
162
- (
163
- Amount balanceAmount,
164
- Amount lockedAmount,
165
- Amount feeAmount
166
- ) = instanceStore.getAmounts(bundleNftId);
167
164
 
168
- Amount capacity = balanceAmount - (lockedAmount + feeAmount);
169
- if(capacity < collateralAmount) {
170
- revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
165
+ {
166
+ // ensure bundle capacity is sufficent to collateralize policy
167
+ (
168
+ Amount balanceAmount,
169
+ Amount lockedAmount,
170
+ Amount feeAmount
171
+ ) = instanceStore.getAmounts(bundleNftId);
172
+
173
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
174
+ if(capacity < collateralAmount) {
175
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
176
+ }
171
177
  }
172
178
 
179
+ // effects
173
180
  // updated locked amount
174
181
  instanceStore.increaseLocked(bundleNftId, collateralAmount);
175
-
176
- // link policy to bundle in bundle manger
177
- _linkPolicy(instance, policyNftId);
178
182
  }
179
183
 
180
184
 
181
185
  function lock(NftId bundleNftId)
182
186
  external
183
187
  virtual
188
+ restricted()
184
189
  {
190
+ // checks
191
+ _checkNftType(bundleNftId, BUNDLE());
192
+
185
193
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
186
194
 
187
195
  // udpate bundle state
188
196
  instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
189
197
 
198
+ // effects
190
199
  // update set of active bundles
191
200
  BundleSet bundleManager = instance.getBundleSet();
192
201
  bundleManager.lock(bundleNftId);
@@ -198,9 +207,14 @@ contract BundleService is
198
207
  function unlock(NftId bundleNftId)
199
208
  external
200
209
  virtual
210
+ restricted()
201
211
  {
212
+ // checks
213
+ _checkNftType(bundleNftId, BUNDLE());
214
+
202
215
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
203
216
 
217
+ // effects
204
218
  // udpate bundle state
205
219
  instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
206
220
 
@@ -218,9 +232,12 @@ contract BundleService is
218
232
  )
219
233
  external
220
234
  virtual
221
- restricted
235
+ restricted()
222
236
  returns (Amount unstakedAmount, Amount feeAmount)
223
237
  {
238
+ // checks
239
+ _checkNftType(bundleNftId, BUNDLE());
240
+
224
241
  InstanceReader instanceReader = instance.getInstanceReader();
225
242
 
226
243
  // ensure no open policies attached to bundle
@@ -230,6 +247,7 @@ contract BundleService is
230
247
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
231
248
  }
232
249
 
250
+ // effects
233
251
  {
234
252
  // update bundle state
235
253
  InstanceStore instanceStore = instance.getInstanceStore();
@@ -240,22 +258,26 @@ contract BundleService is
240
258
  Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
241
259
  feeAmount = instanceReader.getFeeAmount(bundleNftId);
242
260
  unstakedAmount = balanceAmountWithFees - feeAmount;
243
- _componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
261
+ _accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
244
262
  }
245
263
  }
246
264
 
247
265
  /// @inheritdoc IBundleService
248
266
  function stake(
249
- IInstance instance,
267
+ InstanceReader instanceReader,
268
+ InstanceStore instanceStore,
250
269
  NftId bundleNftId,
251
270
  Amount amount
252
271
  )
253
272
  external
254
273
  virtual
255
- // TODO: restricted() (once #462 is done)
274
+ restricted()
256
275
  {
257
- IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
258
- StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
276
+ // checks
277
+ _checkNftType(bundleNftId, BUNDLE());
278
+
279
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
280
+ StateId bundleState = instanceReader.getBundleState(bundleNftId);
259
281
 
260
282
  if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
261
283
  || bundleInfo.expiredAt < TimestampLib.blockTimestamp()
@@ -263,8 +285,9 @@ contract BundleService is
263
285
  revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
264
286
  }
265
287
 
266
- _componentService.increaseBundleBalance(
267
- instance.getInstanceStore(),
288
+ // effects
289
+ _accountingService.increaseBundleBalance(
290
+ instanceStore,
268
291
  bundleNftId,
269
292
  amount,
270
293
  AmountLib.zero());
@@ -272,23 +295,25 @@ contract BundleService is
272
295
 
273
296
  /// @inheritdoc IBundleService
274
297
  function unstake(
275
- IInstance instance,
298
+ InstanceStore instanceStore,
276
299
  NftId bundleNftId,
277
300
  Amount amount
278
301
  )
279
302
  external
280
303
  virtual
281
- // TODO: restricted() (once #462 is done)
304
+ restricted()
282
305
  returns (Amount unstakedAmount)
283
306
  {
284
- InstanceStore instanceStore = instance.getInstanceStore();
307
+ // checks
308
+ _checkNftType(bundleNftId, BUNDLE());
309
+
285
310
  (
286
311
  Amount balanceAmount,
287
312
  Amount lockedAmount,
288
313
  Amount feeAmount
289
314
  ) = instanceStore.getAmounts(bundleNftId);
290
315
 
291
- Amount unstakedAmount = amount;
316
+ unstakedAmount = amount;
292
317
  Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
293
318
 
294
319
  // if amount is max, then unstake all available
@@ -301,22 +326,24 @@ contract BundleService is
301
326
  revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
302
327
  }
303
328
 
304
- _componentService.decreaseBundleBalance(
329
+ // effects
330
+ _accountingService.decreaseBundleBalance(
305
331
  instanceStore,
306
332
  bundleNftId,
307
333
  unstakedAmount,
308
334
  AmountLib.zero());
309
-
310
- return unstakedAmount;
311
335
  }
312
336
 
313
337
  /// @inheritdoc IBundleService
314
338
  function extend(NftId bundleNftId, Seconds lifetimeExtension)
315
339
  external
316
340
  virtual
317
- // TODO: restricted() (once #462 is done)
341
+ restricted()
318
342
  returns (Timestamp extendedExpiredAt)
319
343
  {
344
+ // checks
345
+ _checkNftType(bundleNftId, BUNDLE());
346
+
320
347
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
321
348
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
322
349
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
@@ -335,17 +362,18 @@ contract BundleService is
335
362
  revert ErrorBundleServiceExtensionLifetimeIsZero();
336
363
  }
337
364
 
365
+ // effects
338
366
  bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
339
- instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
367
+ extendedExpiredAt = bundleInfo.expiredAt;
340
368
 
341
- emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
369
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
342
370
 
343
- return bundleInfo.expiredAt;
371
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, extendedExpiredAt);
344
372
  }
345
373
 
346
374
 
347
375
  function releaseCollateral(
348
- IInstance instance,
376
+ InstanceStore instanceStore,
349
377
  NftId policyNftId,
350
378
  NftId bundleNftId,
351
379
  Amount collateralAmount
@@ -354,106 +382,12 @@ contract BundleService is
354
382
  virtual
355
383
  restricted()
356
384
  {
357
- instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
358
- }
359
-
360
- /// @dev unlinks policy from bundle
361
- function unlinkPolicy(
362
- IInstance instance,
363
- NftId policyNftId
364
- )
365
- external
366
- virtual
367
- restricted
368
- {
369
- // ensure policy is closeable
370
- if (!policyIsCloseable(instance, policyNftId)) {
371
- revert ErrorBundleServicePolicyNotCloseable(policyNftId);
372
- }
373
-
374
- instance.getBundleSet().unlinkPolicy(policyNftId);
375
- }
376
-
377
- /// @inheritdoc IBundleService
378
- function withdrawBundleFees(NftId bundleNftId, Amount amount)
379
- public
380
- virtual
381
- // TODO: restricted() (once #462 is done)
382
- returns (Amount withdrawnAmount)
383
- {
384
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
385
- InstanceReader reader = instance.getInstanceReader();
386
-
387
- IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
388
- address poolWallet = poolInfo.wallet;
389
-
390
- IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
391
-
392
- // determine withdrawn amount
393
- withdrawnAmount = amount;
394
- if (withdrawnAmount.gte(AmountLib.max())) {
395
- withdrawnAmount = reader.getFeeAmount(bundleNftId);
396
- } else {
397
- if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
398
- revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
399
- }
400
- }
401
-
402
- // decrease fee counters by withdrawnAmount
403
- {
404
- InstanceStore store = instance.getInstanceStore();
405
- // decrease fee amount of the bundle
406
- _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
407
- // decrease pool balance
408
- _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
409
- }
410
-
411
- // transfer amount to bundle owner
412
- {
413
- address owner = getRegistry().ownerOf(bundleNftId);
414
- emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
415
- poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
416
- }
417
- }
418
-
419
- /// @inheritdoc IBundleService
420
- function policyIsCloseable(IInstance instance, NftId policyNftId)
421
- public
422
- view
423
- returns (bool isCloseable)
424
- {
425
- IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
426
-
427
- if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
428
- if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
429
- if (info.closedAt.gtz()) { return false; } // not closeable: already closed
430
- if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
431
-
432
- // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
433
- if (info.claimAmount == info.sumInsuredAmount) { return true; }
434
-
435
- // not closeable: not yet expired
436
- if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
385
+ _checkNftType(policyNftId, POLICY());
386
+ _checkNftType(bundleNftId, BUNDLE());
437
387
 
438
- // all conditionsl to close the policy are met
439
- return true;
388
+ instanceStore.decreaseLocked(bundleNftId, collateralAmount);
440
389
  }
441
390
 
442
- /// @dev links policy to bundle
443
- function _linkPolicy(IInstance instance, NftId policyNftId)
444
- internal
445
- {
446
- InstanceReader instanceReader = instance.getInstanceReader();
447
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
448
-
449
- // ensure policy has not yet been activated in a previous tx already
450
- if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
451
- revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
452
- }
453
-
454
- BundleSet bundleManager = instance.getBundleSet();
455
- bundleManager.linkPolicy(policyNftId);
456
- }
457
391
 
458
392
  function _getDomain() internal pure override returns(ObjectType) {
459
393
  return BUNDLE();