@etherisc/gif-next 0.0.2-f11de3a-698 → 0.0.2-f12cf4d-104

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