@etherisc/gif-next 0.0.2-e9c5694-914 → 0.0.2-ea09fbf-195

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 (443) 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 +103 -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 +2 -2
  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 +37 -5
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +137 -129
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  67. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -56
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +239 -92
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  85. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  92. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.json +168 -0
  94. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  100. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  105. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
  162. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
  164. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  166. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  168. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  169. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  170. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
  172. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
  174. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  176. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +31 -2
  178. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  180. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  181. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  182. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  183. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/Registry.sol/Registry.json +69 -40
  185. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
  187. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  189. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  191. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  192. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +310 -52
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  211. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  217. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  219. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
  221. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  223. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  229. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  232. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  233. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  235. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  247. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  253. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  255. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  256. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  257. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
  259. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  261. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  263. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  265. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  267. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  269. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
  271. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
  273. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  275. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  277. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  278. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  280. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  283. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  285. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  287. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  289. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  290. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  291. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  293. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  295. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  297. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  299. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  301. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  303. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  305. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
  307. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  325. package/contracts/accounting/AccountingService.sol +262 -0
  326. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  327. package/contracts/accounting/IAccountingService.sol +45 -0
  328. package/contracts/authorization/AccessAdmin.sol +136 -73
  329. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  330. package/contracts/authorization/IAccessAdmin.sol +6 -3
  331. package/contracts/distribution/BasicDistribution.sol +6 -6
  332. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  333. package/contracts/distribution/Distribution.sol +32 -30
  334. package/contracts/distribution/DistributionService.sol +34 -32
  335. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  336. package/contracts/distribution/IDistributionService.sol +5 -6
  337. package/contracts/examples/fire/FirePool.sol +22 -5
  338. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  339. package/contracts/examples/fire/FireProduct.sol +31 -8
  340. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  341. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  342. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  343. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  344. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  345. package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
  346. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  347. package/contracts/instance/BundleSet.sol +42 -38
  348. package/contracts/instance/IInstance.sol +8 -8
  349. package/contracts/instance/IInstanceService.sol +9 -9
  350. package/contracts/instance/Instance.sol +20 -17
  351. package/contracts/instance/InstanceAdmin.sol +96 -47
  352. package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
  353. package/contracts/instance/InstanceReader.sol +108 -7
  354. package/contracts/instance/InstanceService.sol +73 -82
  355. package/contracts/instance/InstanceServiceManager.sol +1 -1
  356. package/contracts/instance/InstanceStore.sol +13 -2
  357. package/contracts/instance/RiskSet.sol +118 -0
  358. package/contracts/instance/base/ObjectCounter.sol +1 -2
  359. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  360. package/contracts/instance/base/ObjectSet.sol +31 -33
  361. package/contracts/instance/base/ObjectSetHelper.sol +30 -0
  362. package/contracts/instance/module/IComponents.sol +4 -4
  363. package/contracts/instance/module/IPolicy.sol +2 -1
  364. package/contracts/instance/module/IRisk.sol +3 -0
  365. package/contracts/oracle/Oracle.sol +1 -1
  366. package/contracts/oracle/OracleService.sol +92 -73
  367. package/contracts/oracle/OracleServiceManager.sol +1 -1
  368. package/contracts/pool/BasicPool.sol +24 -3
  369. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  370. package/contracts/pool/BundleService.sol +26 -94
  371. package/contracts/pool/BundleServiceManager.sol +1 -1
  372. package/contracts/pool/IBundleService.sol +2 -24
  373. package/contracts/pool/IPoolComponent.sol +1 -7
  374. package/contracts/pool/IPoolService.sol +12 -26
  375. package/contracts/pool/Pool.sol +112 -102
  376. package/contracts/pool/PoolService.sol +171 -100
  377. package/contracts/pool/PoolServiceManager.sol +1 -1
  378. package/contracts/product/ApplicationService.sol +15 -15
  379. package/contracts/product/ApplicationServiceManager.sol +1 -1
  380. package/contracts/product/BasicProduct.sol +9 -11
  381. package/contracts/product/BasicProductAuthorization.sol +1 -2
  382. package/contracts/product/ClaimService.sol +147 -51
  383. package/contracts/product/ClaimServiceManager.sol +1 -1
  384. package/contracts/product/IApplicationService.sol +5 -2
  385. package/contracts/product/IClaimService.sol +13 -0
  386. package/contracts/product/IPolicyService.sol +17 -7
  387. package/contracts/product/IProductComponent.sol +4 -1
  388. package/contracts/product/PolicyService.sol +244 -199
  389. package/contracts/product/PolicyServiceManager.sol +1 -1
  390. package/contracts/product/PricingService.sol +23 -19
  391. package/contracts/product/PricingServiceManager.sol +3 -3
  392. package/contracts/product/Product.sol +47 -39
  393. package/contracts/product/RiskService.sol +78 -23
  394. package/contracts/product/RiskServiceManager.sol +1 -1
  395. package/contracts/registry/ChainNft.sol +4 -2
  396. package/contracts/registry/IRegistry.sol +8 -15
  397. package/contracts/registry/IRelease.sol +26 -0
  398. package/contracts/registry/Registry.sol +12 -3
  399. package/contracts/registry/RegistryAdmin.sol +121 -225
  400. package/contracts/registry/RegistryService.sol +3 -3
  401. package/contracts/registry/RegistryServiceManager.sol +1 -1
  402. package/contracts/registry/ReleaseAdmin.sol +245 -0
  403. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  404. package/contracts/registry/ReleaseRegistry.sol +129 -119
  405. package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
  406. package/contracts/registry/TokenRegistry.sol +6 -8
  407. package/contracts/shared/Component.sol +59 -98
  408. package/contracts/shared/ComponentService.sol +206 -251
  409. package/contracts/shared/ComponentServiceManager.sol +1 -1
  410. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  411. package/contracts/shared/ContractLib.sol +223 -9
  412. package/contracts/shared/IComponent.sol +4 -17
  413. package/contracts/shared/IComponentService.sol +20 -24
  414. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  415. package/contracts/shared/IRegisterable.sol +15 -4
  416. package/contracts/shared/IService.sol +3 -5
  417. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  418. package/contracts/shared/NftOwnable.sol +4 -4
  419. package/contracts/shared/PolicyHolder.sol +1 -1
  420. package/contracts/shared/Registerable.sol +44 -20
  421. package/contracts/shared/RegistryLinked.sol +7 -13
  422. package/contracts/shared/Service.sol +8 -27
  423. package/contracts/shared/TokenHandler.sol +316 -66
  424. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  425. package/contracts/staking/IStaking.sol +9 -4
  426. package/contracts/staking/Staking.sol +62 -33
  427. package/contracts/staking/StakingService.sol +41 -9
  428. package/contracts/type/Key32.sol +2 -2
  429. package/contracts/type/Key32Set.sol +62 -0
  430. package/contracts/type/NftId.sol +6 -0
  431. package/contracts/type/ObjectType.sol +32 -18
  432. package/contracts/type/RiskId.sol +23 -6
  433. package/contracts/type/RoleId.sol +5 -2
  434. package/contracts/type/Timestamp.sol +0 -5
  435. package/contracts/type/UFixed.sol +9 -119
  436. package/contracts/type/Version.sol +15 -5
  437. package/contracts/upgradeability/ProxyManager.sol +1 -1
  438. package/package.json +3 -3
  439. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  440. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  441. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  442. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  443. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
