@etherisc/gif-next 0.0.2-de7c770-422 → 0.0.2-de9ede4-391

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