@@ -1,36 +1,39 @@
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";
7
8
  import {IComponentService} from "../shared/IComponentService.sol";
8
9
  import {IInstance} from "../instance/IInstance.sol";
9
10
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
- import {IProductComponent} from "../product/IProductComponent.sol";
11
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
11
12
  import {IPoolService} from "./IPoolService.sol";
13
+ import {IProductComponent} from "../product/IProductComponent.sol";
12
14
  import {IRegistry} from "../registry/IRegistry.sol";
13
15
  import {IStaking} from "../staking/IStaking.sol";
14
16
 
15
17
  import {Amount, AmountLib} from "../type/Amount.sol";
16
18
  import {ClaimId} from "../type/ClaimId.sol";
19
+ import {ContractLib} from "../shared/ContractLib.sol";
17
20
  import {Fee, FeeLib} from "../type/Fee.sol";
18
21
  import {NftId} from "../type/NftId.sol";
19
- import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
22
+ import {ObjectType, ACCOUNTING, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
20
23
  import {Fee, FeeLib} from "../type/Fee.sol";
21
24
  import {KEEP_STATE} from "../type/StateId.sol";
22
- import {Seconds} from "../type/Seconds.sol";
23
25
  import {UFixed} from "../type/UFixed.sol";
24
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
26
+ import {Service} from "../shared/Service.sol";
25
27
  import {InstanceReader} from "../instance/InstanceReader.sol";
26
28
  import {InstanceStore} from "../instance/InstanceStore.sol";
27
29
 
28
30
  string constant POOL_SERVICE_NAME = "PoolService";
29
31
 
30
32
  contract PoolService is
31
- ComponentVerifyingService,
33
+ Service,
32
34
  IPoolService
33
35
  {
36
+ IAccountingService private _accountingService;
34
37
  IBundleService internal _bundleService;
35
38
  IComponentService internal _componentService;
36
39
  IStaking private _staking;
@@ -44,12 +47,13 @@ contract PoolService is
44
47
  initializer()
45
48
  {
46
49
  (
47
- address registryAddress,
48
- address authority
50
+ address authority,
51
+ address registry
49
52
  ) = abi.decode(data, (address, address));
50
53
 
51
- _initializeService(registryAddress, authority, owner);
54
+ __Service_init(authority, registry, owner);
52
55
 
56
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
53
57
  _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
54
58
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
55
59
  _staking = IStaking(getRegistry().getStakingAddress());
@@ -63,7 +67,7 @@ contract PoolService is
63
67
  external
64
68
  virtual
65
69
  {
66
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
70
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
67
71
  InstanceReader instanceReader = instance.getInstanceReader();
68
72
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
69
73
 
@@ -75,47 +79,20 @@ contract PoolService is
75
79
  }
76
80
 
77
81
 
78
- /// @inheritdoc IPoolService
79
- function createBundle(
80
- address bundleOwner, // initial bundle owner
81
- Fee memory fee, // fees deducted from premium that go to bundle owner
82
- Seconds lifetime, // initial duration for which new policies are covered
83
- bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
84
- )
85
- external
86
- virtual
87
- returns(NftId bundleNftId)
88
- {
89
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
90
-
91
- // create the empty bundle
92
- bundleNftId = _bundleService.create(
93
- instance,
94
- poolNftId,
95
- bundleOwner,
96
- fee,
97
- AmountLib.zero(),
98
- lifetime,
99
- filter);
100
-
101
- emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
102
- }
103
-
104
-
105
82
  function closeBundle(NftId bundleNftId)
106
83
  external
107
84
  virtual
108
85
  {
109
86
  _checkNftType(bundleNftId, BUNDLE());
110
87
 
111
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
88
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
112
89
 
113
90
  // TODO get performance fee for pool (#477)
114
91
 
115
92
  // releasing collateral in bundle
116
93
  (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
117
94
 
118
- _componentService.decreasePoolBalance(
95
+ _accountingService.decreasePoolBalance(
119
96
  instance.getInstanceStore(),
120
97
  poolNftId,
121
98
  unstakedAmount + feeAmount,
@@ -126,7 +103,7 @@ contract PoolService is
126
103
  if ((unstakedAmount + feeAmount).gtz()){
127
104
  IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
128
105
  poolComponentInfo.tokenHandler.distributeTokens(
129
- poolComponentInfo.wallet,
106
+ poolComponentInfo.tokenHandler.getWallet(),
130
107
  getRegistry().ownerOf(bundleNftId),
131
108
  unstakedAmount + feeAmount);
132
109
  }
@@ -144,9 +121,9 @@ contract PoolService is
144
121
  {
145
122
  _checkNftType(policyNftId, POLICY());
146
123
 
147
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
124
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
148
125
  InstanceReader instanceReader = instance.getInstanceReader();
149
- NftId productNftId = _getProductNftId(poolNftId);
126
+ NftId productNftId = getRegistry().getObjectInfo(poolNftId).parentNftId;
150
127
 
151
128
  // check policy matches with calling pool
152
129
  IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
@@ -176,7 +153,7 @@ contract PoolService is
176
153
  {
177
154
  _checkNftType(bundleNftId, BUNDLE());
178
155
 
179
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
156
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
180
157
  InstanceReader instanceReader = instance.getInstanceReader();
181
158
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
182
159
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
@@ -198,7 +175,7 @@ contract PoolService is
198
175
 
199
176
  {
200
177
  NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
201
- Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
178
+ Fee memory stakingFee = instanceReader.getFeeInfo(productNftId).stakingFee;
202
179
  (
203
180
  feeAmount,
204
181
  netAmount
@@ -207,8 +184,8 @@ contract PoolService is
207
184
  amount);
208
185
  }
209
186
 
210
- // do all the bookkeeping
211
- _componentService.increasePoolBalance(
187
+ // do all the book keeping
188
+ _accountingService.increasePoolBalance(
212
189
  instance.getInstanceStore(),
213
190
  poolNftId,
214
191
  netAmount,
@@ -216,18 +193,22 @@ contract PoolService is
216
193
 
217
194
  _bundleService.stake(instance, bundleNftId, netAmount);
218
195
 
219
- // collect tokens from bundle owner
220
- address bundleOwner = registry.ownerOf(bundleNftId);
221
196
  emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
222
197
 
223
- // TODO only collect staking token when pool is not externally managed
224
- _collectStakingAmount(
225
- instanceReader,
226
- poolNftId,
227
- bundleOwner,
228
- amount);
198
+ // only collect staking amount when pool is not externally managed
199
+ if (!poolInfo.isExternallyManaged) {
200
+
201
+ // collect tokens from bundle owner
202
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
203
+ _collectStakingAmount(
204
+ instanceReader,
205
+ poolNftId,
206
+ bundleOwner,
207
+ amount);
208
+ }
229
209
  }
230
210
 
211
+
231
212
  /// @inheritdoc IPoolService
232
213
  function unstake(NftId bundleNftId, Amount amount)
233
214
  external
@@ -237,11 +218,11 @@ contract PoolService is
237
218
  {
238
219
  _checkNftType(bundleNftId, BUNDLE());
239
220
 
240
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
221
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
241
222
  InstanceReader instanceReader = instance.getInstanceReader();
242
223
  InstanceStore instanceStore = instance.getInstanceStore();
243
224
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
244
-
225
+
245
226
  if (bundleInfo.poolNftId != poolNftId) {
246
227
  revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
247
228
  }
@@ -253,50 +234,86 @@ contract PoolService is
253
234
  // if amount was max, this was set to the available amount
254
235
 
255
236
  // TODO: handle performance fees (issue #477)
237
+ netAmount = unstakedAmount;
256
238
 
257
239
  // update pool bookkeeping - performance fees stay in the pool, but as fees
258
- _componentService.decreasePoolBalance(
240
+ _accountingService.decreasePoolBalance(
259
241
  instanceStore,
260
242
  poolNftId,
261
243
  unstakedAmount,
262
244
  AmountLib.zero());
263
245
 
264
- IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
265
246
 
266
- // transfer amount to bundle owner
267
- address owner = getRegistry().ownerOf(bundleNftId);
268
- emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
269
- poolComponentInfo.tokenHandler.distributeTokens(
270
- poolComponentInfo.wallet,
271
- owner,
272
- unstakedAmount);
247
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount, netAmount);
273
248
 
274
- return unstakedAmount;
249
+ // only distribute staking amount when pool is not externally managed
250
+ if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
251
+
252
+ // transfer amount to bundle owner
253
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
254
+ _distributeUnstakingAmount(
255
+ instanceReader,
256
+ poolNftId,
257
+ bundleOwner,
258
+ netAmount);
259
+ }
275
260
  }
276
261
 
277
262
 
278
- function fundPoolWallet(NftId poolNftId, Amount amount)
263
+ function fundPoolWallet(Amount amount)
279
264
  external
280
265
  virtual
281
- restricted()
266
+ // restricted()
282
267
  {
283
- _checkNftType(poolNftId, POOL());
284
- // TODO check that poolNftId is externally managed
285
- // TODO implement
268
+ (
269
+ NftId poolNftId,
270
+ IInstance instance
271
+ ) = _getAndVerifyActivePool();
272
+
273
+ // check that pool is externally managed
274
+ InstanceReader reader = instance.getInstanceReader();
275
+ if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
276
+ revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
277
+ }
278
+
279
+ address poolOwner = getRegistry().ownerOf(poolNftId);
280
+ emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
281
+
282
+ _collectStakingAmount(
283
+ reader,
284
+ poolNftId,
285
+ poolOwner,
286
+ amount);
286
287
  }
287
288
 
288
289
 
289
- function defundPoolWallet(NftId poolNftId, Amount amount)
290
+ function defundPoolWallet(Amount amount)
290
291
  external
291
292
  virtual
292
- restricted()
293
+ // restricted()
293
294
  {
294
- _checkNftType(poolNftId, POOL());
295
+ (
296
+ NftId poolNftId,
297
+ IInstance instance
298
+ ) = _getAndVerifyActivePool();
299
+
300
+ // check that pool is externally managed
301
+ InstanceReader reader = instance.getInstanceReader();
302
+ if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
303
+ revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
304
+ }
305
+
306
+ address poolOwner = getRegistry().ownerOf(poolNftId);
307
+ emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
295
308
 
296
- // TODO check that poolNftId is externally managed
297
- // TODO implement
309
+ _distributeUnstakingAmount(
310
+ reader,
311
+ poolNftId,
312
+ poolOwner,
313
+ amount);
298
314
  }
299
315
 
316
+
300
317
  function processSale(
301
318
  NftId bundleNftId,
302
319
  IPolicy.PremiumInfo memory premium
@@ -308,24 +325,24 @@ contract PoolService is
308
325
  _checkNftType(bundleNftId, BUNDLE());
309
326
 
310
327
  IRegistry registry = getRegistry();
311
- IRegistry.ObjectInfo memory bundleInfo = registry.getObjectInfo(bundleNftId);
312
- IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(bundleInfo.parentNftId);
313
- IInstance instance = _getInstanceForComponent(registry, poolInfo);
328
+ NftId poolNftId = registry.getObjectInfo(bundleNftId).parentNftId;
329
+ (, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
330
+ IInstance instance = IInstance(instanceAddress);
314
331
 
315
332
  Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
316
333
  Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
317
334
  Amount bundleNetAmount = premium.netPremiumAmount;
318
335
 
319
336
  InstanceStore instanceStore = instance.getInstanceStore();
320
- _componentService.increasePoolBalance(
337
+ _accountingService.increasePoolBalance(
321
338
  instanceStore,
322
- poolInfo.nftId,
339
+ poolNftId,
323
340
  bundleNetAmount + bundleFeeAmount,
324
341
  poolFeeAmount);
325
342
 
326
- _componentService.increaseBundleBalance(
343
+ _accountingService.increaseBundleBalanceForPool(
327
344
  instanceStore,
328
- bundleInfo.nftId,
345
+ bundleNftId,
329
346
  bundleNetAmount,
330
347
  bundleFeeAmount);
331
348
  }
@@ -351,9 +368,13 @@ contract PoolService is
351
368
  _checkNftType(applicationNftId, POLICY());
352
369
  _checkNftType(bundleNftId, BUNDLE());
353
370
 
371
+ NftId poolNftId;
372
+ bool poolIsVerifyingApplications;
354
373
  (
374
+ poolNftId,
355
375
  totalCollateralAmount,
356
- localCollateralAmount
376
+ localCollateralAmount,
377
+ poolIsVerifyingApplications
357
378
  ) = calculateRequiredCollateral(
358
379
  instance.getInstanceReader(),
359
380
  productNftId,
@@ -371,6 +392,21 @@ contract PoolService is
371
392
  instance.getNftId(),
372
393
  token,
373
394
  totalCollateralAmount);
395
+
396
+ // pool callback when required
397
+ if (poolIsVerifyingApplications) {
398
+ IPoolComponent pool = IPoolComponent(
399
+ getRegistry().getObjectAddress(poolNftId));
400
+
401
+ pool.verifyApplication(
402
+ applicationNftId,
403
+ bundleNftId,
404
+ totalCollateralAmount);
405
+
406
+ // TODO add logging
407
+ }
408
+
409
+ // TODO add logging
374
410
  }
375
411
 
376
412
  function processPayout(
@@ -390,13 +426,13 @@ contract PoolService is
390
426
  NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
391
427
  InstanceStore instanceStore = instance.getInstanceStore();
392
428
 
393
- _componentService.decreasePoolBalance(
429
+ _accountingService.decreasePoolBalance(
394
430
  instanceStore,
395
431
  poolNftId,
396
432
  payoutAmount,
397
433
  AmountLib.zero());
398
434
 
399
- _componentService.decreaseBundleBalance(
435
+ _accountingService.decreaseBundleBalanceForPool(
400
436
  instanceStore,
401
437
  bundleNftId,
402
438
  payoutAmount,
@@ -438,10 +474,6 @@ contract PoolService is
438
474
  policyInfo.bundleNftId,
439
475
  remainingCollateralAmount);
440
476
 
441
- _bundleService.unlinkPolicy(
442
- instance,
443
- policyNftId);
444
-
445
477
  // update value locked with staking service
446
478
  _staking.decreaseTotalValueLocked(
447
479
  instance.getNftId(),
@@ -458,14 +490,17 @@ contract PoolService is
458
490
  public
459
491
  view
460
492
  returns(
493
+ NftId poolNftId,
461
494
  Amount totalCollateralAmount,
462
- Amount localCollateralAmount
495
+ Amount localCollateralAmount,
496
+ bool poolIsVerifyingApplications
463
497
  )
464
498
  {
465
499
  _checkNftType(productNftId, PRODUCT());
466
500
 
467
- NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
501
+ poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
468
502
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
503
+ poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
469
504
 
470
505
  (
471
506
  totalCollateralAmount,
@@ -519,25 +554,61 @@ contract PoolService is
519
554
  }
520
555
 
521
556
 
522
- /// @dev transfers the specified amount from the bundle owner to the pool's wallet
557
+ /// @dev transfers the specified amount from the "from account" to the pool's wallet
523
558
  function _collectStakingAmount(
524
- InstanceReader instanceReader,
559
+ InstanceReader reader,
525
560
  NftId poolNftId,
526
- address bundleOwner,
561
+ address from,
527
562
  Amount amount
528
563
  )
529
564
  internal
530
565
  {
566
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
567
+ info.tokenHandler.collectTokens(
568
+ from,
569
+ amount);
570
+ }
531
571
 
532
- // collecting investor token
533
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
534
- address poolWallet = componentInfo.wallet;
535
- componentInfo.tokenHandler.collectTokens(
536
- bundleOwner,
537
- poolWallet,
572
+ /// @dev distributes the specified amount from the pool's wallet to the "to account"
573
+ function _distributeUnstakingAmount(
574
+ InstanceReader reader,
575
+ NftId poolNftId,
576
+ address to,
577
+ Amount amount
578
+ )
579
+ internal
580
+ {
581
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
582
+ info.tokenHandler.distributeTokens(
583
+ info.tokenHandler.getWallet(),
584
+ to,
538
585
  amount);
539
586
  }
540
587
 
588
+
589
+ function _getAndVerifyActivePool()
590
+ internal
591
+ virtual
592
+ view
593
+ returns (
594
+ NftId poolNftId,
595
+ IInstance instance
596
+ )
597
+ {
598
+ (
599
+ IRegistry.ObjectInfo memory info,
600
+ address instanceAddress
601
+ ) = ContractLib.getAndVerifyComponent(
602
+ getRegistry(),
603
+ msg.sender,
604
+ POOL(),
605
+ true); // only active pools
606
+
607
+ poolNftId = info.nftId;
608
+ instance = IInstance(instanceAddress);
609
+ }
610
+
611
+
541
612
  function _getDomain() internal pure override returns(ObjectType) {
542
613
  return POOL();
543
614
  }
@@ -17,7 +17,7 @@ contract PoolServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  PoolService poolSrv = new PoolService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(poolSrv),
@@ -41,11 +41,11 @@ contract ApplicationService is
41
41
  initializer()
42
42
  {
43
43
  (
44
- address registryAddress,
45
- address authority
44
+ address authority,
45
+ address registry
46
46
  ) = abi.decode(data, (address, address));
47
47
 
48
- _initializeService(registryAddress, authority, owner);
48
+ __Service_init(authority, registry, owner);
49
49
 
50
50
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
51
51
  _pricingService = IPricingService(_getServiceAddress(PRICE()));
@@ -55,10 +55,10 @@ contract ApplicationService is
55
55
  }
56
56
 
57
57
 
58
- function _checkLinkedpplicationParameters(
58
+ function _checkLinkedApplicationParameters(
59
59
  InstanceReader instanceReader,
60
60
  NftId productNftId,
61
- RiskId rirskId,
61
+ RiskId riskId,
62
62
  ReferralId referralId,
63
63
  NftId bundleNftId
64
64
  )
@@ -66,18 +66,18 @@ contract ApplicationService is
66
66
  virtual
67
67
  view
68
68
  {
69
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
69
+ // check risk with product
70
+ (bool exists, bool active) = instanceReader.getRiskSet().checkRisk(productNftId, riskId);
71
+ if (!exists) { revert ErrorApplicationServiceRiskUnknown(riskId, productNftId); }
72
+ if (!active) { revert ErrorApplicationServiceRiskPaused(riskId, productNftId); }
70
73
 
71
- // TODO check riskId with product
74
+ // check bundle with pool
75
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
76
+ (exists, active) = instanceReader.getBundleSet().checkBundle(poolNftId, bundleNftId);
77
+ if (!exists) { revert ErrorApplicationServiceBundleUnknown(bundleNftId, poolNftId); }
78
+ if (!active) { revert ErrorApplicationServiceBundleLocked(bundleNftId, poolNftId); }
72
79
 
73
80
  // TODO check referral with distribution
74
-
75
- // check bundle with pool
76
- NftId productPoolNftId = productInfo.poolNftId;
77
- NftId bundlePoolNftId = instanceReader.getBundleInfo(bundleNftId).poolNftId;
78
- if(bundlePoolNftId != productPoolNftId) {
79
- revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, productPoolNftId, bundlePoolNftId);
80
- }
81
81
  }
82
82
 
83
83
 
@@ -143,7 +143,7 @@ contract ApplicationService is
143
143
 
144
144
  // check if provided references are valid and linked to calling product contract
145
145
  InstanceReader instanceReader = instance.getInstanceReader();
146
- _checkLinkedpplicationParameters(
146
+ _checkLinkedApplicationParameters(
147
147
  instanceReader,
148
148
  productNftId,
149
149
  riskId,
@@ -17,7 +17,7 @@ contract ApplicationServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  ApplicationService svc = new ApplicationService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Fee} from "../type/Fee.sol";
5
5
  import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
6
7
  import {NftId} from "../type/NftId.sol";
7
8
  import {Product} from "../product/Product.sol";
8
9
 
@@ -25,13 +26,12 @@ abstract contract BasicProduct is
25
26
  function _initializeBasicProduct(
26
27
  address registry,
27
28
  NftId instanceNftId,
28
- IAuthorization authorization,
29
- address initialOwner,
30
29
  string memory name,
31
30
  address token,
32
- bool isInterceptor,
33
- bool hasDistribution,
34
- uint8 numberOfOracles
31
+ IComponents.ProductInfo memory productInfo,
32
+ IComponents.FeeInfo memory feeInfo,
33
+ IAuthorization authorization,
34
+ address initialOwner
35
35
  )
36
36
  internal
37
37
  virtual
@@ -40,14 +40,12 @@ abstract contract BasicProduct is
40
40
  _initializeProduct(
41
41
  registry,
42
42
  instanceNftId,
43
- authorization,
44
- initialOwner,
45
43
  name,
46
44
  token,
47
- isInterceptor,
48
- false, // is processing funded claims
49
- hasDistribution,
50
- numberOfOracles,
45
+ productInfo,
46
+ feeInfo,
47
+ authorization,
48
+ initialOwner,
51
49
  ""); // component data
52
50
  }
53
51
  }
@@ -6,8 +6,7 @@ import {BasicProduct} from "./BasicProduct.sol";
6
6
  import {PRODUCT} from "../type/ObjectType.sol";
7
7
  import {IAccess} from "../authorization/IAccess.sol";
8
8
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
9
- import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
10
- import {RoleId} from "../type/RoleId.sol";
9
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
11
10
 
12
11
 
13
12
  contract BasicProductAuthorization